《e-r转换为关系模型》由会员分享,可在线阅读,更多相关《e-r转换为关系模型(36页珍藏版)》请在金锄头文库上搜索。
1、,ER图设计与转换,学习目标,掌握利用ER图进行概念设计的方法 掌握ER图的基本元素与确定 理解ER局部模式的设计方法 理解局部ER模式综合为全局ER模型 了解全局ER模型的优化,5.1 实体-联系方法,本节我们要介绍P.P.S.Chen于1976年提出的实体-联系方法,即 E- R(Entity-Relationship)方法。这种方法由于简单、实用,得到了非常普遍的应用,也是目前描述信息结构最常用的方法。,E-R方法使用的工具称作E-R图,它们描述的现实世界的信息结构称为企业模式(Enterprise Schema),也把这种描述结果称为E-R模型。,目前还没有具体的数据库管理系统支持 E
2、- R模型,但是已经有支持 E- R模型的数据库设计工具,它可以把 E- R模型直接转换为具体的数据库管理系统上的数据模型。 E- R方法是设计数据库的有力工具,应用非常广泛,用 E- R图描述的概念模型也称为实体联系模型 。,转换,从现实世界到机器世界的过程,本章首页,本节首页,本章首页,本节首页,E-R图提供了表示实体表、属性和联系的方法,规定如下:,实体集: 用矩形框表示,框内写明实体名。,属 性: 用椭圆框表示,框内写明属性名,用一条无向线与所属 实体连接起来。,联 系: 用菱形框表示,框内写明联系名,并用无向线分别与有 关实体连接起来,同时在无向线旁边标明联系类型。下 图描述了三种联
3、系类型的例子。,在建立 E-R图的时候,应根据实际应用首先确定哪些是实体集,有多少个实体集,其次确定实体集的属性,然后再确定这些实体集之间存在什么联系及联系的属性。,例:现在我们完整地考虑一下学校教学管理中的教学情况。教学过程可由学生、班级、课程、教师、讲授、选修、组成等方面构成。其中,学生、班级、课程、教师是实体集,而讲授、选修、组成是实体集间的联系。,假设各属性如下:,学生 学号、姓名、性别、出生年月、入学成绩,班级 班级号、班级名称、所属专业、组成时间、系别,课程 课程号、课程名称、学分,教师 职工号、姓名、性别、出生日期、职称,选修 成绩,学生对课程存在多对多的 “选修 ”联系;教师对
4、课程也是多对多的“ 讲授 ” 联系;班级对学生是一对多的 “组成 ”联系。,本章首页,本节首页,上一页,下图给出了教学情况实体联系模型图,即教学情况E-R图,实体联系方法是抽象和描述现实世界的有力工具,用 E- R图表示的概念模型独立于具体的 DBMS所支持的数据模型,它是各种数据模型的共同基础,因而比数据模型更一般、更抽象、更接近于现实世界。,本章首页,本节首页,上一页,例:有仓库和职工两个实体,并且有语义一个仓库可以有多名职工,但是一个职工只能在一个仓库工作。那么仓库和职工是一对多的联系,我们把这种联系命名为工作,相应的 E-R图如下图所示。,例:有仓库和器件两个实体,并且有语义一个仓库可
5、以存放多种器件,一种器件可以存放于多个仓库。那么仓库和器件间是多对多的联系,我们把这种联系命名为库存,相应的E-R图如下图所示。,如果实体集 A与实体集 B之间存在联系,并且对于实体集A中的一个实体,实体集 B中有多个实体与之对应;而对实体集B中的一个实体,在实体集A中也同样,则称实体集A到实体集B的联系是多对多的,记为m:n。,本章首页,本节首页,上一页,E -R图不仅能描述两个实体之间的联系,而且还能描述两个以上实体之间的联系。,5.1.2 E-R模型的组成要素及表示方法,1E-R图的组成要素及其画法,三、 联系的设计之一,联系的元数 一个联系涉及到的实体集个数 一元、二元、三元,联系的连
6、通词 联系涉及到的实体集之间实体对应的方式 1:1,1:N,M:N,实体的基数 有两个实体集E1和E2,E1中每个实体与E2中有联系实体的数目的最小值min和最大值max,称为E1的基数,用(min,max)形式表示,五、 ER设计步骤,设计方法:自底向上 设计过程 局部ER模型 局部结构范围 实体 联系 属性 全局ER模型设计 确定公共实体 局部ER合并 消除冲突 全局优化,六、设计局部ER模式,六、设计局部ER模式,4、关于属性与实体 原则:能作为属性的尽量作为属性 实体与属性的区分准则: 准则1:属性不能再具有需要描述的性质,是不可分的数据项,不能包含其他属性。 准则2:属性不能与其他实
7、体有联系 例1:职工实体一般具有工号、姓名、年龄、职称等。但如果职称与工资、住房标准、福利等挂钩,应该将其看成是实体: 职称(代码、住房、工资、福利) 例2:住院病人的病房号本来可以是病人的属性,但如果病房与医生相联系,那就是实体了。,局部模式设计举例,初步分析系统的对象,根据服务种类分析教师子模块,局部ER图,教师管理子系统,学籍管理子系统,课程管理子系统,需求分析: 1、教师由某个系聘用 2、学院设置了若干个系 3、每个学院有一个院长 4、每位教师都有职称,每个职称有不同的工作量 5、各个系可以承接项目,项目有负责人 6、教师可以参加项目,其他局部模式,局部ER图,其它局部模式,七、设计全
8、局 ER模式,1、确定公共实体:合并的基础 同名实体 相同键的实体,2、合并 方法:一次性合并与两两合并 优先合并有联系的局部ER 从公共实体开始合并,1,教室,M,1,教科书,教师,担任,课程,系,开设,N,1,学生,选修,N,MN,上课,P,N,七、设计全局 ER模式,(1)属性冲突 :如,重量单位有的用公斤,有的用克。 (2)结构冲突 : 同一对象在不同应用中的不同抽象 ; 属性变为实体或把实体变为属性,使同一对象具有 相同的抽象。 同一实体在不同局部ER图中属性的个数或次序不同 ; 合并且设计次序 实体之间的联系在不同的局部ER图中呈现不同的类型 根据语义进行调整 (3)命名冲突 :属
9、性名、实体名、联系名之间存在同名异义或异名同义冲突,八、全局ER模式的优化,1、实体类型的合并 1:1联系的两个实体类型 具有相同键的实体类型 2、冗余属性的消除 通过其他属性可以推出的属性,往往是合并后产生的。 非键属性同时出现在几个实体中 使用上的权衡,完整性约束来保证 冗余联系的消除:利用规范化理论中函数依赖的概念消除冗余联系,例子:三个局部ER图合并成一个ER图,5.4 逻辑设计,1、目标:将概念模式转换为DBMS所支持的逻辑模式 2、逻辑设计步骤初始模式的形成:将全局ER模式转换成初始关系模式 规范化处理数据模型的优化 确定规范的级别:3NF,BCNF 实施规范化处理:关系分解(保持
10、依赖、无损连接),一、E-R图向关系模型的转换 1、转换要解决的问题: 实体和实体间的联系转换为关系模式 确定关系模式的属性和码,5.4 逻辑设计,5.4 ER模型到关系模型的转换,把E-R图转换为关系模型可遵循如下原则 : (1)对于ER图中每个实体型,都应转换为一个关系,该关系应包括对应实体的全部属性,并应根据关系所表达的语义确定哪个属性或哪几个属性组作为“主关键字”,主关键字用来标识实体。实体的属性就是关系的属性,实体的码就是关系的码。 (2)对于ER图中的联系,情况比较复杂,要根据实体联系方式的不同,采取不同的手段加以实现。下面着重讨论联系的转换方法。,3、二元联系类型的转换 若实体间
11、联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键和联系类型的属性。 若实体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合 4、一元联系类型的转换:同二元联系 5、三元联系类型的转换 总是将三元联系类型转换成关系模式,其属性为三端实体类型的键加上联系类型的属性,而键为三端实体键的组合。 具有相同码的关系模式可合并。目的是减少系统中的关系个数,5.4 逻辑设计,ER模型到关系模型的转换实
12、例,系(系号,系名,电话),教师(工号,姓名,性别,年龄,系号,聘期),学生(学号,姓名,年龄,性别),课程(课程号,课程名,教师名),选课(学号,课程号,成绩),ER模型到关系模型的转换实例,零件(零件号,零件名,规格) 组成(零件号,子零件号,数量),仓库(仓库号,仓库名,地址) 商店(商店号,商店名) 商品(商品号,商品名) 进货(商店号,商品名,仓库号,日期,数量),例1 库存销售信息管理系统的ER模型及转换,库存系统ER图,实体,二、数据模型的优化: 1、确定数据依赖:按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间数据依赖。 如学生关
13、系模式中存在数据依赖: 学号姓名,学号性别,学号年龄,学号所在系 选修关系模式中存在数据依赖:(学号,课程号)成绩 课程关系模式内部存在数据依赖: 课程号课程名,课程号学分 学生与选修关系模式的学号之间存在数据依赖: 学生.学号选修.学号 2、对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。,5.4 逻辑设计,3、关系规范化 并不是规范化程度越高的关系就越优:联接运算引起 一般说来,第三范式就足够了。例如: 学生成绩(学号,英语,数学,语文,平均分) 函数依赖:学号英语,学号数学,学号语文,学号平均分,(英语, 数学, 语文)平均分。 显然有学号(英语,数学,语文),存在传递函数信赖,是2NF关系。虽然平均成绩可以由其他属性推算出来,但如果应用中需要经常查询学生的平均成绩,为提高效率,仍然可保留该冗余数据,对关系模式不再做进一步分解。,4、对关系模式进行必要的分解或合并,以提高数据操作的效率和存储空间的利用率。常用的分解方法是: 水平分解:把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系,以提高系统的效率。根据“80/20原则” , 垂直分解:把关系模式R的属性分解为若干子集合,形成若干子关系模式。分解原则是经常在一起使用的属性从R中分解出来形成一个子关系模式。 垂直分解必须确保无损连接性和保持函数依赖。,下课了。,休息。,研 究,