第二章实体-联系模型(概念数据库设计)2.1数据库设计过程2.2基本概念2.2.11976年,P.P.S.Chen提出E-R模型(Entity-RelationshipModel),用E-R图来描述概念模型。观点:世界是由一组称作实体的基本对象和这些对象之间的联系构成的。2.2.2基本概念(1)实体(Entity):客观存在并可相互区分的事物叫实体。如学生张三、工人李四、计算机系、数据库概论。(2)属性(Attribute):实体所具有的某一特性。一个实体可以由若干个属性来刻画。例如,学生可由学号、姓名、年龄、系、年级等组成。(4)域(Domain):属性的取值范围。例如,性别的域为(男、女),月份的需求分析概念数据库设计逻辑数据库设计确定存储哪些数据,建立哪些应用,常用的操作及对象有哪些等。对需求分析所得到数据的更高层的抽象描述。将概念模型所描述的数据映射为某个特定的DBMS模式数据。将E-R模型转换为关系模型。ER模型ODL物理设计阶段数据库实施阶段数据库运行与维护阶段确定物理结构,选定DBMS。建立实际数据库结构。调试及运行。域为1到12的整数。(5)实体型(EntityType):实体名与其属性名集合共同构成实体型。例,学生(学号、姓名、年龄、性别、系、年级)。注意实体型与实体(值)之间的区别,后者是前者的一个特例。如学生(9808100,王平,21,男,计算机系,2)是一个实体。(6)实体集(EntitySet):同型实体的集合称为实体集。如全体学生。联系(Relationship):实体之间的相互关联。如学生与老师间的授课关系,学生与学生间有班长关系。联系也可以有属性,如学生与课程之间有选课联系,每个选课联系都有一个成绩作为其属性。同类联系的集合称为联系集。(7)元或度(Degree):参与联系的实体集的个数称为联系的元。如学生选修课程是二元联系,供应商向工程供应零件则是三元联系。(8)码(Key):A、候选码:关系中的某一属性或属性组的值能唯一地标识一个元组,称该属性或属性组为候选码。B、主码:一个关系有多个候选码,从中选定一个用来区别同一实体集中的不同实体,称作主码。一个实体集中任意两个实体在主码上的取值不能相同。如学号是学生实体的码。通讯录(姓名,邮编,地址,电话,Email,BP)C、外码:D、全码:关系模型中所有属性组是这个关系模式的候选码,称为全码。主讲老师学生课程选修学号姓名系别课程名先修课成绩用矩形表示实体集,在框内写上实体名用椭圆表示实体的属性用无向边把实体与其属性连接起来用菱形表示实体间的联系将参与联系的实体用线段连接学生课程选修学号姓名系别课程名先修课主讲老师(9)参与(Participation):实体集之间的关联称为参与,即实体参与联系。如王军选修“数据库基础”,表示实体“王军”与“数据库基础”参与了联系“选修”。如果实体集E中的每个实体都参与到联系集R中的至少一个联系,则称E全部参与R。如果实体集E中只有部分实体参与到联系集R的联系中,则称E部分参与R。如“职工”与“部门”之间的“管理”联系,“职工”实体集部分参与,而“部门”实体集完全参与。(10)角色(Role):实体在联系中的作用称为实体的角色。当同一个实体集不止一次参与一个联系集时,为区别各实体的参与联系的方式,需要显式指明其角色。如学生与班长关系,职工与职工之间的经理关系,课程之间的先修关系。2.2.3属性类型(1)简单属性:不可再分的属性。如学号、年龄、性别。(2)复合(Composite)属性:可以划分为更小的属性。可以把相关属性聚集起来,使模型更清晰。如电话号码=区号+本地号码(3)单值属性:每一个特定的实体在该属性上的取值唯一。如学生的学号,年龄、性别、系别等。(4)多值属性:某个特定的实体在该属性上的有多于一个的取值。如学生(学号,所选课程,联系电话),的“所选课程”,“联系电话”。(5)NULL属性:Null表示“无意义”,当实体在某个属性上没有值时设为Null。如通讯录(姓名,email,电话,BP),若某人没有email地址,则在email属性上取值为null。null表示“值未知”,即值存在,但目前没有获得该信息。如职工(姓名,部门,工种,身份证),如果目前不知道职工身份证号码,则设身份证值为null。实体完整性:作为主码的属性上取值不能为null。(6)派生(Derived)属性与基属性:可以从其他相关的属性或实体派生出来的属性值。如学生(学号,姓名,平均成绩),选课(学号,课程号,成绩),则平均成绩可由学生所选课程的总成绩除以课程总数来得到。称平均成绩为派生属性,而成绩为基属性,或存储属性。数据库中,一般只存基属性值,而派生属性只存其定义或依赖关系,用到时再从基属性中计算出来。基本表VS视图多值属性用双椭圆表示,或用双线与实体相连。派生属性用虚椭圆表示,或用虚线与实体相连员工管理管理工作学生选修课程姓名2.3映射约束2.3.1映射的基数(MappingCardinalities):实体之间的联系的数量,即一个实体通过一个联系集能与另一实体集相关联的实体的数目。可以有一对一的(1:1),一对多的(1:m),多对多的(m:n)几种情况。在E-R图中,用箭头或线段来表示联系的映射基数。(1)二元联系集的映射基数:一对一、一对多、多对多(2)一个实体集内的二元联系:一对一、一对多、多对多(3)多个实体集间联系的情况2.3.2存在依赖(ExistenceDependency)如果实体x的存在依赖于实体y的存在,则称x存在依赖于y。y称作支配实体,x称作从属实体。如果y被删除,则x也要被删除。考虑员工亲属的例子2.3.3弱实体集(WeakEntitySet)如果一个实体集的所有属性都不足以形成主码,则称这样的实体集为弱实体集。弱实体集与其拥有者之间的联系称作标识性联系(identifyingrelationship)。弱实体集与强实体集之间是一对多的联系。弱实体集必然存在依赖于强实体集(StrongEntitySet)。存在依赖并不总会导致一个弱实体集,从属实体集可以有自己的主码。如实体集信用卡(信用卡号,客户帐号,金额),它存在依赖于客户帐号实体集,但信用卡有自己的主码信用卡号。学生平均成绩姓名系别ABR单方实体集ABR联系R从A到B是一对一或多对一联系R从A到B是多对多或一对多2.3.4为什么使用弱实体集通过为弱实体集加上合适的属性,可转变为强实体集,为什么还要使用弱实体集?(1)避免数据冗余(强实体集码重复),以及因此带来的数据的不一致性。(2)弱实体集反映了一个实体对其它实体依赖的逻辑结构。(3)弱实体集可以随它们的强实体集的删除而自动删除。(4)弱实体集可以物理地随它们的强实体集存储。2.3.5复合实体复合实体的主码一般由两个(或两个以上)联系2.3.6实体的超类与子类举例:飞行员工与普通员工。2.4数据抽象与E-R模型设计步骤(1)数据抽象(2)设计局部E-R模型(3)设计全局E-R模型A、合并局部E-R图,生成初步E-R图:可能发生的问题,属性冲突,名称冲突,结构冲突。B、消除冗余生成E-R图2.5将E-R模型转换成数据库一般规则(1)将每一个实体转换成一个关系。(2)所有主码必须定义非空。亲属员工有亲属名名称超类名称子类1子类2(3)对于二元联系,按照规则定义外码。A、一对多:将“一”表中的主码作为外码放在“多”表中,外码总是在“多”的一方。B、弱实体:将父表的主码作为外码放在弱实体中。弱实体的主码由父表的主码与弱实体本身的候选码组成。也可以为弱实体建立新的独立的标识符ID。C、一对一:将一个表的主码作为外码放在另一个表中,外码通常是放在操作比较频繁的表中。也可以将两个实体合并成一个实体。D、多对多:建立复合实体,复合实体的主码由两个父实体的主码复合组成。复合实体的主码也是外码。