设为首页 收藏本站
查看: 684|回复: 0

[经验分享] Sql Server游标和数据库设计

[复制链接]

尚未签到

发表于 2016-11-2 07:31:04 | 显示全部楼层 |阅读模式
  游标:
在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)在实际应用中也并一定要严格按照三大范式来规范数据库设计,必须根据客户的要求和实际的需要以及系统的性能问题等各方面来 考虑。 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-294446-1-1.html 上篇帖子: 修改表结构(sql server) 下篇帖子: 写个sql server 2005的函数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表