存在依赖与弱实体集在现实世界中存在一类实体集,其属性不足以形成主码,它们必须依 赖于其它实体集的存在而存在,我们称这样的实体集为弱实体集(weak entity set)与此相 对应,其属性可以形成主码的实体集称为强实体集弱实体集所依赖的强实体集称为标识实体集(identifying entity set)弱实体集必须与一标识 实体集相关联才有意义,该联系集称为标识联系集(identifying relationship set)一个弱实体集中用来标识弱实体的属性(集)称为该弱实体集的部分码(partial key)弱实体集中的实体是由其标识实体集中的主码与其部分码共同标识对于弱实体集,必须满足下列限制:标识实体集和弱实体集必须是“一对多”联系集(一个标识实体可以与一个或多个弱实体相 联系,但一个弱实体只能与一个标识实体联系)弱实体在标识联系集中是全部参与E-R图使用双矩形表示弱实体集,双菱形表示标识联系,虚下划线表示弱实体的部分码扩展E-R特征类层次实体集中可能包含一些子集,该子集中的实体可能具有不被该实体集中所有实体所 共享的一些属性例如,可将Student实体集划分为本科生Undergraduate和研究生Graduate两类。
对于 Undergraduate可定义属性interest描述其个人兴趣,而Graduate可定义direction和supervisor 属性分别描述其研究方向和导师E-R模型使用实体集的继承和ISA联系来描述这种概念上的层次关系图4-13 类层次关系聚合聚合是一种抽象,它将一个联系集及其相关联的实体集抽象为一高层实体集对待,然 后建立该高层实体集与其它实体集之间的联系集例如:考虑实体集Student和Course的联系集Enroll学校教务部门可能安排一名教师录入 (Record)学生考试成绩,并要求记录成绩的录入日期E-R模型设计原则基本原则忠实性设计应忠实于应用需求,这是首要的也是最重要的原则即实体集、属 性、联系集都应当反映现实世界及根据所了解的现实世界去建模简单性 除非有绝对需要,否则不要在设计中增加更多成分;只需要对数据库使用者所关心、 感兴趣的属性建模避免冗余原则:一个对象只存放在一个地方选择实体还是属性实体和属性并没有形式上可以截然划分的界限通常满足下述两条规则,均可作为属性对待:作为属性,不能再具有要描述的性质;属性不能和其它实体相联系例:可将phoneNumber属性建模为实体集Telephone选择实体还是属性常犯两个错误:将一实体集的主码作为另一实体集的属性,而不是使用联系;将相关实体集的主码属性作为联系集的属性。
因为联系集已隐含了实体集的主码属性选择实体还是联系一事物是描述为实体集还是联系集没有一个绝对的标准通常原则:实体对应于现实世界中实际存在的事物,是名词如学生、教师和课程是名词,可作为实体集建模联系对应的概念一般为一种动作,即描述实体间的一种行为如选课、讲授是动词,因此作为联系集建模映射基数可能影响到一个事物是作为实体集还是联系集的选择选择二元还是多元联系数据库中的联系通常是二元的,但有时候存在多元联系情形,这时 可将其转化为多个二元联系解决三元联系集“Parent”分解为两个二元联系集“Father”和“Mother”多元联系转化为二元联系后,可能无法将n元联系上的约束转变为二元联系上的约束 例如,学生-课程-教师之间的三元联系,如果转化为学生-课程、课程-教师两个二元联系 此时,如果存在1门课程有多个教师任教时,则无法反映学生所选课程由谁任教图4-6中的三元联系集存在的问题是:若一门课程没有学生选修,则在系统中无法表达,因为构成多元联系的实体缺一不可 虽然1门课程可能由多个教师任教,但1个开课班可限定只由1名老师讲授因此,该三元 联系集可分解为Student与CourseClass、Teacher与CourseClass两个二元联系集表示。
其中 CourseClass是弱实体集,它所依赖的标识实体集是Course;Student与CourseClass之间是多对多联系,Teacher与CourseClass之间是一对多联系这样,若学生选修了某课程的某开课班,则可通过开课班CourseClass与教师Teacher的联 系集Teach 了解该课程的任课老师事实上,一个非二元联系集总可以用一组不同的二元联系集代替简单起见,考虑一个抽象 的三元联系集R,它将实体集A、B和C联系起来用实体集E替代联系集R,并建立三 个联系集:RA (联系实体集E和A) RB (联系实体集E和B) RC (联系实体集E和C)如果联系集R有属性,那么将这些属性赋给实体集E;否则,为E建立一个特殊的标识属 性(因为每个实体集都应该至少有一个属性,以区别实体集中的各个成员)针对联系集R中的每个联系(ai, bi, ci),在实体集E中创建一个新的实体ei然后,在三 个新联系集中,分别插人新联系如下:在RA中插入(ei, ai);在RB中插入(ei, bi);在RC中插入(ei, ci)联系属性安置联系属性的安置是指联系的属性是否可以作为实体集的属性存在。
影响联系属性放置的主要因素是映射基数:一对一联系:联系属性可放在参与联系的任意一个实体集中; 一对多联系:联系属性可放在参与联系的“多”的那一边实体集中; 多对多联系:联系属性不能放在参与联系的任何一方实体集中逻辑设计一E-R模型转化为关系模型E-R模型转化方法E-R模型和关系模型都是对现实世界的抽象而E-R模型只是描述数据库的概念模式,若要 被关系数据库所接受,必须进行信息转化,即将E-R模型转化为关系数据库所支持的逻辑 模式一一关系模式转化方法强实体集转化方法弱实体集转化方法联系集转化方法复合属性及多值属性 转化方法类层次转化方法聚合转化方法强实体集转化方法将强实体集映射成关系模式很直接,只需将实体集的每个属性对应为关系模式的属性,实体 集的码作为关系模式的码设强实体集E具有al, a2,…,an属性,其转化的关系模式定义如下:关系模式名:E;属性集:al, a2, „, an;主码:实体集E的主码;外码:无 例如,由Course实体集转化的关系模式为(加下划线的属性表示它是主码成员): Course (courseNo, courseName, creditHour, courseHour) 弱实体集转化方法设弱实体集A具有属性集{a1, a2, „, am},且{p1, p2,…,pk}为A的部分码(pi {a1, a2, „, am}, 1 i k, k m); B是A所依赖的强实体集且主码为属性集{b1, b2, „, bn}, 则A转化的关系模式定义如下:关系模式名:A;属性集:{a1, a2,…,am} {b1, b2,…,bn};主码:{b1, b2,…,bn} {p1, p2,…,pk};外码:参照关系B的属性b1, b2,…,bn。
例如,由弱实体集CourseClass转化的关系模式为(外码属性成员用斜体表示):CourseClass (courseNo, cClassNo, year, semester, time, location)联系集一般转化方法设R是一联系集,其描述性属性集为{a1, a2,…,am};参与R的所有实体集ES的主码的并 集形成属性集合{b1, b2,…,bn},则由R转化的关系模式定义如下:关系模式名:R;属性集:{a1, a2,…,am} {b1, b2,…,bn};主码:按映射基数对应规则确定;外码:参照参与关系Ei ES及各自对应的主码属性b1, b2,…,bn一对多或一对一联系集的转化可不转化为单独的关系模式,而采用下列方法转化:若A到B联系集为一对多联系,则在由B转化的关系模式中增加A的主码属性(这些属性 即为参照A主码的外码)若A到B联系集为一对一联系,则将某一方的主码属性增加到另一方实体集所转化的关系 模式中去标识联系集的转化不需转化为任何关系模式复合属性转化方法应为每个子属性创建一个单独的属性,而不是为复合属性自身创建一个单独的属性例如,由Student转化而来的关系模式为:Student (studentNo, studentName, sex, birthday, age, province, city, street)E-R图中的address属性被其复合属性province, city, street代替。
多值属性转化方法创建一个新的模式,其属性为多值属性所在的实体集或联系集的主码属性和该多值属性对应 的属性组成,主码为全部属性设M为多值属性,M对应的属性集为A; E为M所在的实体集或联系集,且E的主码为属 性集{bl, b2,…,bn},则由M转化的关系模式定义如下:关系模式名:M;属性集:A {b1, b2,…,bn};主码:A {b1, b2,…,bn};外码:参照关系E的主码属性b1, b2,…,bn例如,Student的phoneNumber为多值属性,其转化成的关系模式为:phoneNumber (studentNo, pNumber)类层次转化两种方法:父类实体集和子类实体集分别转化为单独的模式其中,父类实体集对应的关系模式属性为 父类实体集的属性(即公共属性),而各子类实体集对应的模式由该子类的特殊属性和父类实 体集的主码属性组成它们的主码与父类实体集的主码相同只将子类实体集转化为关系模式,其属性由父类的全部属性和子类的特殊属性组成例如,按第1种方法,父类Student和子类Undergraduate、Graduate可转化为三个关系模式:Student (studentNo, studentName, sex, birthday, age, province, city, street)Undergraduate (studentNo, interest)Graduate (studentNo, direction, supervisor)按第2种方法,则只转化为两个关系模式:Undergraduate (studentNo, studentName, sex, birthday, age, province, city, street, interest )Graduate (studentNo, studentName, sex, birthday, age, province, city, street, direction, supervisor ) 聚合转化方法聚合是一种抽象,其高层实体集中的实体集和联系集按各自规则进行模式转化;而与高层实 体集相连的联系集对应的关系模式的属性应由非高层实体集的主码属性、高层实体集中联系 集的主码属性以及联系集自身的描述属性共同组成。
例如,聚合Record联系集转化而成的关系模式为:Record (teacherNo, studentNo, courseNo, cClassNo, date)大学选课系统E-R模型转化实例由实体集转化而来的关系模式学院实体集 Institute: Institute (instituteName, instituteAddress)班级实体集 Class: Class (classNo, className, grade, classNumber, instituteName)学生实体集 Student: Student (studentNo, s。