由4.1节可知,数据库设计分为概念设计、逻辑设计和物理设计3个阶段,
设计人员在各个阶段分别进行概念数据模型设计、逻辑数据模型设计和物理数据模型设计。
采用E-R模型描述系统的数据对象组成结构
【例】针对一个图书销售管理系统数据需求,我们可以抽取出“图书”“商店”“销售”“折扣”“作者”“出版社”实体
【例】分析各种实体之间的联系,给出该联系的名称
给出属性名称、给出标识符、取值约束等说明;
【可选项:定义属性值域,以限定属性的取值范围、属性是否允许 空值、属性的默认值、属性值检查规则等。】
一个较大规模系统或复杂系统的概念数据模型设计不可能一步完成,需要不断完善
【例】对图书销售管理系统E-R模型,我们增加“库存”实体,并与“图书”“商店”实体建立联系。又增加“图书类别”实体,并将它与“图书”实体建立联系。
是概念数据模型在系统设计角度的延伸,它使系统的E-R模型图体现数据库模型的针对性【规范化】
逻辑数据模型与概念数据模型的主要区别如下。
(1)逻辑数据模型比概念数据模型对信息系统数据结构的描述更具体,不但有业务实体,也有新增的、便于信息 化处理的数据实体。
(2)逻辑数据模型将概念数据模型的多对多实体联系转化为易于关系数据库实现的一对多实体联系。
(3)逻辑数据模型将概念数据模型中的标识符依赖实体进一步细化,并区分主键标识符和外键标识符,以便于数 据模型规范化处理。
【例】图书销售管理系统概念数据模型转换为逻辑数据模型
使达到3NF范式,即实体中非键属性仅依赖于主键属性。
【例】通过分析图4-21所示的图书销售管理系统逻辑数据模型
完善设计
不再使用E-R图来描述数据模型结构,而需要考虑将实体如何转换为数据库表
(1)将E-R模型图中每一个实体对应转换成一个关系表,实体属性转换为对应表的列,实体标识符转换为对应表 的主键。
(2)将实体联系转换为关系表之间的主、外键关系,并定义表之间的参照完整性约束。
(3)完善系统的关系模型图,并在模型中扩展定义视图、索引、存储过程及触发器等数据库对象。
首先为每个实体定义一个关系表,其表名与实体名相同;
【例】
前面描述的实体转换为关系表的方式适用于E-R模型的所有实体类型,但弱实体转换关系表还需要特别的处理。
【例:非标识符依赖的转换】图中的“销售订单”实体在逻辑上依赖于“销售员”实体。它们之间的实体联系为一对多。
“销售订单”实体是非标识符依赖弱实体,因为它有自己独立的标识符“订单编号”。
【例:标识符依赖的转换】标识符依赖的强实体标识符不但在“订单明细”关系表中作为主键,同时也作为外键,并与订单明细实体的标识符“订单明细编号”共同构成复合主键
实体分别转换为关系表,将其中一个表的主键放入另一个表中作为外键。
【例4-11】在图4-28所示的E-R模型中,“学生”实体与“助研金发放账号”实体存在1:1实体联系。
实体分别转换为关系表,并将1端关系表的主键放入N端关系表中作为外键。
【例】在图4-30所示的E-R模型中,“班级”实体与“学生”实体存在1:N实体联系。
M:N实体联系不能像表示1:1和1:N实体联系那样直接转换关系表。
除了关联的实体均转换为对应的关系表外,我们还增加一个关系表,作为关联表与实体的关系表建立参照约束。
将任意一个实体关系表的主键放置到另一个实体 关系表中作为外键,均是不正确的。
【例4-13】“课程”实体与“学生”实体存在M:N联系。
增加一个关联表,并命名为联系名
新增的关联表共有两个列,分别来自“学生”表的主键和“课程”表的主键。这两个列构成关联表的复合主键, 同时它们也是外键。
在使用关联表时,我们还必须对该表的属性列进行完善,不能只有已知的两个主键对吧,如增加“成绩”列。
实体继承联系用来描述实体之间的相似性关系。
当E-R模型转换到关系模型时,父表属性应放到子表中作为外键。
【例】在图4-34所示的E-R模型中,“本科生”“研究生”实体与“学生”实体存在分类继承联系。
方法1:
方法2:
递归联系是同一类实体之间所发生的联系。
在表中加入另一个外键属性参照本表主键属性。
当将M:N的实体递归联系转换为关系模型时,我们需要增加关联表来参照约束原实体关系表。
情况1:N
【例】在图4-37所示的E-R模型中,“顾客”实体为递归实体,该递归实体之间为1:N实体联系。
情况M:N
【例】在图4-39所示的E-R模型中,“医生”实体为递归实体,该递归实体之间为M:N实体联系。