数据库系统概念-数据库设计和E-R模型
E-R图
实体集
实体通过一组属性来表示,每个实体的每个属性都有一个值.
联系集
联系指多个实体间的相互关联.
实体在联系中扮演的功能称为实体的角色.
联系也可具有描述性属性.
给定的联系集中的一个联系实例,必须由其参与实体唯一标识的.
参与联系集的实体集的数目称为联系集的度.
二元联系集的度为2
,三元联系集的度为3
.
属性
每个属性有一个可取值的集合,称为该属性的域或值集.E-R
模型中的属性可按如下属性类型进行划分
(1). 简单和复合属性
(2). 单值和多值属性E-R
图中为表示一个属性是多值的,用花括号将属性名括住.
(3). 派生属性
属性的值不存储,在需要时计算出来.
实体在某属性上无值时使用空值(可能是不知道或信息缺失)。
映射基数
表示一个实体通过一个联系集能关联的实体的个数.
对于实体集A
和B
之间的二元联系集R
来说,映射基数必是以下情况之一:
(1). 一对一A
中一个实体至多与B
中一个实体相关联,且B
中一个实体也至多与A
中一个实体相关联。
(2). 一对多A
中的一个实体可与B
中的任意数目(零或多个)实体相关联,而B
中的一个实体至多与A
中的一个实体相关联。
(3). 多对一A
中的一个实体至多与B
中的一个实体相关联,B
中一个实体可与A
中任意数目(零或多个)实体相关联.
(4). 多对多A
中的一个实体可与B
中任意数目(零或多个)实体相关联,B
中一个实体也可与A
中任意数目(零或多个)实体相关联.
参与约束
如实体集E
中的每个实体都参与到联系集R
的至少一个联系中,实体集E
在联系集R
中的参与称为全部的.如果E
中只有部分实体参与到R
的联系中,实体集E
到联系集R
的参与称为部分的。
码
一个实体集中不允许两个实体对所有属性都具有完全相同的值.
实体的码是一个足以区分每个实体的属性集.
关系模式的超码/候选码(不可再精简的超码)/主码(选定的一个候选码)概念也适用于实体集.
实体集的主码使我们可区分实体集中不同的实体,设R
是一个涉及实体集E1, E2, . . . , En
的联系集.
主码(Ei
)代表构成实体集Ei
的主码的属性集合.
假设所有主码属性名不同,联系集主码构成依赖于同联系集相关联的属性集合。
如联系集R
没有属性与之关联,则属性集合primary-key(E1) ∪ primary-key(E2) ∪ ··· ∪ primary-key(En)
描述了集合R
的一个联系.
如联系集R
有属性 a1, a2, . . ., am
与之相关联,则属性集合primary-key(E1) ∪ primary-key(E2) ∪ ··· ∪ primary-key(En) ∪ {a1, a2, . . . , am}
描述了集合R
中的一个联系.
以上两种情况下,属性集合primary-key(E1) ∪ primary-key(E2) ∪ ··· ∪ primary-key(En)
构成了联系集的一个超码.
如实体集间主码属性名称不是互不相同,可通过重命名来区分,也可通过实体集+属性名可构成唯一名字.一个实体集多次参与某个联系集时,用角色名+属性名来区分属性.
二元联系A,B
.
若A
到B
为一对多,B
的主码可作联系集主码.
若A
到B
为多对一,A
的主码可作联系集主码.
若A
到B
为一对一,A/B
的主码可作联系集主码.
若A
到B
为多对多,A+B
的主码可作联系集主码.
E-R图
基本结构
E-R
图包括主要可视化构件含义.
(1). 分成两部分的矩形代表实体集.
(2). 菱形代表联系集.
(3). 未分隔的矩形代表联系集所关联的属性.
(4). 通过线段将实体集连接到联系集.
从联系集到实体集采用带箭头线段表示该实体集在联系中是一对?
的情况.
从联系集到实体集采用不带箭头线段表示该实体集在联系中是多对?
的情况.
从联系集到实体集采用双线表示实体集中每个实体均会在联系集中出现.即全部参与.
(5). 通过虚线将联系集属性连接到联系集.
(6). 双线用于显示实体在联系集中的参与度.
(7). 双菱形代表连接到弱实体集的标志性联系集.
E-R
图还提供了一种描述每个实体参与联系集中联系的次数的更复杂的约束的方法.
实体集和二元联系集之间的一条边,可有一个关联的最大和最小映射基数,用l..h
形式表示,l
表示最小的映射基数,h
表示最大的映射基数.
最小值为1
表示这个实体集在该联系集中全部参与。即为每个实体至少在联系集中一个联系中出现。
最大值为1
,表示实体至多参与一个联系.最大值为*
代表没有限制.
上述E-R
图表示对于student
集的每个实体,有且仅有一个对应的advisor
联系实例,表示对instructor
集的每个实体,可有0
或多个对应的advisor
联系实例.
复杂的属性
E-R
图中表示复合,多值属性实例:
角色
在E-R
图中,通过在菱形和矩形之间的连线上进行标注来表示角色.
非二元的联系集
E-R
图中类似二元联系集,当联系集通过线段连接到多个实体集时,为多元联系集.
弱实体集
没有足够的属性以形成主码的实体集称作弱实体集,有主码的实体集称作强实体集.
弱实体集必须与另一个称作标识或属主实体集的实体集关联才有意义。
将弱实体集与其标识实体集相联的联系称为标识性联系.
标识性联系是从弱实体集到标识实体集多对一的且弱实体集在联系中的参与是全部的.
标识性联系集不应该有任何描述性属性.
弱实体集的分辨符也称为该实体集的部分码,弱实体集的主码由标识实体集的主码加上该弱实体集的分辨符构成。
在E-R
图中,弱实体集和强实体集类似,以矩形表示.
(1). 弱实体集的分辨符以虚下划线标明,而不是实线
(2). 关联弱实体集和标识性强实体集的联系集用双菱形表示
使用双线
表示全部参与
,不带箭头线段表示实体在联系集中是多对?
.有箭头表示一对?
.
弱实体集可以参与标识性联系以外的其他联系.
弱实体集可以作为属主与另一个弱实体集参与一个标识性联系。一个弱实体集也可能不止与一个标识实体集关联.这样,一个特定的弱实体将被一个实体组合标识,其中每个标识实体集有一个实体在该组合中。
弱实体集的主码可由标识实体集的主码的并集加上弱实体集的分辨符组成。
某些情况下,将弱实体集表示为属主实体集的一个多值复合属性.
大学的E-R图
下图展示了大学的E-R
图实际例子:
具有简单属性的强实体集的表示
设E
是只具有简单描述性属性a1,a2,...,an
的强实体,用具有n
个不同属性的模式E
来表示这个实体集.
对于从强实体集转换而来的模式,强实体集的主码就是生成的模式的主码.
具有复杂属性的强实体集的表示
处理复合属性:
我们为每个子属性创建一个单独的属性来处理复合属性,不为复合属性自身创建一个单独的属性.
简单的说,复合属性所有叶子属性提升为一级属性,所有非叶属性去除,得到关系模式下此复合属性对应的属性集合.
处理多值属性:
对于多值属性,创建新的关系模式N
.从原有关系模式中移除多值属性.创建一个联系集来重建原有关系和多值属性的联系.
处理派生属性:
派生的属性不在关系数据模型中显式地表示出来,它们可在例如对象-关系数据模型的其他数据模型中表示为方法.
对于一个多值属性M
,构建关系模式R
,该模式包含一个对应于M
的属性A
及对应于M
所在的实体集或联系集的主码的属性X
,对X应添加外码约束,如:instructor_phone (ID, phone_number)
.为多值属性构建的关系instructor_phone
中,对ID
应添加外码约束(即ID
必须存在于instructor
的ID
集合中).
如果实体集对应的关系模式在去掉多值属性后,关系中只有主码属性了,则此关系可被删除.但表示多值属性的那个关系模式要保留.
弱实体集的表示
设A
是有属性a_{1},...,a_{m}
的弱实体,设B
是A
所依赖的强实体集.
设B
的主码包括属性b_{1},...,b_{n}
,用名为A
的关系模式表示实体集A
,该模式的每个属性对应以下集合中的一个成员:{a_{1},...,a_{m}} U {b_{1},...,b_{n}}
.
对从弱实体集转换而来的模式,模式的主码由其所依赖的强实体集的主码与弱实体集的分辨符组合而成。
除创建主码外,还要在关系A
上建立外码约束,该约束指明属性b_{1},...,b_{n}
参照关系B
的主码.
外码约束保证表示弱实体集的每个元组都一个表示相应强实体的元组与之对应。
级联删除:某个关系A
外码依赖与关系B
.在关系B
移除一个元组.需在关系A
移除相应属性的对应元组的现象叫级联删除.
联系集的表示
设R
是联系集,设a_{1},...,a_{m}
表示所有参与R
的实体集的主码的并集构成的属性集合。
设R
的描述属性为b_{1},...,b_{n}
.用名为R
的关系模式来表示该联系集.
下面集合中的每一项表示为模式的一个属性{a_{1},...,a_{m}} U {b_{1},...,b_{n}}
,从所有相关实体集中取所有主码属性能够用来标识一个指定元组.
如下选择主码:
(1). 对于多对多二元联系,参与实体集的主码属性的并集成为主码.
(2). 对于一对一的二元联系,任何一个实体集的主码都可选作主码.
(3). 对于多对一或一对多的二元联系,联系集中多的那一方的实体集的主码构成主码.
(4). 对与边上没有箭头的n
元联系集,所有参与实体集的主码属性的并集成为主码.
(5). 对于边上有一个箭头的n
元联系集,不再箭头侧的实体集的主码属性为模式的主码.
还可与联系集的属性建立和属性作为主码的实体集的外码约束.
模式的冗余
连接弱实体集和强实体集的联系集比较特殊,这样的联系集是多对一的,且没有描述属性.
弱实体集的主码包含强实体集的主码.
一般情况下,连接弱实体集与其所依赖的强实体集的联系集的模式是冗余的。且在基于E-R
图的关系数据库设计中不必给出。
扩展的E-R特性
特化,概化,高层和底层实体集,属性继承和聚集.
特化
实体集可能含一些子集,子集中的实体在某些方面区别于实体集中的其他实体.在实体集内部进行分组的过程称为特化,一个实体集可根据多个可区分的特征进行特化.雇员实体间的可按雇员所从事的工作进行特化.
当一个实体集上形成了多于一种特化时,某个特定实体可能同时属于多个特化实体集.E-R
图中,特化用从特化实体指向另一方实体的空心箭头来表示,称这种关系为IS A
关系。
概化
从初始实体集到一系列不同层次的实体子集的细化,代表了一个自顶向下的设计过程.设计过程也可自底向上进行,多个实体集根据共同具有特征综合为一个较高层实体集
实体集间包含共同属性,称为共性.这种共性可通过概化来表达,概化是高层实体集与一个或多个低层实体集间的包含关系.高层与低层实体集也可分别称作超类和子类.概化是特化的逆过程.
特化从单一的实体集出发,通过创建不同的低层实体集来强调同一实体集中不同实体间的差异.概化基于这样认识,一定数量的实体集共享一些共同的特征.
属性继承
由特化和概化所产生的高层和低层实体的一个重要特性是属性继承.低层实体集(或子类)同时还继承地参与其高层实体(或超类)所参与的联系集.
对E-R
图的一个给定部分说,不管是通过特化还是概化得到,结果一样.
(1). 高层实体集所关联的所有属性和联系适用于它的所有低层实体集.
(2). 低层实体集特有的性质仅适用于特定的低层实体集.
在层次结构中,给定的实体集作为低层实体集只参与到一个IS A
联系中,称实体集具有单继承.一个实体集作为低层实体集参与到多个IS A
联系中,称实体集具有多继承.且产生的结构称为格.
概化上的约束
(1). 全部概化或特化.每个高层实体必须属于一个底层实体集.
(2). 部分概化或特化.允许一些高层实体不属于任何底层实体集.
在E-R
,加入total
表示全部概化.
对不相交概化,画一条从关键词到相应的空心箭头的虚线.
对重叠概化,画一条到空闲箭头集合的虚线.
聚集
E-R
模型的一个局限性在于它不能表达联系间的联系.
假设,每位在项目上指导学生的教师需要记录月评估报告,将评估报告建模为一个主码为evaluation_id
的实体evaluation
.
记录一个evalution
对应的(student, project, instructor)
组合的另一个方法是在instructor,student,project,evaluation
间建立一个四元联系集eval_for
.
一些instructor,student,project
的组合是无效的,没有关联的evaluation
.
上述图存在冗余信息,在eval_for
中的每个instructor,student,project
组合肯定也在proj_guide
中.
对类似上述情况建模的最好办法是使用聚集,聚集是一种抽象,通过这种抽象,联系被视为高层实体.
对我们例子,将联系集proj_guide
(关联实体集instructor, student, project
)看成一个名为proj_guide
的高层实体集,这种实体集可像对任何其他实体集一样来处理.
这样,可在proj_guide
和evaluation
间创建一个二元联系eval_for
来表示evaluation
对于哪个(student, projec, instructor)
组合.
概化的表示
为高层实体集创建一个模式,为每个低层实体集创建一个模式.
模式中的属性包括对应于低层实体集的每个属性及对应于高层实体集主码的每个属性.
高层实体集的主码属性变成既是高层实体集的主码属性也是所有低层实体集的主码属性.另外,在低层实体集上建立外码约束,其主码属性参照创建自高层实体集的关系的主码.
聚集的表示
表示聚集proj_guide
和evaluation
间联系的联系集eval_for
的模式包含对应实体集evaluation
主码中的每个属性,及联系集proj_guide
主码中的每个属性.还包含对应于联系集eval_for
的任意描述属性.
更多推荐
所有评论(0)