您的位置:首页 > 数据库

Sql Server游标和数据库设计

2006-10-07 22:27 686 查看
游标:
在java里面返回的ResultSet是一个游标,next()方法实质上是用java循环访问结果集。不能叫悲观锁定。游标实质上可以理解成一种资源。
1.游标分类:
fetch first:提取游标第一行
fetch next:提取游标下一行
fetch prior:提取上次提取行之前的行
fetch last:提取游标最后一行
fetch absolute n:如果n为正整数,则提取游标中从第一行开始到第n行,如果为负整数则提取倒数第n行,为0则不提取任何行。
fetch relative n:如果n为正整数,则提取上次所提取行之后的第n行,为负整数则提取上次所提取行之前的第n行,为0则同一行被提取

2.使用游标的步骤:
1).定义:declare 游标名 cursor for select语法 for()
2).打开游标:open 游标名
3).提取、滚动游标:
fetch first from 游标名
while @@fetch_status=0
begin
操作语句
end
4).关闭游标:close 游标名
5).如果不需要则释放资源:deallocate 游标名

使用游标分页,这里暂时还没实现,下面给出实现的思路:
思路:定义游标,循环使用fetch语句跳过n行。此方法效率不是最好。如果在Oracle数据库里面效率会高些。

数据库设计:
1. 常见的数据库设计错误:
1).数据冗余,依赖(比如姓名依赖于ID),用户不能接受的冗余必须改正。
2).更新异常
3).插入异常
4).删除异常

2. 数据库的分析设计:
1).收集信息
2).抽象出概念,也即实体对象,一般都是名词。每个对象的详细信息转换为属性,一般也为名次。
3).标识对象之间的关系,即映射基数(一对多和多对多)。

3. 数据库设计基本原则:
1).正确反映数据与数据之间的层析逻辑关系。
2).对进入数据库表中的数据有一个有效性检查。
3).对数据库中数据进行非逻辑操作进行相应的错误处理
4).满足系统对性能上的要求

4. 数据库设计三大范式,即数据库设计的规范做法,类似于设计模式(一些面向对象的设计方法和经验)。
第一范式:数据表中的字段都是单一属性,不可再分(但也并非绝对)。比如有一个叫联系方式的字段,它还可以分为传真、电话、 手机,所以不满足第一范式。缺点:对此字段的某一个具体属性(例如手机)进行操作非常麻烦。解决方法:拆分列
第二范式:数据表中的一些非主键字段必须依赖于主键字段,但不是部分依赖于主键字段。解决方法:拆分表。
第三范式:数据库中的一些非主键字段不能依赖于其他非主键字段,也不能传递依赖于主键字段。解决方法:拆分表。

5. 数据库设计基本方法:实体关系模型(E-R建模)
将实体转换成表,属性转换成字段(列),标识每个表的主键列,与各种约束(外键等)。

6. 数据库分析阶段是和数据库语言平台无关的,在设计阶段才和具体语言平台有关。逻辑模型:与数据库平台无关,物理模型:与数据库平台有关



7. 一些设计的小经验:
1) 当两张表有多对多关系时,必须要拿出第三张表出来以这两个表的主键为组合主键,或者在第三张表中建一个主键,以另两张表的 主键为普通键,但应该在这两个键上建一个唯一索引。
2)垂直分区:我们以一个小例子来说明这个概念,假如有一张人才网用户的个人简历表,里面有用户名、密码和大量的简历信息,因 为在用户登录时,用户名和密码用的特别频繁,所以我们可以把此两个字段抽出来单独建一张表,其他的字段作为一张表,把用户名 作为此表的主键,和前面的表形成一对一的关系。这就是所谓的垂直分区。
3)在实际应用中也并一定要严格按照三大范式来规范数据库设计,必须根据客户的要求和实际的需要以及系统的性能问题等各方面来 考虑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: