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

[经验分享] SQL Server 数据库设计

[复制链接]

尚未签到

发表于 2015-6-27 15:14:57 | 显示全部楼层 |阅读模式
  一、数据库设计的必要性
  在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置。如果不经过数据库的设计,我们构建的数据库不合理、不恰当,那么数据库的维护、运行效率会有很大的问题。这将直接影响到项目的运行性和可靠性。
  二、什么是数据库设计
  数据库设计实际上就是规划和结构化数据库中的数据对象以及这些数据对象之间的关系过程。
  三、数据库设计的重要性
  Ø 不经过设计的数据库或是设计糟糕的数据库很可能导致
  1、 数据库运行效率地下
  2、 更新、删除、添加数据出现问题
  Ø 良好设计的数据库
  1、 执行效率高
  2、 使应用程序更便于开发
  3、 扩展性好
  4、 维护性好
  四、数据模型
  数据模型就像是数据间联系的一个轮廓图,整个模型就像一个框架。
  如果按照记录间联系的表示方式,对数据模型进行分类,可以分为:层次模型、网状模型、关系模型。前两种又称为格式化数据模型。数据模型的好坏直接影响到数据库的性能,所以数据模型的选择是数据库设计的首要任务。
  Ø 实体-关系(E-R)数据模型
  E-R数据模型(Entity-Relationship data model),即实体-关系数据模型。E-R数据模型不同于传统的关系数据模型,它不是面向实现,而是面向现实物体的。
  Ø 实体(Entity)
  数据是用来描述现实中的物体的,而描述的对象都是形形色色的,有具体的、也有抽象的;有物理上存在的、也有概念性的。凡是可以互相区别而且可以被人们认识的事、物、概念等统统抽象为实体。多个相同的类型的实体可以称为实体集(Entity set)。因此,在E-R数据模型中,也有型与值之分;实体可以作为型来定义,每个实体可以是它的实例和值。
  Ø 属性(Attribute)
  实体一般具体若干特征,这些特征称为实体的属性。而每个属性都有自己的取值范围,在E-R数据模型中称为值集(value set)。在同一实体集中,每个实体的属性及其值集都是相同的,但可能取不同的值。属性对应数据库表的列。
  Ø 关系(Relationship)
  实体之间会有各种关系,这些关系抽象为联系。不但实体可以有属性,关系也可以有属性。
  五、数据库设计步骤
  Ø 数据库设计可以分为以下几个阶段
  1、 需求分析阶段:分析客户的业务需求,特别是数据方面的需求
  2、 概要设计阶段:绘制数据库的E-R图,并确认需求文档的正确性和完整性,E-R图是项目的设计人员、开发人员、测试人员,以及和客户进行沟通的重要凭据
  3、 详细设计阶段:将概要设计阶段的E-R图转换为数据库表,进行逻辑设计,确定各个表之间的主外键关系,运用数据库的三范式进行审核,并进行技术评审。最后决定选哪种数据库(Oracle、SQLServer、MySQL)来建库、建表。
  Ø 需求分析阶段:数据库系统分析
  秀气分析阶段的重点是调查、收集、分析客户的业务数据需求以及数据的安全性、完整性需求等。
  需求分析步骤:
  1、 确认业务需求
  2、 标识关系实体
  3、 标识每个实体的具有的属性
  4、 确认实体之间的关系
  Ø 概要设计阶段:绘制E-R图
  作为数据库设计者,你需要和项目组内其他成员分享你的设计思路,共同研讨数据库设计的合理性、安全性、完整性,并确认是否符合客户的业务需求。那么使用E-R图,这种图形化的表示方式最为直观。
  * E-R图中的实体、属性和关系
DSC0000.png
  上面的简单E-R图可以看出用户和收支之间的关系。在上图中可以看出:用矩形表示实体,实体是一般名词;椭圆表示属性,一般也是名词;菱形表示关系,一般是动词。
  * 映射基数
  映射基数表示可以通过关系与该实体的个数。对于实体集A和B之间的二元关系,可能的映射基数有:
  1、 一对一:也就是A实体中最多只有一个B实体的关联,而B实体的最多只有一个A实体的关联。用E-R图表示:
DSC0001.png
  2、 一对多:A实体可以与B实体任意数量的进行关联,B中的实体最多与A中的一个实体关联。E-R图表示:
DSC0002.png
  3、 多对一:A实体最多与一个B实体进行关联,而B实体可以和任意多个A实体进行关联。E-R图表示:
DSC0003.png
  4、 多对多:A实体可以有多个B实体,而B实体也可以有任意多个A实体。E-R图表示:

  * E-R图
  E-R图可以以图形化的方式将数据库的整个逻辑结构表示出来,组成部分有:
  1、 矩形表示实体集
  2、 椭圆表示属性
  3、 菱形表示关系、
  4、 直线用来连接实体集与属性、实体集和关系
  5、 直线箭头表示实体集之间映射基数
  Ø 详细设计阶段:将E-R图转换为表
  步骤如下:
  1、 将各个实体转换为对应的表,将各属性转换为对应的列
  2、 标识每张表的主键
  3、 将实体之间的关系转换为表与表之间的主外键关系
  六、数据库设计规范化
  Ø 数据库设计中经常出现的问题
  1、 数据冗余大
  2、 插入数据异常
  3、 删除异常
  4、 更新异常
  Ø 规范设计
  一个较好的关系数据库模型,它的每个关系中的属性一定要满足某种内在的语义条件,即要按一定的规范设计关系模型,这就是设计的规范化。
  在数据库设计时,有一些专门的规则,称为数据库的设计范式,遵循这些规则,就可以创建出良好的数据库,数据库著名的三大范式理论:
  1、 第一范式(1NF)
  第一范式是满足关系数据库模型所要遵循的最基本的条件范式,几关系中的每个属性必须是不可再分的简单项,不能是属性组合,即属性的取值是不可拆分的原子值。
  2、 第二范式(2NF)
  第二范式是在第一范式的基础上,确保表中的每列都和主键相关。其定义是如果一个关系满足1NF,并且除了主键关系外的其他列都依赖于该主键,则满足第二范式。
  3、 第三范式(3NF)
  第三范式是在第二范式的基础上进行的,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关的。其定义是:如果一个关系满足2NF,并且除主键外的其他列都不传递依赖于该主键。
  Ø 规范化和性能关系
  为了满足三大范式,数据库的性能可能会有一定程度的降低。所以,在实际数据库设计中,我们既要尽量满足三大范式,从而避免数据冗余和各种数据库的操作异常,同时也要考虑数据的访问性能。有时候,为了提高数据库的访问效率,适当的允许少量数据冗余咧存在,才是最适合的数据库设计方案。

运维网声明 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-80977-1-1.html 上篇帖子: SQL Server 2012中快速插入批量数据的示例及疑惑 下篇帖子: sql server复灾 你懂了吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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