第六章:使用E-R模型的数据库设计
1.数据库设计的特点:
①工程性
②有基本的对错问题
③不能简单以对/错论述问题
-不同的工程方法都可以达到工程目的
-“对/错”的概念被弱化
④强调优/劣、好/坏
-“好/优”的工程可以以较小代价,获得较好/高的成果
-反之则不然
⑤强调多数人的看法和评价
-依靠评审对数据库设计进行评价
2.E-R图的作用和地位:
3.基本E-R图示例:
4.基本概念——实体:
实体(Entity)
-客观存在并可相互区分的事物叫实体(唯一标识)
实体集(Entity Set)
-是具有相同类型及即具有相同性质(属性)的实体集合
-组成实体集的各实体称为实体集的外延(Extension)
-实体集可相交
属性(Attribute)
-定义:实体集中每个成员具有的描述性性质
-一个实体可以由若干个属性来刻画和描述
-例如,学生可由学号、姓名、年龄、性别等属性描述
域(Domain/Value Set)
-属性的取值范围
-例如,性别的域为(‘0’、‘1’),月份的域为1到12的整数
5.属性的类型:
派生(Derived)属性与基(Base)属性
-可以从其他相关的属性或实体派生出来的属性值
-如教师(编号,姓名,出生日期,年龄),其中年龄即为派生属性
-数据库中,一般只存基属性值,而派生属性只存其定义或依赖关系,用到时再从基属性中计算出来。但是不排除基属性和派生属性均保存在数据库中的现象
6.基本概念——码:
7.基本概念——联系:
8.基本概念——参与:
参与(Participation)
-实体集之间的关联称为参与,即实体参与联系
-如“王军”选修“数据库系统”,表示实体“王军”与 实体“数据库系统”参与了联系“选修”
-如果实体集E中的每个实体都参与到联系集R中的至少一个联系,则称E全部参与R
-如果实体集E中只有部分实体参与到联系集R的联系中,则称E部分参与R
-如课程和院系之间的“建设”联系,每门课都由一个学院负责建设,课程全部参与“建设”联系;但是有些学院可以不负责建设课程,学院部分参与“建设”联系。
9.基本概念——角色:
角色(Role)
-实体在联系中的作用称为实体的角色
-由于参与一个联系的实体集通常是互异的,角色是隐含的一般不需要指定
-当同一个实体集不止一次参与一个联系集时,为区别各实体的参与联系的方式,需要显式指明其角色
-如学生与学生间的“班长”关系,职工与职工之间的“管理”关系,课程之间的“先行”关系
10.映射基数:
映射的基数(Mapping Cardinalities)
-实体之间的联系的数量,即一个实体通过一个联系集能与另一实体集相关联的实体的数目
-可以有一对一的(1:1),一对多的(1:m),多对多的(m:n)几种情况
-用箭头或线段来表示联系的映射基数,除了课本的表示方法以外,还有其他的表示方法
11.二元联系集的映射基数(重要):
12.一个实体集内的二元联系
13.多个实体集间联系的情况:
14.基数约束:
15.弱实体集(有点懵):
弱实体定义
-一个实体的所有属性合在一起都不足以形成主码,则称这样的实体为弱实体;同一类型的弱实体形成弱实体集
-反之称为强实体
-弱实体需要依赖属主实体而存在,不能独立存在
弱实体提出的背景
-存在一些需求场景,需要研究:
-一个实体的属性与其它实体之间的关系
-或者属性之间相互的关联关系
-E-R图中联系是实体与实体之间的联系
-在研究属性参与的联系时,需要进行属性实体化
-某些属性实体化之后,实体可以独立标识,如电话;
-某些属性实体化之后,实体自身无标识属性,如账户交易;
-属性实体化后,不能独立标识,形成弱实体
(个人理解:转账 如果没有账户 就不存在“转账”这种说法,所以“转账”依赖于“账户”这个实体集)
双菱形——弱实体关系
通过为弱实体集加上合适的属性,可转变为强实体集,为什么还要使用弱实体集?
弱实体集的引入
-作为层次结构的一部分
-实体集的一些多值、复合属性可以抽取出来作为弱实体集
如果弱实体集不但参与和强实体集之间的标识性联系,而且参与和其它实体集的联系,或者弱实体集本身含有很多属性,则将其表述为弱实体集
-如果弱实体集只参与和强实体集之间的标识性联系,或者弱实体集本身属性不多,则将其表述为属性
16.根据E-R图建立数据库模式的步骤(重要)
如果实体集的主码重名,怎么办?
如果在不同的实体集中出现了主码属性名称不唯一的情况,应该以实体的名字加上属性的名字形成唯一的属性名;如果一个实体集不止一次地参加了某个联系集,则角色名可代替实体集的名字形成唯一的属性名。
17.E-R模型向关系模式的转换(疑惑)
二元一对一联系
-联系转化的表可以与任一端实体转化成的表进行合并
-二元一对一联系不能导致相关实体转化成的表合并
二元多对一联系
联系转化的表可以和“多端” 实体转化成的表进行合并
二元多对多联系
将联系定义为新的关系,属性为参与双方的主码和联系的描述性属性,不能进行合并
多元联系
联系转化的表和实体转化的表不能进行合并
即便是m:n:1,其转化的表和也不能进行合并
18.E-R模型设计要点
实体与联系:当描述发生在实体间的行为时,采用联系集
很多情况下,实体和联系都可以接受;
此时能用联系不用实体,以图简化E-R;
两实体之间的关联关系要使用联系表示;不可以将一个实体的主码作为另一个实体的属性,以表示两个实体间的关系
19.概念数据库设计过程
20.扩展E-R特性
特殊化:
-自顶而下设计过程; 实体集可能包含一些子集,子集中的实体在某些方面区别于实体集中的其他实体
-这些子集变为低层次的实体集,拥有不适用于高层次实体集的属性或一些部分参与的关系
-在E-R图中,特殊化用从特殊化实体指向另一个实体的空心箭头来表示,我们称这种关系为ISA关系 (E.g., instructor “is a” person)
-属性继承 – 高层实体集的属性可以被低层实体集继承。低层实体集(或子类)同时还继承地参与其高层实体(或超类)所参与的实体集
实体型的层次
同一系统可能会同时关注一个事物不同层次的实体型
例如:在学校系统中,教务方面愿意把在校人员看做教师和学生,而图书馆方面更愿意统一看作在校人员
ISA联系
-E-R图使用ISA联系表示不同层次实体型之间的关系
-ISA联系本质是继承关系
-ISA联系使用标有“ISA”字样的三角形来表示
特殊化和概括的约束
21.聚集
·可以将联系和参与联系的实体聚集为高层实体
·高层实体可以和其它实体产生联系
·例如:客户、项目及订购联系聚集成的高层实体,可以和银行之间建立担保联系
不使用聚集,E-R图的两种表示方案
通过聚集来减少冗余
·将关系作为抽象实体
·允许关系间存在关系
·将关系抽象用于新实体
通过模式表示特殊化(疑惑)
聚集的处理方案
-联系及相关实体聚集成的高层实体,核心是被聚集的“联系”
-聚集成的高层实体本身不转化成表
-高层实体参与的联系进行正常的表转化,高层实体的主码使用聚集的“核心联系”的主码代替
22.E-R图表示汇总
END