数据库逻辑设计E-R图转换为关系模型

来源:互联网 发布:手机访问电脑软件 编辑:程序博客网 时间:2024/05/21 14:01
两个不同实体间的1:n关系

 上图中表示的是一辆汽车与零件之间的1:n关系,一辆汽车由许多个零件构成。“汽车”这个实体具有型号、单价和牌号等属性,“零件”这个实体具有名称、单价和厂家等属性,“数量”是它们之间的关系“组成”的一个属性。

 当然E-R图还可以表示1:1关系,例如夫妻关系以及姓名与学号间的关系等。

 E-R图还可以表示m:n关系,例如教材中中讲的“学生”与“课程”之间通过“学习”联系,一个学生要学习多门课程,反之同一门课程有很多学生在学习。

 在E-R图中,有时为了使其简洁明了,图中可以略去各属性,着重表示实体间的联系情况,而属性可以单独以表格形式单独列出。

 4.E-R图的设计

 E-R图的设计虽然没有一个绝对固定的方法,但一般来说应遵循以下两条基本原则:

 (1)首先要针对每一个用户做出该用户信息的局部E-R图,确定该用户视图的实体、属性和联系。

 [注意]

 在设计E-R图时,能作为属性的就不要作为实体,这样有利于E-R图的简化。

 (2)把每一个局部的E-R图综合起来,产生出总体的E-R图。

 [注意]

 在E-R图的综合的过程中,同名实体只能出现一次,还要去掉不必要的联系,这样才能消除冗余。

 一般来说,从总体E-R图必须能导出原来所有局部E-R视图,包括所有的实体、属性和联系。

 任何一个系统的E-R图都不是惟一的,强调的侧面不同,所作出的E-R图就可能差别很大。总体的E-R图所表示的实体联系模型,只能说明实体间的联系关系,还需要把它转换成数据模型才能被实际的DBMS所接受。

2.3.3 从E-R图导出关系模型

 E-R图是现实世界各实体的具体反映,与数据库具体实现毫无关系,但它却是构造数据模型的主要依据。本章的重点也是难点是:正确地应用E-R图反映实体间联系并从E-R图中导出关系模型。

 1.从E-R图中导出关系模型的原则

 (1)对于E-R图中的每一个实体,都应转换为一个关系,该关系应包括对应实体的全部属性,并应根据关系所表达的语义确定哪个属性(或哪几个属性组合)作为“主键”。键在关系模型中是实现联系的主要手段。

 (2)对于E-R图中的联系,情况比较复杂,要根据实体联系的方式的不同,采取不同的手段加以实现。

 2.从E-R图中导出关系模型

 (1)两实体间1:n联系

 对于两实体间1:n联系,导出关系模型的原则是:可以将“1”方实体的“主键”纳入“n”方实体对应的关系中作为“外部键”,同时把联系的属性也一并纳入“n”方对应的关系中。

 (2)同一实体内部个体间1:n联系

 对于同一实体集内部个体间的1:n联系,导出关系模型的原则是:可在这个实体所对应的关系中多设一个属性,用来作为与该实体相联系的另一个体的“主键”。

 (3)两实体间m:n联系

 对于两实体间的m:n联系,导出关系模型的原则是:必须对“联系”单独建立一个关系,用来联系双方实体;该关系的属性中至少要包括被它所联系的双方实体的“主键”,并且如果联系有属性,也要归入这个关系中。

 (4)同一实体内部存在m:n的联系

 如果同一实体内部存在m:n的联系,那么从E-R图导出关系模型的原则是“为这个联系单独建立一个关系;该关系中至少应包括被它所联系的双方实体的“主键”,如果联系有属性,也要归入这个关系中。

 (5)两个以上实体间m:n多元联系

 对于两个以上实体之间的m:n多元联系,从E-R图导出关系模型的原则是:必须为联系单独建立一个关系,该关系中最少应包括被它联系的各个实体的“主键”,若是联系有属性,也要归入这个关系中。

 (6)两实体间1:1联系

 对于两实体间1:1联系,只需在一个关系模型中增加另一个关系模型的主键,并可省略两实体间的联系模型。例如:书中所讲到的厂家与工厂的关系,可以省去“管理”这个模型,在“工厂”模型中加入属性“姓名”或在“厂长”模型中加入“工厂”的主键“厂号”,这样关系模型就形成了。