《数据库系统概念》第7章知识点总结
数据库设计和E-R模型
本章我们将学习将数据库表示为一个关系数据库设计和一个与之关联的约束集合
实体:指示所有可明确识别的个体。各种各样的实体以多种方式互相关联,而所有这些方式都需要在数据库设计中反映出来
设计一个数据库模式的时候,必须避免的两个主要的缺陷
(1)冗余:一个不好的设计可能会重复信息。信息的冗余表达的最大问题是当对一条信息进行更新,但没有将这条信息的所有拷贝都更新时这条信息的拷贝会变得不一致。
(2)不完整:如字面意思,一个不好的设计可能会使得企事业机构的某些方面难于甚至无法建模。
实体-联系模型
实体-联系(E-R)数据模型的提出旨在方便数据库的设计,它是通过允许定义代表数据库全局逻辑结构的企业模式实现的。
实体:是现实世界中可区别于所有其他对象的一个“事物”或“对象”
实体集:是相同类型即具有相同性质(或属性)的一个实体集合。例如一所给定大学的所有教师的集合可定义为实体集instructor
联系:是指多个实体间的相互关联
联系集:是相同类型联系的集合。
参与:实体集之间的关联称为参与。也就是说,实体集E1,E2,...,En参与联系集R
角色:实体在联系中扮演的功能称为实体的角色。
属性:实体集的属性是将实体集映射到域的函数。由于一个实体集可能有多个属性,因此每个实体可以用一组(属性,数据值)对来表示,实体集的每个属性对应一个这样的对。
E-R模型中的属性可以按照如下的属性类型来划分
(1)简单和复合属性:简单属性指不能划分为更小的部分;复合属性指可以再划分为更小的部分(即其他属性)。例如属性name可设计为一个包含first_name、middle_initial和last_name的复合属性
(2)单值和多值属性:我们直接用例子说明:对某个特定的学生实体而言,student_ID属性只对应于一个学生ID,这样的属性为单值;在教师实体中,每个教师可以有0个、1个或多个电话号码,这个phone_number属性就是多值的。
(3)派生属性:这类属性的值可以从别的相关属性或实体派生出来。
约束
映射基数:表示一个实体通过一个联系集能关联的实体的个数。
(1)一对一:A中的一个实体至多与B中的一个实体相关联,并且B中的一个实体也至多与A中的一个实体相关联
(2)一对多:A中的一个实体至多与B中的零个或多个实体相关联,而B中的一个实体也至多与A中的一个实体相关联
(3)多对一:A中的一个实体至多与B中的一个实体相关联,而B中的一个实体可以与A中的零个或多个实体相关联
(4)多对多:A中的一个实体至多与B中的零个或多个实体相关联,而且B中的一个实体也可以与A中的零个或多个实体相关联
码
关系模式中的超码、候选码、主码的概念同样适用于实体集
实体-联系图
基本结构
分成两部分的矩形:代表实体集,上面的第一部分为实体集的名字,下面的第二部分包含实体集中所有属性的名字
菱形:代表联系集
未分割的矩形:代表联系集的属性,构成主码的属性以下划线表明
线段:将实体集连接到联系集
虚线:将联系集属性连接到联系集
双线:显示实体在联系集中的参与度
双菱形:代表连接到弱实体集的标志性联系集
联系集和实体集之间也有映射基数,意思同约束中的映射技术,联系集为实体A,实体集为实体B
约束的方式有两种:
一、
二、用l..h的形式表示一个关联的最小和最大的映射基数
复杂的属性
表示方法:
name、address、street为复合属性
{phone_number}为多值属性
{age()}为派生属性age
角色
通过在菱形和矩形之间的连线上进行标注来表示角色,例如下图中的course_id和prereq_id
弱实体集:没有足够的属性以形成主码的实体集称作弱实体集
强实体集:有主码的实体集称作强实体集
弱实体集必须与另一个称作标识或属主实体集的实体集关联才能有意义。每个弱实体必须和一个标识实体关联;也就是说,弱实体集存在依赖于标识实体集。我们称标识实体集拥有它所标识的弱实体集。将弱实体集与其标识实体集相联的联系称为标识性联系。
分辨符:虽然弱实体集没有主码,但是我们仍然需要区分依赖于特定强实体集的弱实体集中的实体的方法。弱实体集的分辨符是使我们进行这种区分的属性集合,也称为该实体集的部分码。
弱实体集这个知识点有待完善
转换为关系模式
具有简单属性的强实体集的表示
设E是只具有简单描述性属性a1,a2,...,an的强实体集。我们用具有n个不同属性的模式E来表示这个实体集。该模式的关系中的每个远足同实体集E的一个实体相对应。
具有复杂属性的强实体集的表示
这个就比上面的情况复杂一点,我们通过为每个子属性创建一个单独的和属性来处理符合属性,我们并不为符合属性自身出啊关键一个单独的属性。
例如instructor实体集,里面有复合属性name,为instructor生成的末世包括属性first_name、middle_initial和last_name;没有单独的属性或末世表示name。其他属性类似。
弱实体集的表示
设A是具有属性a1,a2,...,am的弱实体集,设B是A所依赖的强实体集,设B的主码包括属性b1,b2,...,bn。我们用名为A的关系模式表示实体集A,该模式的每个属性对应以下集合中的一个成员:
所以A的模式的属性有:A的属性和B的主码
该模式的主码由实体集B的主码和A的分辨符组成
联系集的表示
扩展的E-R特性
特化(自顶向下)
在实体集内部进行分组的过程称为特化。
特化是因为实体集中的某个实体子集可能具有不被该实体集中所有实体所共享的一些属性。
概化(自底向上)
概化是高层实体集与一个或多个底层实体集间的包含关系。
概化是多个实体集根据共同具有的特征综合成一个较高层的实体集
注:图片均来自《数据库系统概念》第6版——机械工业出版社