您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第2章实体-联系数据模型
第2章实体-联系数据模型主讲人:喻小光Email:40016076@qq.com2数据模型数据模型是用于描述数据或信息的标志,有三个组成部分:数据结构数据操作数据上的约束一些重要的数据模型早期的网状模型和层次模型关系数据模型半结构化模型对象关系模型3数据模型数据库是某个企业、组织或部门所涉及的数据的综合,它不仅要反映数据本身的内容,而且要反映数据之间的联系。现实世界中的数据要进入到数据库中,需要经过人们的认识、理解、整理、规范和加工。可以把这一过程划分成三个主要阶段:现实世界阶段信息世界阶段机器世界阶段4三个阶段间的相互关系不依赖于具体机器和DBMS依赖于具体机器和DBMS现实世界信息世界:概念模型机器世界:某DBMS支持的数据模型抽象转换现实世界事物及其联系信息世界机器世界概念模型实施模型人脑的抽象DBMS的转换图数据模型的两个级别数据库模型通常包含概念模型和实施模型,反映了信息的两重抽象5实体-联系模型概念模型有多种表示方法,其中最常用的是“实体-联系方法”(EntityRelationshipApproach),简称E-R方法,E-R方法用E-R图来描述现实世界的概念模型E-R图提供了表示实体集、属性和联系的方法(三要素)6主要内容2.1E/R模型2.2设计原则2.3E/R模型中的约束2.4弱实体集7E/R模型的元素E/R模型(Entity-relationshipmodel)实体集:同类实体的集合实体是客观存在并可相互区别的事件或物体在E/R图中用矩形表示属性:实体集中实体所具有的性质在E/R图中用与实体集相连的椭圆表示联系:两个或多个实体集间的连接。E/R图中用与相应的实体集相连的菱形表示8ExampleAEntitysetBeershastwoattributes,nameandmanf(manufacturer).EachBeersentityhasvaluesforthesetwoattributes,e.g.(Bud,Anheuser-Busch)Beersnamemanf9ExampleBDrinkersaddrnameBeersmanfnameBarsnamelicenseaddrNote:license=beer,full,noneSellsBarssellsomebeers.LikesDrinkerslikesomebeers.FrequentsDrinkersfrequentsomebars.10一个贯穿全文的例子暗示每部电影只属于唯一的电影公司11E-R图实例用E/R图描述的数据库包含特定的数据,称为数据库实例。在数据库实例中:对每个实体集,都有一个特定的有限实体集合。实体集中的每个实体对每个属性都有特定的值数据库实例也包含联系的具体选择。联系n个实体集E1,E2,…,En的联系R有一个实例,由列表(e1,e2,…,en)的有限集构成,其中ei是从实体集Ei的当前实例中选出的。这个列表集叫做R当前实例的联系集。12实体-联系模型的基本概念(续)基本概念(1)数据库实例:E/R图描述的数据库包含特定的数据称为数据库实例。pp.75:4.1.5前两段。(2)联系集:2-3段。例如ExampleB中的联系Sells的一个实例/联系集如下:BarBeerJoe’sBarBudJoe’sBarMillerSue’sBarBudSue’sBarPete’sAleSue’sBarBudLite13E-R图实例示例14二元E/R联系的多样性(1)多对一联系:如果对于实体集E中的每一个实体,实体集F中有n个实体(n≥0)与之联系,反之,对于实体集F中的每一个实体,实体集E中至多只有一个(也可以没有)实体与之联系,则称实体集F与实体集E有多对一(many-one)联系。实体集F实体集E15二元E/R联系的多样性(2)一对一联系:如果对于实体集E中的每一个实体,实体集F中至多有一个实体与之联系,反之亦然,则称实体集E与实体集F具有一对一联系。实体集F实体集E16二元E/R联系的多样性(3)多对多联系:如果对于实体集E中的每一个实体,实体集F中有n个实体(n≥0)与之联系,反之,对于实体集F中的每一个实体,实体集E中也有m个实体(m≥0)与之联系,则称实体集E与实体集F具有多对多联系。实体集F实体集E17用箭头表示E/R联系的多样性如果从实体集E到F是多对一联系,就把箭头指向F。箭头表明实体集E中每个实体与实体集F中的最多一个实体联系。如果实体集E和F是一对一联系,就把箭头同时指向E和F。18两个例子RunsPresidents19多路联系多路联系是两个以上实体集之间的联系StarsMoviesContractsStudios一个制片公司与一位特定的影星签约来演一部特定的电影指向Studios的箭头表明对于某一影星和电影,只有一家电影公司与这位影星签订了出演此电影的合同20多路联系中的箭头符号在多路联系中,指向实体集E的箭头表示:如果从此联系中除E之外的其他每个实体集选择一个实体,它们至多与E中的一个实体有联系。多路联系中的关系是同时发生在两方以上的。n路联系中,箭头指向的实体集是其他(n-1)个实体集的函数。换句话说,这种箭头关系表明该实体集是其他(n-1)个实体集共同唯一决定的结果。21联系中的角色角色:如果在一个联系中同一个实体集出现两次或多次,则该实体集与联系间的每一条连线命名称为角色。Sequel-ofMoviesOriginalSequel22一个较复杂的例子StarsMoviesContractsStudiosStudioofstarProducingstudio23联系的属性联系中可以包含属性由联系而产生的属性StarsMoviesContractsStudiossalary思考:如果把salary(片酬)作为其他实体集的属性,会有什么后果?24消除联系的属性可以创建一个实体集,将联系的属性转嫁给该实体集,并在该实体集与联系之间增加相应的连线。25多路联系到二元联系的转换有些数据模型限制联系必须是二元的。而E/R模型不要求联系必须是二元的。所以需要看一下联接多个实体集的联系怎样转化为一组二元的多对一联系。26转换方法在E/R模型中,我们可以引入一个新的实体集,并把它的实体看作是多路联系所对应的联系集的元组。我们称这个实体集为连接实体集。然后,我们引入从连接实体集到为最初的多路联系提供元组分量的每个实体集的多对一联系如果一个实体集扮演多个角色,那么它将是每个角色所对应的一个联系的目标。27示例28E-R模型中的子类现实世界中的很多概念之间具有层次关系,ER模型可用实体集间的ISA关系来描述这种概念间的层次关系AisaB表示(A是B的)子类联系,在E-R图中表示为一个三角形,顶角朝向父类。isa联系是一对一的。这里的子类有三层含义它是原实体集的特例,具有特殊性;它是原实体集的子集;它比原实体集具有更多的属性。29示例130isa结构isa结构被限制为树形结构,即只有一个根的实体集,它是最具有普遍性的,其他逐渐具体化的实体集就由树形结构的根向下延伸。假设有一个由isa联系联接的树形实体集。如果一个实体e在实体集E中有组成部分c,E在树中的父实体集是F,那么e也有F中的组成部分d。另外,c和d必须在从E到F的isa联系集中配对出现。e的组成部分有什么属性,实体e就一定有什么属性;它们参与什么联系,e就一定参与什么联系。31示例232课堂小思考请阅读pp.80倒数二段话或P43页第一段,理解其含义。如理解困难请进一步结合例4.11或例2.22分析。习题4.1.1为一家银行设计一个数据库,包括客户以及他们的账户信息。客户信息包括姓名、地址、电话、社会保障号,帐号信息包括号码、类型和余额。另外还需要记录有帐号的客户。为该数据库画一幅E/R图。在适当的地方画上箭号,以表示联系的多样性。4.1.2按如下要求修改上题的解决方法:a)修改图使一个帐户只有一个顾客b)修改图使一个顾客只有一个账户c)修改图,使顾客可以有多个地址(街道,城市,州组成的三元组)和多个电话号码,记住E/R模型不允许属性有非原子类型进一改图,使顾客可以有一组地址,每个地址有一组电话号码33主要内容2.1E/R模型2.2设计原则2.3约束的建模2.4弱实体集34设计原则忠实性避免冗余简单性考虑选择正确的联系选择正确的元素种类35(1)忠实性忠实性:所设计的实体集、属性和联系必须要能够反映应用需求背景中的实际情况。例如:不能把属性“气缸数”与stars联系,却可以把它作为汽车的属性。例如:Stars和Movies之间定义联系Star-in,应该是多对多联系例如:实体集Course和Instructors之间的联系Teaches,是多对一联系?还是多对多联系?36(2)避免冗余避免冗余:一件事如果在模型中多次出现就意味着冗余。应当注意每件事只说一次。冗余会造成存储空间的浪费,并且为了保持数据一致性,要求更多的同步处理机制。37示例在电影和电影公司之间用了联系Owns。又把电影公司的名称studioName选作电影实体集的一个属性。这种做法是危险的:两次表示“所属的制片公司”这一同样的事实,比任何一次单独的表示都占用了更多的空间。当电影被卖掉后,可能改变了被联系Owns联接的所属制片公司,却忘记改变该电影的StudioName属性值,反之亦然。当然,人们可以强调决不应做这样粗心大意的事,但是实际上错误是常有的。38Example:GoodBeersManfsManfBynameThisdesigngivestheaddressofeachmanufacturerexactlyonce.nameaddr39Example:BadBeersManfsManfBynameThisdesignstatesthemanufacturerofabeertwice:asanattributeandasarelatedentity.namemanfaddr40Example:BadBeersnameThisdesignrepeatsthemanufacturer’saddressonceforeachbeerandlosestheaddressiftherearetemporarilynobeersforamanufacturer.manfmanfAddr41(3)简单性考虑简单性考虑:用尽可能少的元素来描述模型,如果有必要,再逐步逐个扩充。示例:电影所有权Holdings可以真实地反映现实世界,但没有实际用途,并使Movies和Studios的联系变得复杂,没有它更好。42(4)选择正确的联系联系也可能冗余,即一个联系联接起来的实体对或实体集可以从一个或多个其他联系中导出联系的冗余会占用更多空间,数据的一处变动会引起储存联系的多处变动,使数据库的修改更复杂。选择正确的联系:根据实际问题需求判断要创建哪些必要的联系,如果冗余或者和问题需求无关的联系就可以舍弃。43示例1是否需要添加如下的2个二元联系呢?Stars-inOwns取决于实际问题中对这三个联系的假定44示例2在Stars与Studios之间增加联系Works-for有意义吗?45(5)选择正确的元素种类人们可以选择不同的元素类型来表示现实世界选择正确的元素种类:使用属性?还是使用实体集?使用实体集?还是使用联系?46问题1:属性代替实体集的思考将实体集Studios去掉,将其属性name和address作为movies的两个属性合理吗?Studios-nameStudios-address如果没有记录Studios-address,只把Studios-name作为Movies的一个属性,有危害吗?47用属性代替实体集E的条件所有与实体集E有关的联系必须有指向E的箭头,即E必须是1对多联系的1方。E的
本文标题:第2章实体-联系数据模型
链接地址:https://www.777doc.com/doc-2154958 .html