数据库设计规范

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库设计规范

1.简介

数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求。数据库设计过程中命名规范很是重要,命名规范合理的设计能够省去开发人员很多时间去区别数据库实体。

最近也因为工作需要所以整理出了这个word文档,望大家指正。

2数据库设计

数据库规划→需求分析→数据库设计→应用程序设计→实现→测试→运行于维护

2.1数据库规划

定义数据库应用系统的主要目标,定义系统特定任务,包括工作量的估计、使用资源、和需求经费,定义系统的范围以及边界。

2.2需求分析

2.1.1需求分析步骤与成果

涉及人员:用户和分析人员

任务:对现实世界要处理的对象进行详细的调查,收集基础数据及处理方法,在用户调查的基础上通过分析,逐步明确用户对系统的需求,包括信息的要求及处理的要求。

方法与步骤:1.通过与用户的调查,对用户的信息需求进行收集。

2.在收集数据的同时,设计人员要对其进行加工和整理,以数据字典和数据流图的形式描述出来,并以设计人员的角度向用户讲述信息,根据用户的反馈加以修改并确定(该过程是反复的过程)

成果:数据流图,数据字典,各种说明性表格,统计输出表以及系统功能结构图。

2.1.2数据流图基本元素与数据流图

外部实体:存在于软件系统之外的人员或组织(正方形或立方体表示)。

加工:数据处理,表示输入数据在此进行变换,产生输出数据(圆角巨型或圆形表示)。数据流:表示流动着的数据(箭头线表示)。

数据存储:用来表示要存储的数据(开门矩形或两条平行横线表示)。

订单处理系统顶层流程图:

0层数据流图:

2.3数据库设计

2.3.1概念结构设计

∙对事务加以抽象以E-R图的形式描述出来

∙E-R图(实体联系图):包括实体,联系,属性

实体:现实中的事物例如,学生,老师

联系:两个实体之间的关系,1:1、1:N、M:N三种关系属性:实体所具有的属性,例如学生的学号、姓名、性别等

例如:一个学生属于一个班级,一个班级拥有多名学生,E-R图如下

网上购物系统E-R图,该系统数据之间存在下列约束

1.一个客户(编号唯一)可以拥有多个订单,每个订单仅属于一个客户。

2.一个订单(编号唯一)可以包含多个订购细目,每个订购细目只属于一个订单。

3.一个商品可以出现多个订购细目中,一个订购细目只包含多个商品。

4.一个商品类别可以包含多种商品,一种商品只属于一个商品类别。

图2.2

2.3.2逻辑结构设计

2.3.2.1E-R图转换成关系模式

∙将E-R图转换成关系模式

将每个实体转换成一个关系模式,实体的属性即关系模式的属性,实体的标识即关系模式的键。

∙根据规则合并E-R图中的1:1,1:N,M:N之间的联系

1.若实体的联系是(1:1),则可以将两个实体转换成两个关系模式,任意一个关系模

式的属性中加入另一个关系模式的主键(作为外键)和联系自身的属性

2.若实体间的联系是一对多(1:n),则将n端的实体类型转换成关系模式中加入1

端实体类型的主键(作为外键)和联系类型的属性。

3.若实体间的联系是多对多(m:n),则将联系类型也转换成关系模式,其属性为2

实体类型的主键(作为外键)加上联系类型自身的属性,而该关系模式的主键为2

端实体主键的组合。

4.若关系模式是1:1:1的关系,转换原则同1:1

5.若关系模式是1:1:n的联系,转换原则同1:n

6.若关系模式是1:n:m的联系,则可以将联系类型也转换成关系模式,其属性为

m端和n端实体类型的主键(作为外键)加上联系类型自身的属性,而关系模式的主键为n和m端实体主键的组合

7.若关系模式是n:m:p的联系,转换规则同m:n

根据E-R图实体之间的联系可以转换成以下关系模式:

客户(客户编号,姓名,电话,E-mail)。关系的主键:客户编号;外键:无

订单(订单编号,订购时间,客户编号)。关系的主键:订单编号;外键:客户编号

订购细目(订购明细编号,订购数量,支付金额,订单编号)。关系主键:订购明细编号;外键:订单编号。

出现(订购明细编号,商品编号,类型)。关系的主键:订购明细编号,商品编号;外键:订购明细编号,商品编号。

商品:(商品编号,商品名称,单价,生产日期,商品类别号,商品类别名)。关系的主键:商品编号;外键:无

在关系模式设计中可能会出现以下几个问题:数据冗余、数据修改不一致、数据插入异常、数据删除异常,所以提出范式的要求,目的就是最低限度地冗余,避免插入、删除、修改异常。

2.3.2.2范式

主属性:包含键的所有属性。

关系模式要求达到4NF (减少冗余,消除操作异常)

第一范式(1NF):若关系模式R的每一个分量是不可分的数据项,则关系模式属于第一范式。即每个属性都是不可拆分的.

第二范式(2NF):R属于1NF,且每一个非主属性完全依赖于键(没有部分依赖),则R 属于2NF

例如:选课关系(学号,课程号,成绩,学分)

该关系的主键是(学号,课程号),但是课程号→学分,所以学分属性部分依赖于主键,即关系部满足第二范式,可以拆分为(学号,课程号,成绩),(课程号,学分)两个关系

第三范式(3NF):R属于2NF,且每个非主属性即不部分依赖于码,也不传递依赖于码

例如:学生关系(学号,姓名,所属系,系地址)

该关系的主键是:学号

学号→所属系,所属系→学号,所属系→系地址;根据函数的依赖公理,系地址传递函数依赖于学号,即关系不满足第三范式,可以拆分关系为(学号,姓名,所属系),(所属系,系地址)

如果不拆分会存在数据修改异常,比如该学生的换了系,修改了所属系,但是系地址没有修改,这样就造成了修改异常

BCNF:R属于3NF,且不存在主属性对码的部分和传递函数依赖

例如:关系R(零件号,零件名,厂商名),如果设定每种零件号只有一个零件名,但不同的的零件号可以有相同的零件名,每种零件可以有多个厂商生产,但每家厂商生产的零件应有不同的零件名。这样可以得到:

零件号→零件名,(厂商名,零件名)→零件号

所以主属性包括(零件号,厂商名,零件名),但是“零件名”传递依赖于码“厂商名,零件名”,所以关系R不满足BCNF,当一个零件由多个生产厂商生产时,由于零件号只有一个而零件名根据厂商不同而又多个,零件名与零件号之间的联系将多次重复,带来数据冗余和操作异常现象

可以将关系分解为(零件号,厂商名),(零件号,零件名)

4NF:关系模式R属于1NF,若对于R的每个非平凡多值依赖X→→Y且Y不包含于X 时,X必含码,则R属于4NF

5NF:对关系进行投影,消除关系中不是由候选码所蕴含的连接依赖

对于上面的商品关系,由于关系的主键是商品编号,而商品类别号→商品类别名

所以商品关系部满足第三范式,非主属性商品类别名传递依赖于商品编号,会存在数据冗余,数据修改异常问题。将商品关系分解为:

商品(商品编号,商品名称,单价,生产日期,商品类别号)

商品类别(商品类别号,商品类别名)

2.3.3物理结构设计

为一个给定的逻辑数据模型设计一个最合适应用要求的物理结构的过程

∙数据库的建立

∙数据表的建立

∙索引的建立

∙视图的建立

∙触发器的建立

相关文档
最新文档