数据库设计与实现ER转换为关系模式.ppt

上传人:本田雅阁 文档编号:2156931 上传时间:2019-02-23 格式:PPT 页数:58 大小:1.41MB
返回 下载 相关 举报
数据库设计与实现ER转换为关系模式.ppt_第1页
第1页 / 共58页
数据库设计与实现ER转换为关系模式.ppt_第2页
第2页 / 共58页
数据库设计与实现ER转换为关系模式.ppt_第3页
第3页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库设计与实现ER转换为关系模式.ppt》由会员分享,可在线阅读,更多相关《数据库设计与实现ER转换为关系模式.ppt(58页珍藏版)》请在三一文库上搜索。

1、2019年2月23日星期六,1,数据库系统概念-E-R,4从E-R 图到数据库模式设计,根据E-R建立数据库模式的步骤 1、E-R图转换为表并进行必要的合并 本步骤可以按照机械方法完成 一个良好的E-R图,完成本步转换和合并得到的结果,已经是比较理想的数据库模式 (尽管还有人工进一步优化的余地) 2、优化 本步无具体可行的机械方法 主要依靠设计人员的经验和能力,2019年2月23日星期六,2,数据库系统概念-E-R,4 4从E-R 图到数据库模式设计,本章主要内容 4.1E-R图到表的基本转化方法 暂时只考虑基本E-R图的转换,且只考虑简单、单值属性 4.2表合并方法讨论 讨论联系转化的表能否

2、及如何与其它表合并 4.3E-R复杂要素转化为表的方法 复杂属性处理 弱实体处理 继承转化为表 聚集转化为表 4.4关于表模式进一步优化问题的讨论 4.5其它逻辑模式设计问题讨论,2019年2月23日星期六,3,数据库系统概念-E-R,4.1 E-R 到表的基本转化方法,实体转化为表 E-R图的每个实体转化成一个表 实体的属性转化为表的属性 (暂时只考虑简单、单值属性) 实体的主码转化为表的主码,2019年2月23日星期六,4,数据库系统概念-E-R,4.1 E-R 到表的基本转化方法,联系转化为表 每个联系转化成一个表 联系转化成表的属性 参与联系实体的主码并集pk(e1)pk(e2)以及联

3、系的属性a1,a2共同构成表的属性 pk(e1)pk(e2)a1,a2 在联系转化成的表中,属性的非空限制: 实体主码形成的属性pk(e1)pk(e2) 均应not null 只有在联系转化成的表与其他表合并后,才可能允许null,2019年2月23日星期六,5,数据库系统概念-E-R,4.1 E-R 到表的基本转化方法,联系转化成的表的码: 参与联系实体的主码并集pk(e1)pk(e2) 是联系转化成的表的超码 多对一联系,上述超码去掉一个“一”端实体的主码后,是联系表的候选码 多对多联系,上述超码是联系表的候选码,2019年2月23日星期六,6,数据库系统概念-E-R,4.1 E-R到表的

4、基本转化方法示例,E-R图: 实体转化成的表: Dept(dno,dname) Student(sno,sname) Course(cno,cname) 联系转化成的表: SD(sno,dno,time) /dno非空 SC(sno,cno,score),2019年2月23日星期六,7,数据库系统概念-E-R,4.1 练习,请将下述E-R转化为关系模式: 注意指明各表的主码,2019年2月23日星期六,8,数据库系统概念-E-R,4.1 练习,将E-R转化为关系模式参考答案 实体转化成的表 Teacher(tno,name) class(classno,classname) Course(cn

5、o,cname) 联系转化成的表 tc(tno,cno) tcc(classno,cno,tno),2019年2月23日星期六,9,数据库系统概念-E-R,4.2表的合并,主要讨论联系转化的表与相关实体转化的表的合并问题 按照联系类别分别讨论能否合并、如何合并 二元m:1联系 二元1:1联系 二元m:n联系 多元联系,2019年2月23日星期六,10,数据库系统概念-E-R,4.2表的合并,二元多对一联系: 联系转化的表可以和“多端” 实体转化成的表进行合并 示例: E-R图 转化成的表 Dept(dno,dname) Student(sno,sname) SD(sno,dno,time) /

6、dno非空 表的合并 Student+SD Student(sno,sname,dno,time)/dno可以为空,2019年2月23日星期六,11,数据库系统概念-E-R,4.2表的合并,二元一对一联系: 联系转化的表可以任一端实体转化成的表进行合并 二元一对一联系不能导致相关实体转化成的表合并 示例: E-R图如右所示 转化成的表 Dept(dno,dname) President(pid,name) Manage(dno,pid) /dno,pid均可作主码,假设选dno作主码 表的合并 可以:Dept+Manage Dept(dno,dname,pid) 或者:President+Ma

7、nagePresident(pid,name,dno) 不能进行下述合并: Dept+Manage+President ?(不能接受的合并),2019年2月23日星期六,12,数据库系统概念-E-R,4.2表的合并,二元m:n联系 联系转化的表和实体转化的表不能进行合并 示例: E-R图 转化成的表 Student(sno,sname) Course(cno,cname) SC(sno,cno,score) 无法进行表的合并,2019年2月23日星期六,13,数据库系统概念-E-R,4.2表的合并,多元联系 联系转化的表和实体转化的表不能进行合并 即便是m:n:1,其转化的表和也不能进行合并

8、示例: E-R图(省略了属性): 转化成的表: Class(classno,classname) Teacher(tno,tname) Course(courseno,coursename) TCC(tno,classno,courseno) /P.K.=(classno,tno)或(classno,courseno) 无法进行表的合并,2019年2月23日星期六,14,数据库系统概念-E-R,4.2表的合并:总结,联系转化成的表,和实体转化成的表,可以机械地按照下述原则合并: 二元多对一联系: 联系转化的表可以和“多端” 实体转化成的表进行合并 二元一对一联系: 联系转化的表可以任一端实体转

9、化成的表进行合并 二元一对一联系不能导致相关实体转化成的表合并 二元m:n联系: 联系转化的表和实体转化的表不能进行合并 多元联系: 联系转化的表和实体转化的表不能进行合并 即便是m:n:1,其转化的表和也不能进行合并 实体转化成的表,相互之间不能机械合并 联系转化成的表,相互之间不能机械合并,2019年2月23日星期六,15,数据库系统概念-E-R,4.2 E-R图表以及表的合并:示例,教务系统概念模型如下图所示 请将E-R图转化为表并进行必要的合并:,4.2 E-R图表以及表的合并:示例,将E-R图转化为表: 实体转化成表 d(dno,dname) c(cno,cname,property

10、) s(sno,sname,age,sex) t(tno,tname,age,sex) 联系转化为表 sd(sno,dno) td(tno,dno) sc(sno,cno,score) tc(tno,cno,time),隶属,学生,学习,score,age,院系,隶属,教师,课程,讲授,dno,dname,tno,tname,cno,cname,sex,age,sno,sname,sex,property,16,4.2 E-R图表以及表的合并:示例,表的合并 s+sds(sno,sname,age,sex,dno) t +td t(tno, tname,age,sex,dno) 合并表后的关系

11、模式 d(dno,dname) c(cno,cname,property) s(sno,sname,age,sex,dno) t(tno,tname,age,sex,dno) sc(sno,cno,score) tc(tno,cno) 关系模式图如图所示,17,4.2 E-R图表以及表的合并:示例,教务系统数据概念模型与逻辑模型对比 概念模型主要用E-R图刻画,用于需求分析 逻辑模型主要由关系模式图刻画,用于模式设计,18,2019年2月23日星期六,19,数据库系统概念-E-R,4.2 练习一,请将E-R图转化为表并进行必要的合并: 假设每个实体都有属性id和name 假设供应联系有属性qu

12、antity,其它联系无属性,2019年2月23日星期六,20,数据库系统概念-E-R,4.2 练习一:参考答案,E-R图转化为表 实体转化成表 project(pid,pname) employee(eid,ename) supplier(sid,sname) component(cid,cname) warehouse(wid,wname) 联系转化为表 participate(pid,eid) lead(eid,leid) /leid非空 supply(sid,pid,cid,quantity) produce(sid,cid) store(cid,wid) manager(eid,wi

13、d) 表的合并 employee+leademployee(eid,ename,leid)/leid可以为空,4.2 练习一:关系模型图,2019年2月23日星期六,21,数据库系统概念-E-R,2019年2月23日星期六,22,数据库系统概念-E-R,4.2 练习二,将如下E-R图转化为表并进行必要的合并,请给出: 1.结果关系模式 2.关系模式图,2019年2月23日星期六,23,数据库系统概念-E-R,4.3E-R图其它要素转化为表的方法,E-R图其它要素转化为表的方法 复杂属性处理 弱实体处理 继承转化为表 聚集转化为表,2019年2月23日星期六,24,数据库系统概念-E-R,4.3

14、.1复杂属性表,多值属性 每个多值属性转化为一个表 表主码: 实体主码+多值属性分辨符 例如:S-telno(sno,tno) 复合属性 只保留叶节点属性 派生属性 一般表模式中不保留派生属性 S(sno,sname,birthday,city,street) 如果考虑使用频率、查询效率等因素,可以保留派生属性,尽管本质上派生属性是表的冗余属性,2019年2月23日星期六,25,数据库系统概念-E-R,4.3.1复杂属性表,示例,学生实体转化为表: 所有单值属性转化为一个表 S(sno,sname,birthday,city,street) 每个多值属性转化为一个表 S-telno(sno,t

15、no) S-relative(sno,pid,relation,name) 思考: S-relative中,pid属性是否可以单独构成主码? 不同多值属性转化的表可以合并吗?,2019年2月23日星期六,26,数据库系统概念-E-R,4.3.2弱实体表,弱实体转化为表 弱实体象普通实体一样向表转化,只是在弱实体转化的表中,增加属主实体的主码作为表属性 弱实体转化成表的主码: 属主实体的主码+弱实体的分辨符 标识性联系不转化成表,不作处理,4.3.2弱实体表:示例,示例: 请将如下所示银行帐户E-R图转化为表,4.3.2弱实体表:示例,将E-R图转化为表: 实体转化成表 acc(accno,ac

16、cname) emp(eno,ename) 弱实体转化成表 trans(accno,lineno,date,dealnum) rual(accno,date,accrual) 标识性联系不转化成表 联系转化成表 tr(accno,lineno,date) te(accno,lineno,eno) 表合并 trans+tr+te =trans(accno,lineno,transdate,dealnum,rualdate,eno),4.3.2弱实体vs强实体,练习: 对上述银行账户,如果在E-R中不使用弱实体,而是通过给交易记录、利息记录增加标识属性是成为强实体,试给出相应E-R图 试将上述E-

17、R图转化为表并进行必要的合并 体会、比较两种E-R图对应概念模型及逻辑模型的差异,你更喜欢哪一种?,4.3.2强实体&表:参考方案,将E-R图转化为表: 实体转化成表 acc(accno,accname) trans(tid,lineno,date,dealnum) rual(rid,date,accrual) emp(eno,ename) 联系转化成表 ta(tid,accno) ra(rid,accno) tr(tid,rid) te(tid,eno) 表合并 trans+ta+tr+te=trans(tid,accno,lineno,date,dealnum,rid,eno) rual+

18、ra=rual(rid,accno,date,accrual),4.3.2弱实体vs强实体,弱实体方案转化的逻辑模式 acc(accno,accname) emp(eno,ename) trans(accno,lineno,transdate,dealnum,rualdate,eno) rual(accno,date,accrual) 强实体方案转化的逻辑模式: acc(accno,accname) emp(eno,ename) trans(tid,accno,lineno,date,dealnum,rid,eno) rual(rid,accno,date,accrual) 课堂练习: 请分别

19、给出两种逻辑模式的模式图 试述你更喜欢哪种方案?,2019年2月23日星期六,32,数据库系统概念-E-R,4.3.3继承关系表,继承关系的三种处理方案 父类、子类分别建表 p(pid,name) s(pid,sno,dept) t(pid,tno,dept) 父类并入子类,只为子类建表 s(pid,name,sno,dept) t(pid,name,tno,dept) 子类并入父类,只为父类建表 p(pid,name,sno,s-dept,tno,t-dept) 比较: 三种方案各有优缺点,都可以接受 设计人员根据具体情况,综合评定选择确定最终方案 讨论:针对这个示例,你更愿意选择哪个方案?

20、,4.3.3练习与讨论,学校系统概念模型如下E-R图所示: 请按照继承关系三种处理方案分别转化成表 比较各方案优缺点,你更喜欢哪种方案?,4.3.3练习与讨论:参考答案一,父类、子类分别建表 实体转化成表 person(pid,name,age) student(pid,sno) teacher(pid,tno) book(bno,bname) course(cno,cname) 联系转化成表 pb(pid,bno) tsc(t-pid,s-pid,cno) tc(pid,cno) 没有联系转化的表需要和实体转化的表合并,4.3.3练习与讨论:参考答案2-1,父类并入子类,只为子类建表2-1

21、实体转化成表 student(pid,sno,name,age) teacher(pid,tno,name,age) book(bno,bname) course(cno,cname) 联系转化成表 pb(pid,bno)/pid参照谁? tsc(t-pid,s-pid,cno) tc(pid,cno) 没有联系转化的表需要和实体转化的表合并,4.3.3练习与讨论:参考答案2-2,父类并入子类,只为子类建表2-2 实体转化成表 student(pid,sno,name,age) teacher(pid,tno,name,age) book(bno,bname) course(cno,cname

22、) 联系转化成表 sb(pid,bno) tb(pid,bno) tsc(t-pid,s-pid,cno) tc(pid,cno) 没有联系转化的表需要和实体转化的表合并,4.3.3练习与讨论:参考答案三,子类并入父类,只为父类建表 实体转化成表 person(pid,name,age,sno,tno) book(bno,bname) course(cno,cname) 联系转化成表 pb(pid,bno) tsc(t-pid,s-pid,cno) tc(pid,cno) 没有联系转化的表需要和实体转化的表合并,4.3.3练习与讨论,对学校系统: 比较继承关系几种处理方案优缺点 你更喜欢哪种方

23、案?,2019年2月23日星期六,39,数据库系统概念-E-R,4.3.4聚集表,聚集的处理方案 联系及相关实体聚集成的高层实体,核心是被聚集的“联系” 聚集成的高层实体本身不转化成表 高层实体参与的联系进行正常的表转化,高层实体的主码使用聚集的“核心联系”的主码代替 示例,E-R图转化为表 custom(),bank(),project() order(cid,pid) guarantee(cid,pid,bid),2019年2月23日星期六,40,数据库系统概念-E-R,4.3.4聚集表,思考,对E-R图所示概念模型: 不使用聚集,如何绘制E-R图? 相应E-R图如何转成模式? 最终得到的

24、逻辑模式相同吗?哪个更好?,2019年2月23日星期六,41,数据库系统概念-E-R,4.3.4聚集表,方案二:联系实体化 custom(),bank(),project() order(oid,cid,pid,) guarantee(oid,bid ) 方案三:看作两种不同的联系 custom(),bank(),project() order(cid,pid) Guaranteed-order(cid,pid,bid) 思考:哪种方案更好?,4.3.4练习,2019年2月23日星期六,42,请建立排课系统E-R图,并转换成表:,4.3.4练习,参考方案(一):使用聚集 Class(class

25、no,) Course(cno,) Teacher(tno,) Givclass (tno,cno,classno,classroom) Givclass_time (tno,cno,classno,time) Assistant (assistanttno,tno,cno,classno),2019年2月23日星期六,43,4.3.4练习,2019年2月23日星期六,44,参考方案(二):联系实体化 Class(classno,) Course(cno,) Teacher(tno,) Givclassitem (gno,teacher_tno,cno,classroom) /合并了讲授、关于

26、两个联系 Givclassitem_time(gno,time) Givclass(gno,classno) Assistant(assistant_tno,gno),4.3.4练习,2019年2月23日星期六,45,参考方案(三):看作两个不同的联系 Class(classno,) Course(cno,) Teacher(tno,) Givclass(tno,cno,classno,classroom) Givclass_time(tno,cno,classno,time) Givclasswithassistant (tno,cno,classno,assisttno,classroom

27、) /独立于givclass联系 /需要有classroom属性 Givclasswithassistant_time (tno,cno,classno,assisttno,time) 试比较方案一二三,你认为哪种方案更合适?,2019年2月23日星期六,46,数据库系统概念-E-R,4.4关系模式优化,逻辑模型设计步骤 1、E-R图转换为表并进行必要合并 本步可以按照机械方法完成 2、逻辑模型优化 本步无具体可行的机械方法 主要依靠设计人员的经验和能力 逻辑模型优化 本章讨论几个优化示例 请通过示例,体会设计和优化的基本思路,2019年2月23日星期六,47,数据库系统概念-E-R,4.4关

28、系模式优化:示例一,示例:请将E-R图转化为表并进行必要的合并 假设每个实体都有属性no和name 思考: 转化的结果还有进一步优化的余地吗? 如果有优化余地,如何优化?利弊如何?,2019年2月23日星期六,48,数据库系统概念-E-R,4.4关系模式优化:示例一,E-R图转化为表: S(sno,sname) T(tno,tname) C(cno,cname) SCT(sno,cno,tno) TC(tno,cno)/cno:not null 合并 T+TC=T(tno,tname,cno)/cno可以为空 思考: 第一种改进思路 既然tno cno,则SCT必有冗余数据 能否将SCT(sn

29、o,cno,tno)简化为SCT(sno,tno)? 第二种改进思路 既然SCT已经包含TC关系 能否简单省略TC关系?,2019年2月23日星期六,49,数据库系统概念-E-R,4.4关系模式优化:示例一,请比较三种方案:(忽略了实体转化的表) E-R图转化成的关系模式: SCT(sno,cno,tno) TC(tno,cno) 将SCT简化为(sno,tno): SCT(sno,tno) TC(tno,cno) 简单省略TC关系: SCT(sno,cno,tno) 思考: 哪个方案更合适?如果你是设计员,你会选择哪个方案? 它的所有指标都是最好的吗? 请体会:设计是在矛盾的指标中,评价选择

30、最合适的方案,2019年2月23日星期六,50,数据库系统概念-E-R,4.4 关系模式优化,关系模式设计方案的评价标准 数据表示符合自然结构 清晰、简洁、易于理解 数据冗余小 数据访问效率高(查询效率、修改效率) 结构易于扩展 关系模式设计 设计方案的评价标准中,指标相互之间存在矛盾 设计是在矛盾的指标中,评价选择最合适的方案 工程思想和方法、设计人员的经验和能力:对模式设计都是重要的 E-R图转换为表 vs 模式优化设计 一个良好的E-R图,转换为表并进行必要的合并,得到的结果已经是比较理想的数据库模式 不排除还有人工进一步优化的余地 进一步的优化必须审慎,必须综合评价优化的优缺点,201

31、9年2月23日星期六,51,数据库系统概念-E-R,4.4关系模式优化:示例二,针对E-R图表示的概念模型 请在不同设计方案中,评价选择最合适的方案 E-R图转化成的关系模式: S(sno,sname) C(cno,cname) SC(sno,cno,score) 合并为一个表: SC(sno,sname,cno,cname,score) 对SC扩展: S(sno,sname) C(cno,cname) SC(sno,sname,cno,cname,score) 思考: 比较各方案的优缺点 哪个方案更合适?如果你是设计员,你会选择哪个方案? 没有标准答案、不能简单以对错进行评论,4.4关系模式

32、优化:示例三,针对E-R图所示概念模型,父类子类分别建表: person(pid,name,age) student(pid,sno) teacher(pid,tno) book(bno,bname) course(cno,cname) pb(pid,bno) tsc(t-pid,s-pid,cno) tc(pid,cno) 优化思路: 考虑到查询sno时经常查询name,扩展student;同理扩展teacher: student(pid,sno,name) teacher(pid,tno,name) 请比较扩展方案的优缺点; 思考:子表是否应该扩展父类属性?应该扩展多少属性?,52,201

33、9年2月23日星期六,53,数据库系统概念-关系数据库设计,4.5关系模式设计的其它问题讨论,本节讨论几个关系模式设计的常见问题 按时间单独建表问题 关系设计成交叉表 时态数据建模问题,2019年2月23日星期六,54,数据库系统概念-关系数据库设计,4.5其它设计问题(一),按时间因素单独建表 如常见的按照年度单独见表方式 问题分析 模式不稳定,不符合关系模式设计的基本原则 是相当差的设计,应当避免,2019年2月23日星期六,55,数据库系统概念-关系数据库设计,4.5其它设计问题(一),按时间因素单独建表问题改进: 将时间因素作为属性加到关系中 关系的主码:原主码+时间因素 思考:这样改

34、进的优缺点?,2019年2月23日星期六,56,数据库系统概念-关系数据库设计,4.5其它设计问题(二),关系设计成交叉表 交叉表:按某一维度数据建列 例如:将月份、课程等数据设计为列 问题分析 交叉表是很好的数据输出格式,但不是可取的表模式设计 把二维表的数据转化成交叉表格式输出,是应用程序的任务 交叉表不符合关系模式设计的基本原则,应当避免,2019年2月23日星期六,57,数据库系统概念-关系数据库设计,4.5其它设计问题(二),关系设计成交叉表问题改进 将数据维度改为列,即作为属性加到关系中 关系的主码:原主码+增加的数据维度属性 数据库存储数据,不存储数据的展现形式,2019年2月23日星期六,58,数据库系统概念-关系数据库设计,4.5其它设计问题(三),时态数据建模设计 管理历史数据,常常将时间段与数据相关联 时态数据:与时间段相关联的数据 快照:特定时间点上的数据 时态数据的常用设计方法 1、首先忽略时态因素完成数据库设计 2、给需要管理历史数据的关系增加时间相关属性 begin-time,end-time 3、变更增加时态因素表的主码:主码增加属性begin-time,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1