数据库系统原理-第四章高级数据库模型_第1页
数据库系统原理-第四章高级数据库模型_第2页
数据库系统原理-第四章高级数据库模型_第3页
数据库系统原理-第四章高级数据库模型_第4页
数据库系统原理-第四章高级数据库模型_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章高级数据库模型

4.1E/R模型4.2设计原则4.3E/R模型中的约束4.5从E/R图到关系设计Page1一个新数据库建立过程是从设计阶段开始,提出并回答存储什么信息,信息元素之间如何关联,假定有什么样的约束,诸如键或者参考的完整性,等等。思考高级设计关系数据库模式关系DBMSPage2主要设计方法:E/RUMLODL:将数据库描述为类与对象的集合。Page34.1E/R模型在实体-联系(entity-relationshipmodel,或E/R模型)中,数据的结构用图形化方式表示,即“实体-联系图”。元素类型:实体集属性联系Page44.1.1实体集(1)实体(Entity)

客观存在并可相互区别的事物称为实体,可以是具体的人、事、物或抽象的概念。(2)实体集(EntitySet)

相似实体的集合称为实体集。实体-联系图中,矩形表示实体集。例4.1考虑电影数据库的设计。每个电影是实体,所有电影的集合构成一个实体集。同样,影星是实体,影星的集合也是一个实体集。电影公司是实体,电影公司集合是第三个实体集。Page54.1.2属性实体集中实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。例如,实体集Movies可能有title或length等属性。属性用椭圆表示。Page64.1.3联系现实世界中事物内部或者事物之间的联系,在信息世界中反映为实体集内部或实体集之间的联系。实体集内部的联系通常是指组成实体的各属性之间的联系;实体集之间的联系通常是指不同实体集之间的联系;联系用菱形表示。Page74.1.4实体-联系图E/R图是描述实体集、属性和联系的图示。图中每种元素都用节点表示,并且使用特殊形状的节点来表示特定的类别:实体集:用矩形表示属性:用椭圆表示联系:用菱形表示Page8MoviesStarstitleyearlengthfilmtypenameaddressPage9MoviestitleyearlengthfilmtypeStars-inOwnsStarsStudiosnameaddressnameaddressPage104.1.5E/R图实例数据库实例:用E/R图描述的数据库包含特定的数据。Page114.1.5E/R图实例对每个实体集,数据库实例有一个特定的有限实体集合。实体集中的每个实体对每个属性都有特定的值。连接n个实体集E1,E2,…,En的联系R的一个实例由元组(e1,e2,…,en)的有限集构成,其中每个ei都是从实体集Ei的当前实例中选出。这样的元组集叫做R的联系集。Page124.1.5E/R图实例Movies StarsStarwarsCarriefisherStarwarsMarkHamillMightyducksEmilioEstcvezMightyducksEmilioEstcvezWayne’sworldMikeMeyersPage134.1.6二元E/R联系的多样性实体集A和B的联系多样性:一对一(one-one):实体集中的一个实体最多可以与另一个实体集中的一个实体联系。Page144.1.6二元E/R联系的多样性一对多(one-many):实体集中的一个实体最多可以与另一个实体集中的多个实体联系。Page154.1.6二元E/R联系的多样性多对多(many-many):实体集中的任意一个实体可以与另一个实体集中的多个实体联系。Page164.1.6二元E/R联系的多样性多样性:1.箭头可用来表示E/R图中联系的多样性。2.A到B是多对一联系,箭头指向B。箭头辨明实体集A中每个实体与实体集中的最多一个实体联系。Page174.1.6二元E/R联系的多样性例:假设一个经理只管理一家电影公司,一家电影公司只有一个经理,那么经理和电影公司之间的联系是一对一的,可以用两个箭头分别指向两个实体。关于箭头不得不说的话:以后还会有其他形式的箭头,这里的箭头暂时都还是指尖箭头。Page18studiospresidentsRuns4.1.7多路联系有时,我们需要描述多于两个实体集之间的联系,通常采用多路联系。多路联系是由联系菱形到它所涉及的每个实体集的连线表示。MoviesStarsStudiosContractsPage194.1.7多路联系Contracts是一个多路联系(三路联系)。这个联系可以用一个三元组表示(studio,star,movie)MoviesStarsStudiosContractsPage204.1.8联系中的角色Page21如果在一个联系中同一个实体集出现两次或多次,则该实体集与联系间的每一条连线命名称为角色。例4.6分析,一个由实体集Movies和它本身组成的联系Sequel-of。例4.7分析,按照教材内容理解有箭头指向和没有箭头指向含义的区别。4.1.11E/R模型中的子类子类=特例实体例如:Cartoons是movies的一种。并不是所有的movie都是cartoon,但有一部分是。Cartoons除了具有movies共同的属性和联系外,还有一个额外的联系是voices,它给出了不演定影的配音影星的集合。Page22Isa联系连接实体集和它的子类。用三角形表示,边与子类相连,与此边相对的一角与父类相连。MoviestitleyearlengthfilmtypeCartoonsisaStarsVoicesPage234.2设计原则忠实性避免冗余简单性选择正确的元素种类Page244.2.1忠实性首要的也是最重要的设计应当忠实于应用的具体要求实体集和它们的属性应当反映现实Page254.2.2避免冗余应当小心对每件事只说一次。冗余会造成空间浪费和更新异常。Page26GooddesignMoviestitleyearlengthfilmtypeOwnsStudiosnameaddressThisdesigngivestheaddressofeachstudioexactlyonce.Page27BaddesignMoviestitleyearlengthstudioOwnsStudiosnameaddressfilmtypeThisdesignstatesthestudioofamovietwice:asanattributeandasarelatedentity.Page28BaddesignMoviestitleyearlengthstudioNamefilmtypestudioAddThisdesignrepeatsthestudio’saddressonceforeachmovieandlosestheaddressiftherearetemporarilynomoviesforastudio.Page294.2.3简单性除非有绝对需要,不要在你的设计中添加更多成分。Holding

meanstheownershipofamovie.It’saunnecessaryentitysetwithoutanyattribute.MoviesHoldingStudiosRepresentOwnPage304.2.4选择正确的联系实体集可以用多种联系连接起来,如果把每种可能的联系加到设计中,会容易造成冗余、更新异常和删除异常。“right”?Morereasonable,morenatural,simpler,closertorequirementPage314.2.5选择正确的元素种类属性,还是实体集?如果A包含的信息大于其名称本身,则用实体集如果A对设计的作用只是其名称就可实现,则用属性。当用属性可以实现的,尽量不要用实体集。Page32Example:GoodBeersManfsManfBynameManfsdeservestobeanentitysetbecauseofthenonkeyattributeaddr.Beersdeservestobeanentitysetbecauseitisthe“many”ofthemany-onerelationshipManfBaddrPage33Example:GoodBeersnameThereisnoneedtomakethemanufactureranentityset,becausewerecordnothingaboutmanufacturersbesidestheirname.manfPage34Example:BadBeersManfsManfBynameSincethemanufacturerisnothingbutaname,andisnotatthe“many”endofanyrelationship,Page354.3E/R模型中的约束4.3.1E/R模型中的键4.3.2E/R模型中键的表示4.3.3引用完整性4.3.4度约束Page364.3.1E/R模型中的键实体集E的键(Key)是由一个或多个属性的集合K,对来自于E的不同实体e1和e2,他们对键K中的属性没有完全相同的值。如果K是由多个属性组成,那么对于e1和e2虽然它们可以部分相同,但绝不会全部相同。Page374.3.2E/R模型中键的表示在E/R图中,一个实体集键的属性用下划线标出。Page38简单说,引用完整性要求被“引用”的实体必须存在。扩展E/R图中的箭头标记,使用圆箭头来表示引用完整性。实现过程中保证引用完整性的措施:禁止被引用实体的删除操作;被引用实体删除,则同时删除所有引用它的实体新增实体时,它所引用的实体必须存在引用目标变化时,新的引用实体必须存在4.3.3引用完整性Page39引用完整性在ER图中的表示假设R是实体集E到F的联系,可用圆箭头指向F表示不仅是多对一或一对一,而且要求与E实体对应的F实体必须存在(注意不可空)。P88例4.19。圆箭头分别表示:每部电影必须被一个已经存在的电影公司所拥有;每个经理必须经营一家已经存在的电影公司。注意尖箭头表示电影公司可以在特定阶段没有经理(圆则必有)。教材从另一角度分析:如果删除箭头所指实体集中的某个实体,则(从逻辑关系上分析)联系另一方是否也应删除相应实体?是则圆否则尖。Page404.3.4度约束在E/R模型中,可以在连接一个联系到一个实体的边上加一个数字,表示相关实体集中任一实体可被联系到的实体数目的约束。MoviestitleyearlengthfilmtypeStarsinStarsnameaddress{20-240}<=10Page414.5从E/R图到关系设计实体集到关系的转化联系到关系的转化关系组合Page424.5.1实体集到关系的转化实体集(entityset)->关系(relation).属性(attributes)->属性(attributes)MoviestitleyearlengthfilmtypeStars-inOwnsStarsStudiosnameaddressnameaddressPage43基本规则对于联系R涉及的每一个实体集,它们的键属性或键属性集都是R关系模式的一部分;如果这个联系本身有属性,则它们也是R关系中的属性;如果一个实体集在联系中有多个角色,则它的键属性出现的次数等于角色的次数,转换为关系时为避免重名需重新命名;如果R本身的属性和与其相连的实体集的键属性有同名,则要重命名。4.5.2E/R联系到关系的转化Page44几个例子例4.25和4.26。关系的属性是由联系相关的实体集的键属性组成的。

Owns(title,year,studioName)Stars-In(title,year,starName)例4.27。注意多个角色时该实体集的键属性也要出现多次,同时要避免重名。

Contracts(starName,title,year,studioOfStar,producingOfStudio)4.5.2E/R联系到关系的转化Page45Relationship->RelationDrinkersBeersLikesLikes(drinker,beer)FavoriteFavorite(drinker,beer)MarriedhusbandwifeMarried(husband,wife)nameaddrnamemanfBuddies12Buddies(name1,name2)Page464.5.3关系组合提出背景:有时从实体集和联系转化而来的关系不一定是最优的。如果存在E到F的多对一联系R,则按照前面讲的转化规则直接转化后关系模式E(由实体集转化)和R(由联系转化)都含有实体集E的键属性,这是E和R合并的基础;关系模式E中还包含实体集E的非键属性,关系模式R中包含F的键属性和联系R中的所有属性,这是E和R合并时要分别保留的内容;但由于是多对一,所以E的键属性就能确定以上属性,所以两个关系的元组合并时不会冗余。Page47E和R的组合组合后的模式包括E的所有属性、F的键属性和R的所有属性;根据多对一定义,E中实体e可能找不到相连的F的实体,这种情况下用空值。例:Drinkers(name,addr)andFavorite(drinker,beer)combinetomakeDrinker1(name,addr,favBeer)注意其中的Favorite(drinker,beer)是联系关系而不是实体集关系Page48E到F的多对一联系R,E和R合并的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论