《数据库设计与实现-ER转换为关系模式.ppt》由会员分享,可在线阅读,更多相关《数据库设计与实现-ER转换为关系模式.ppt(58页珍藏版)》请在三一办公上搜索。
1、2023年9月11日星期一,1,数据库系统概念-E-R,4从E-R 图到数据库模式设计,根据E-R建立数据库模式的步骤1、E-R图转换为表并进行必要的合并本步骤可以按照机械方法完成一个良好的E-R图,完成本步转换和合并得到的结果,已经是比较理想的数据库模式(尽管还有人工进一步优化的余地)2、优化本步无具体可行的机械方法主要依靠设计人员的经验和能力,2023年9月11日星期一,2,数据库系统概念-E-R,4 4从E-R 图到数据库模式设计,本章主要内容4.1E-R图到表的基本转化方法暂时只考虑基本E-R图的转换,且只考虑简单、单值属性4.2表合并方法讨论讨论联系转化的表能否及如何与其它表合并4.
2、3E-R复杂要素转化为表的方法复杂属性处理弱实体处理继承转化为表聚集转化为表4.4关于表模式进一步优化问题的讨论4.5其它逻辑模式设计问题讨论,2023年9月11日星期一,3,数据库系统概念-E-R,4.1 E-R 到表的基本转化方法,实体转化为表E-R图的每个实体转化成一个表实体的属性转化为表的属性(暂时只考虑简单、单值属性)实体的主码转化为表的主码,2023年9月11日星期一,4,数据库系统概念-E-R,4.1 E-R 到表的基本转化方法,联系转化为表每个联系转化成一个表联系转化成表的属性参与联系实体的主码并集pk(e1)pk(e2)以及联系的属性a1,a2共同构成表的属性pk(e1)pk
3、(e2)a1,a2在联系转化成的表中,属性的非空限制:实体主码形成的属性pk(e1)pk(e2)均应not null只有在联系转化成的表与其他表合并后,才可能允许null,2023年9月11日星期一,5,数据库系统概念-E-R,4.1 E-R 到表的基本转化方法,联系转化成的表的码:参与联系实体的主码并集pk(e1)pk(e2)是联系转化成的表的超码多对一联系,上述超码去掉一个“一”端实体的主码后,是联系表的候选码多对多联系,上述超码是联系表的候选码,2023年9月11日星期一,6,数据库系统概念-E-R,4.1 E-R到表的基本转化方法示例,E-R图:实体转化成的表:Dept(dno,dna
4、me)Student(sno,sname)Course(cno,cname)联系转化成的表:SD(sno,dno,time)/dno非空SC(sno,cno,score),2023年9月11日星期一,7,数据库系统概念-E-R,4.1 练习,请将下述E-R转化为关系模式:注意指明各表的主码,2023年9月11日星期一,8,数据库系统概念-E-R,4.1 练习,将E-R转化为关系模式参考答案实体转化成的表Teacher(tno,name)class(classno,classname)Course(cno,cname)联系转化成的表tc(tno,cno)tcc(classno,cno,tno),
5、2023年9月11日星期一,9,数据库系统概念-E-R,4.2表的合并,主要讨论联系转化的表与相关实体转化的表的合并问题按照联系类别分别讨论能否合并、如何合并二元m:1联系二元1:1联系二元m:n联系多元联系,2023年9月11日星期一,10,数据库系统概念-E-R,4.2表的合并,二元多对一联系:联系转化的表可以和“多端”实体转化成的表进行合并示例:E-R图转化成的表Dept(dno,dname)Student(sno,sname)SD(sno,dno,time)/dno非空表的合并Student+SD Student(sno,sname,dno,time)/dno可以为空,2023年9月1
6、1日星期一,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+ManagePresident(pid,name,dno)不能进行下述合并:Dept+Manage+President?(不能接受的合并),2023年9月11日
7、星期一,12,数据库系统概念-E-R,4.2表的合并,二元m:n联系联系转化的表和实体转化的表不能进行合并示例:E-R图转化成的表Student(sno,sname)Course(cno,cname)SC(sno,cno,score)无法进行表的合并,2023年9月11日星期一,13,数据库系统概念-E-R,4.2表的合并,多元联系联系转化的表和实体转化的表不能进行合并即便是m:n:1,其转化的表和也不能进行合并示例:E-R图(省略了属性):转化成的表:Class(classno,classname)Teacher(tno,tname)Course(courseno,coursename)TC
8、C(tno,classno,courseno)/P.K.=(classno,tno)或(classno,courseno)无法进行表的合并,2023年9月11日星期一,14,数据库系统概念-E-R,4.2表的合并:总结,联系转化成的表,和实体转化成的表,可以机械地按照下述原则合并:二元多对一联系:联系转化的表可以和“多端”实体转化成的表进行合并二元一对一联系:联系转化的表可以任一端实体转化成的表进行合并二元一对一联系不能导致相关实体转化成的表合并二元m:n联系:联系转化的表和实体转化的表不能进行合并多元联系:联系转化的表和实体转化的表不能进行合并即便是m:n:1,其转化的表和也不能进行合并实体
9、转化成的表,相互之间不能机械合并联系转化成的表,相互之间不能机械合并,2023年9月11日星期一,15,数据库系统概念-E-R,4.2 E-R图表以及表的合并:示例,教务系统概念模型如下图所示请将E-R图转化为表并进行必要的合并:,4.2 E-R图表以及表的合并:示例,将E-R图转化为表:实体转化成表d(dno,dname)c(cno,cname,property)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
10、,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)合并表后的关系模式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
11、-R图表以及表的合并:示例,教务系统数据概念模型与逻辑模型对比概念模型主要用E-R图刻画,用于需求分析逻辑模型主要由关系模式图刻画,用于模式设计,18,2023年9月11日星期一,19,数据库系统概念-E-R,4.2 练习一,请将E-R图转化为表并进行必要的合并:假设每个实体都有属性id和name假设供应联系有属性quantity,其它联系无属性,2023年9月11日星期一,20,数据库系统概念-E-R,4.2 练习一:参考答案,E-R图转化为表实体转化成表project(pid,pname)employee(eid,ename)supplier(sid,sname)component(cid
12、,cname)warehouse(wid,wname)联系转化为表participate(pid,eid)lead(eid,leid)/leid非空supply(sid,pid,cid,quantity)produce(sid,cid)store(cid,wid)manager(eid,wid)表的合并employee+leademployee(eid,ename,leid)/leid可以为空,4.2 练习一:关系模型图,2023年9月11日星期一,21,数据库系统概念-E-R,2023年9月11日星期一,22,数据库系统概念-E-R,4.2 练习二,将如下E-R图转化为表并进行必要的合并,请
13、给出:1.结果关系模式2.关系模式图,2023年9月11日星期一,23,数据库系统概念-E-R,4.3E-R图其它要素转化为表的方法,E-R图其它要素转化为表的方法复杂属性处理弱实体处理继承转化为表聚集转化为表,2023年9月11日星期一,24,数据库系统概念-E-R,复杂属性表,多值属性每个多值属性转化为一个表表主码:实体主码+多值属性分辨符例如:S-telno(sno,tno)复合属性只保留叶节点属性派生属性一般表模式中不保留派生属性S(sno,sname,birthday,city,street)如果考虑使用频率、查询效率等因素,可以保留派生属性,尽管本质上派生属性是表的冗余属性,202
14、3年9月11日星期一,25,数据库系统概念-E-R,复杂属性表,示例,学生实体转化为表:所有单值属性转化为一个表S(sno,sname,birthday,city,street)每个多值属性转化为一个表S-telno(sno,tno)S-relative(sno,pid,relation,name)思考:S-relative中,pid属性是否可以单独构成主码?不同多值属性转化的表可以合并吗?,2023年9月11日星期一,26,数据库系统概念-E-R,弱实体表,弱实体转化为表弱实体象普通实体一样向表转化,只是在弱实体转化的表中,增加属主实体的主码作为表属性弱实体转化成表的主码:属主实体的主码+弱
15、实体的分辨符标识性联系不转化成表,不作处理,弱实体表:示例,示例:请将如下所示银行帐户E-R图转化为表,弱实体表:示例,将E-R图转化为表:实体转化成表acc(accno,accname)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),弱实体vs强
16、实体,练习:对上述银行账户,如果在E-R中不使用弱实体,而是通过给交易记录、利息记录增加标识属性是成为强实体,试给出相应E-R图试将上述E-R图转化为表并进行必要的合并体会、比较两种E-R图对应概念模型及逻辑模型的差异,你更喜欢哪一种?,强实体&表:参考方案,将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+t
17、e=trans(tid,accno,lineno,date,dealnum,rid,eno)rual+ra=rual(rid,accno,date,accrual),弱实体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)r
18、ual(rid,accno,date,accrual)课堂练习:请分别给出两种逻辑模式的模式图试述你更喜欢哪种方案?,2023年9月11日星期一,32,数据库系统概念-E-R,继承关系表,继承关系的三种处理方案父类、子类分别建表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)比较:三种方案各有优缺点,都可以接受设计人员根据具体情况,综合评定选择确定最终方案讨论:针对
19、这个示例,你更愿意选择哪个方案?,练习与讨论,学校系统概念模型如下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)没有联系转化的表需要和实体转化的表合并,练习与讨论:参考答案2-1,父类并入子类,只为子类建表2-1实体转化成表student
20、(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)没有联系转化的表需要和实体转化的表合并,练习与讨论:参考答案2-2,父类并入子类,只为子类建表2-2实体转化成表student(pid,sno,name,age)teacher(pid,tno,name,age)book(bno,bname)course(cno,cname)联系转化成表sb(pid,bno)tb(pid,bno)tsc
21、(t-pid,s-pid,cno)tc(pid,cno)没有联系转化的表需要和实体转化的表合并,练习与讨论:参考答案三,子类并入父类,只为父类建表实体转化成表person(pid,name,age,sno,tno)book(bno,bname)course(cno,cname)联系转化成表pb(pid,bno)tsc(t-pid,s-pid,cno)tc(pid,cno)没有联系转化的表需要和实体转化的表合并,练习与讨论,对学校系统:比较继承关系几种处理方案优缺点你更喜欢哪种方案?,2023年9月11日星期一,39,数据库系统概念-E-R,聚集表,聚集的处理方案联系及相关实体聚集成的高层实体,
22、核心是被聚集的“联系”聚集成的高层实体本身不转化成表高层实体参与的联系进行正常的表转化,高层实体的主码使用聚集的“核心联系”的主码代替示例,E-R图转化为表custom(),bank(),project()order(cid,pid)guarantee(cid,pid,bid),2023年9月11日星期一,40,数据库系统概念-E-R,聚集表,思考,对E-R图所示概念模型:不使用聚集,如何绘制E-R图?相应E-R图如何转成模式?最终得到的逻辑模式相同吗?哪个更好?,2023年9月11日星期一,41,数据库系统概念-E-R,聚集表,方案二:联系实体化custom(),bank(),project
23、()order(oid,cid,pid,)guarantee(oid,bid)方案三:看作两种不同的联系custom(),bank(),project()order(cid,pid)Guaranteed-order(cid,pid,bid)思考:哪种方案更好?,练习,2023年9月11日星期一,42,请建立排课系统E-R图,并转换成表:,练习,参考方案(一):使用聚集Class(classno,)Course(cno,)Teacher(tno,)Givclass(tno,cno,classno,classroom)Givclass_time(tno,cno,classno,time)Assis
24、tant(assistanttno,tno,cno,classno),2023年9月11日星期一,43,练习,2023年9月11日星期一,44,参考方案(二):联系实体化Class(classno,)Course(cno,)Teacher(tno,)Givclassitem(gno,teacher_tno,cno,classroom)/合并了讲授、关于两个联系Givclassitem_time(gno,time)Givclass(gno,classno)Assistant(assistant_tno,gno),练习,2023年9月11日星期一,45,参考方案(三):看作两个不同的联系Class
25、(classno,)Course(cno,)Teacher(tno,)Givclass(tno,cno,classno,classroom)Givclass_time(tno,cno,classno,time)Givclasswithassistant(tno,cno,classno,assisttno,classroom)/独立于givclass联系/需要有classroom属性Givclasswithassistant_time(tno,cno,classno,assisttno,time)试比较方案一二三,你认为哪种方案更合适?,2023年9月11日星期一,46,数据库系统概念-E-R,
26、4.4关系模式优化,逻辑模型设计步骤1、E-R图转换为表并进行必要合并本步可以按照机械方法完成2、逻辑模型优化本步无具体可行的机械方法主要依靠设计人员的经验和能力逻辑模型优化本章讨论几个优化示例请通过示例,体会设计和优化的基本思路,2023年9月11日星期一,47,数据库系统概念-E-R,4.4关系模式优化:示例一,示例:请将E-R图转化为表并进行必要的合并假设每个实体都有属性no和name思考:转化的结果还有进一步优化的余地吗?如果有优化余地,如何优化?利弊如何?,2023年9月11日星期一,48,数据库系统概念-E-R,4.4关系模式优化:示例一,E-R图转化为表:S(sno,sname)
27、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(sno,cno,tno)简化为SCT(sno,tno)?第二种改进思路既然SCT已经包含TC关系能否简单省略TC关系?,2023年9月11日星期一,49,数据库系统概念-E-R,4.4关系模式优化:示例一,请比较三种方案:(忽略了实体转化的表)E-R图转化成的关系模式:SCT(sno,cno,tno)TC(tno,cno)将SCT简化
28、为(sno,tno):SCT(sno,tno)TC(tno,cno)简单省略TC关系:SCT(sno,cno,tno)思考:哪个方案更合适?如果你是设计员,你会选择哪个方案?它的所有指标都是最好的吗?请体会:设计是在矛盾的指标中,评价选择最合适的方案,2023年9月11日星期一,50,数据库系统概念-E-R,4.4 关系模式优化,关系模式设计方案的评价标准数据表示符合自然结构清晰、简洁、易于理解数据冗余小数据访问效率高(查询效率、修改效率)结构易于扩展关系模式设计设计方案的评价标准中,指标相互之间存在矛盾设计是在矛盾的指标中,评价选择最合适的方案工程思想和方法、设计人员的经验和能力:对模式设计
29、都是重要的E-R图转换为表 vs 模式优化设计一个良好的E-R图,转换为表并进行必要的合并,得到的结果已经是比较理想的数据库模式不排除还有人工进一步优化的余地进一步的优化必须审慎,必须综合评价优化的优缺点,2023年9月11日星期一,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)S
30、C(sno,sname,cno,cname,score)思考:比较各方案的优缺点哪个方案更合适?如果你是设计员,你会选择哪个方案?没有标准答案、不能简单以对错进行评论,4.4关系模式优化:示例三,针对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(p
31、id,sno,name)teacher(pid,tno,name)请比较扩展方案的优缺点;思考:子表是否应该扩展父类属性?应该扩展多少属性?,52,2023年9月11日星期一,53,数据库系统概念-关系数据库设计,4.5关系模式设计的其它问题讨论,本节讨论几个关系模式设计的常见问题按时间单独建表问题关系设计成交叉表时态数据建模问题,2023年9月11日星期一,54,数据库系统概念-关系数据库设计,4.5其它设计问题(一),按时间因素单独建表如常见的按照年度单独见表方式问题分析模式不稳定,不符合关系模式设计的基本原则是相当差的设计,应当避免,2023年9月11日星期一,55,数据库系统概念-关系
32、数据库设计,4.5其它设计问题(一),按时间因素单独建表问题改进:将时间因素作为属性加到关系中关系的主码:原主码+时间因素思考:这样改进的优缺点?,2023年9月11日星期一,56,数据库系统概念-关系数据库设计,4.5其它设计问题(二),关系设计成交叉表交叉表:按某一维度数据建列例如:将月份、课程等数据设计为列问题分析交叉表是很好的数据输出格式,但不是可取的表模式设计把二维表的数据转化成交叉表格式输出,是应用程序的任务交叉表不符合关系模式设计的基本原则,应当避免,2023年9月11日星期一,57,数据库系统概念-关系数据库设计,4.5其它设计问题(二),关系设计成交叉表问题改进将数据维度改为列,即作为属性加到关系中关系的主码:原主码+增加的数据维度属性数据库存储数据,不存储数据的展现形式,2023年9月11日星期一,58,数据库系统概念-关系数据库设计,4.5其它设计问题(三),时态数据建模设计管理历史数据,常常将时间段与数据相关联时态数据:与时间段相关联的数据快照:特定时间点上的数据时态数据的常用设计方法1、首先忽略时态因素完成数据库设计2、给需要管理历史数据的关系增加时间相关属性begin-time,end-time3、变更增加时态因素表的主码:主码增加属性begin-time,