《数据库原理ER模型.pptx》由会员分享,可在线阅读,更多相关《数据库原理ER模型.pptx(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Entity Sets实体集数据库可由下列内容模型化:实体的集合实体间的关系实体:是现实世界中可区别于其他对象的“事件”或“物体”。例如:指定的人、公司、事件、工厂 实体集:实体集:是拥有相同特性的同类型实体的集合。例如所有人、公司、树、节假日的集合组成实体集的各实体称为实体集的外延。第1页/共66页Entity Sets customer and loan实体集:客户和贷款 customer-id customer-customer-customer-loan-amount name street city number第2页/共66页n实体由实体由属性属性集表示,该集合描述了实体集中所有成
2、员所拥有的特性。集表示,该集合描述了实体集中所有成员所拥有的特性。Example:customer=(customer-id,customer-name,customer-street,customer-city)loan=(loan-number,amount)贷款贷款=(贷款号,贷款金额)(贷款号,贷款金额)n域域每个属性的取值范围。每个属性的取值范围。n属性类型:属性类型:H单个和单个和组合属性组合属性H单值和多值属性(一组值)单值和多值属性(一组值)4例:多值属性:电话号码,例:多值属性:电话号码,0个、个、1个或多个个或多个HNull attributes 空属性空属性HDerive
3、d attributes派生属性派生属性4由其他属性计算而得由其他属性计算而得4例如例如“年龄年龄”可以得出可以得出“出生年份出生年份”Attributes属性第3页/共66页Composite Attributes组合属性复合属性复合属性可以是有层次的。可以是有层次的。第4页/共66页Relationship Sets联系集联系:是若干实体间的关联。例如:Hayes depositor A-102 姓名(客户实体)储户(联系集)(帐目实体)联系集:是两个以上实体间的数学关系(所有实体来自实体集)。(e1,e2,en)|e1 E1,e2 E2,en En其中(e1,e2,en)是联系。例如:(
4、Hayes,A-102)depositor第5页/共66页Relationship Set borrower第6页/共66页实体集间的关联被称为参与,既实体集E1,E2,En参与联系集 R.E-R模式中的联系实例代表真实世界中被抽象化的实体间的关联。在联系中实体所起的功用称为实体的角色。联系也可能具有描述性属性。Binary relationship sets 二元联系集Nonbinary relationship sets,such as ternary relationship sets 非二元联系集 三元联系集参与一个联系集的实体集的数目被称为联系集的度。Relationship Set
5、s(Cont.)联系集(续)第7页/共66页Mapping Cardinalities映射基数映射基数或映射比例表达通过一联系集能同时与另一个实体相关联的实体数目多用于描述二元关系集。二元关系集的映射有下列类型:One to one一对一One to many一对多Many to one多对一Many to many 多对多第8页/共66页Mapping Cardinalities映射(基数)(a)一对一一对一:A中的一个实体至多与中的一个实体至多与 B中的一个实体相关联中的一个实体相关联,B中的一个实体中的一个实体至多与至多与 A 中的一个实体相关联中的一个实体相关联。(b)一对多一对多:A
6、中的一个实体可以与中的一个实体可以与 B中的任意多个实体相关联中的任意多个实体相关联,然而,然而,B中中的一个实体至多与的一个实体至多与 A 中的一个实体相关联中的一个实体相关联。注意:注意:A和和B中的元素也可以没有对应元素(找不到映射关系)中的元素也可以没有对应元素(找不到映射关系)第9页/共66页Mapping Cardinalities映射(基数)Many to one多对一多对一Many to many多对多多对多注:注:A和和B中的元素可以没有映射关系中的元素可以没有映射关系第10页/共66页Existence Dependencies存在依赖如果实体X的存在依赖于实体Y的存在,则
7、X存在依赖于Y。Y是支配实体dominant entity(如下例中的贷)X是从属实体subordinate entity(如下例的付款)如果贷款实体被删除,则其相关的付款实体也必须删除。Total participation 全部参与 loan对borrow联系集Partial participation 部分参与 customer对borrowloan-paymentpaymentloan第11页/共66页Keys:Entity Sets码:实体集实体集的“超码”super key是属性集,其值可以唯一的标识一个实体。实体的“候选码”candidate key是最小的超级码客户id号是客户
8、的候选取码帐户号是帐户的候选取码虽然可以有多个候选取存在,但只有一个候选作为“主码”primary key第12页/共66页Keys:Relationship Sets码:联系集假设所有主码的属性名称是唯一的并且每个实体集仅参与联系集一次。联系集的主码成员依赖于和联系集R相关联的属性的结构。H如果联系集R没有属性与之相关联,那么属性集合primary-key(E1)U primary-key(E2)UU primary-key(En)表示集合R中一个独立的联系。H如果联系集R有属性a1,a2,am 与之相关联,那么属性集合primary-key(E1)U primary-key(E2)UU p
9、rimary-key(En)Ua1,a2,am表示集合R中一个独立的联系。对于以上两种情况,属性集合primary-key(E1)U primary-key(E2)UU primary-key(En)构成了联系集的超码。第13页/共66页如果在不同的实体集中出现了主码属性名不唯一的情况,属性应该改名以区分它们;实体集的名字加上属性名可以形成唯一的名称。如果一个实体集不止一次地参与某个联系集,则角色名可以代替实体集的名称形成唯一的属性名。联系集主码的结构依赖于联系集的映射基数。多对多一对多 多对一 一对一对于非二元联系,如果没有度的限制,前面描述的超码成为唯一的候选码,并被选为主码。第14页/共
10、66页Design Issues设计问题是用实体集还是属性?选择主要与企业模型结构有关,与相关的属性语义有关一个常见的错误是用实体集的主码作为另一个实体集的属性,而不是联系。例如,将customer-id作为loan的属性是不正确的,即使每笔贷款只有一个客户也是如此。用borrower联系代表贷款和客户直接的连接关系才是正确的方法,因为这样可以明确地表示出两者之间的关系而不是将这种关系隐含在属性中。另一个常犯的错误是将有关系的实体集的主码属性作为联系集的属性。这样做是不对的,因为在联系的表示中已经包含了这些主码属性。第15页/共66页使用联系集还是实体集?指导方针是用联系集来描述实体集间的相互
11、作用。举例:一法:贷款作为一个实体来建模二法:不将贷款作为一个实体,而作为客户和银行分支机构之间的一个联系的描述性属性。每次贷款用这个联系表示。如果每笔贷款正好为一个客户所有,并且正好同一个分行相联系,用联系表示贷款可以。但不能方便地表示多个客户共有一笔贷款。为此,为共有贷款的每个人分别定义一个联系,并且具有相同的描述性属性值。这种重复有两个问题:数据多次存储,浪费空间;更新可能导致不一致状态。一法就没有这种问题。branchborrowerloancustomerLoan-branchbranchamountcustomercust-branchLoan-number第16页/共66页二元还
12、是n元联系集 一般地,非二元关系可以通过构造出一个假设的实体集来表示成二元关系。关系R是实体集A,B,C的关联表示,则可以利用新的实体集E,及三个关系RA,RB 和RC 相应地表示A,B,C之间的关系。如果联系集R有属性,将这些属性赋给实体集E。并为E建立一个标识属性(因每个实体集都应该至少有个一属性,以区别实体集中的各个成员)。针对R中的每个联系(ai,bi,ci),在实体集E中构造出一个新的实体ei,并将其与A,B,C相应的实体关联,即在RA中插入(ei,ai),在RB中插入(ei,bi),在RC中插入(ei,ci)。第17页/共66页n可以将这一过程直接推广到可以将这一过程直接推广到n元
13、联系集的情况。因此概念上可以限制元联系集的情况。因此概念上可以限制E-R图中只包含二元联系集。然而,这种限制并不总让人满意。图中只包含二元联系集。然而,这种限制并不总让人满意。H对于表示联系集对于表示联系集R而创建的实体集而创建的实体集E,为其创建一个标识属性。该,为其创建一个标识属性。该标识属性和附加的那些联系集增加了设计的复杂程度以及对总的存标识属性和附加的那些联系集增加了设计的复杂程度以及对总的存储空间的需求。储空间的需求。HN元联系集可以更清晰地表示几个实体集参与到一个联系集中。元联系集可以更清晰地表示几个实体集参与到一个联系集中。H可能没有将三元联系上的约束转变为二元联系上的约束的方
14、法。可能没有将三元联系上的约束转变为二元联系上的约束的方法。例如,一个多对一的约束,从例如,一个多对一的约束,从A、B到到C,这种约束就不能用联系集,这种约束就不能用联系集RA,RB 和和RC 上的度约束来表示。上的度约束来表示。第18页/共66页联系属性的设置 映射基数可以影响联系属性的设置。多对一或一对多联系集的属性可以归到联系的“多方”实体集,而不是联系集。一对一联系集的属性可以归到参与的实体集的任何一方,而不是联系集。第19页/共66页H对于对于多对多多对多联系集而言,属性设置的选择更明了。当一个属性由参与联系集而言,属性设置的选择更明了。当一个属性由参与的实体集共同决定,联系集属性的
15、实体集共同决定,联系集属性必须必须归到归到多对多联系集多对多联系集。第20页/共66页E-R DiagramsE-R图Rectangles矩形表示实体集矩形表示实体集Diamonds菱形表示关系集菱形表示关系集Lines直线用于连接实体集和属性,以及实体集与关系集直线用于连接实体集和属性,以及实体集与关系集Ellipses椭圆表示属性椭圆表示属性HDouble ellipses双线椭圆表示多值属性双线椭圆表示多值属性HDashed ellipses虚线椭圆表示派生属性虚线椭圆表示派生属性Underline 下划线标识主码属性下划线标识主码属性Double lines 双线双线表示一个实体表示一
16、个实体全部参与全部参与联系集中联系集中Double Rectangles 双矩形双矩形表示表示弱实体集弱实体集第21页/共66页Cardinality Constraints基数的约束关系集和实体集之间的基数的约束,通常使用带箭头直线表示一,无箭头直线表示多。从customer到 loan:一对多第22页/共66页多对一一对一第23页/共66页Relationship Sets with Attributes带属性的关系集第24页/共66页E-R Diagram With Composite,Multivalued,and Derived Attributes带组合、多值和导出属性的E-R图m
17、ultivalued attributescomposite attributesderived attributes第25页/共66页Roles角色n关系的实体集不一定要互异。关系的实体集不一定要互异。n“领导领导”和和“工人工人”两个称呼称为两个称呼称为“角色角色”;它们用于表示雇员实体与关系;它们用于表示雇员实体与关系集集“受雇受雇”之间的关系。之间的关系。n角色在角色在E-R图中通过标识连接菱形和矩形的直线完成。图中通过标识连接菱形和矩形的直线完成。role第26页/共66页E-R Diagram with a Ternary Relationship三个实体间关系的E-R图表示在非二
18、元联系集中,可以标明一些多对一联系类型。在非二元联系集中,可以标明一些多对一联系类型。假设一个员工在每个支假设一个员工在每个支行最多只能有一份工作(比如,行最多只能有一份工作(比如,Jones不能在同一支行又当经理又当审计员)不能在同一支行又当经理又当审计员)。这种约束可以从联系集拉出一个箭头指向。这种约束可以从联系集拉出一个箭头指向job来表示。来表示。第27页/共66页只允许联系集外最多有一个箭头,否则会有两种解释:来自A1,A2,Ai的实体的一个特殊组合最多只能和来自Ai+1,Ai+2,An实体的一个组合相关。联系R的主码可以用A1,A2,Ai的主码的并集来构造。对每个实体集Ak,ikn
19、,来自其他实体集的每个实体组合最多和来自Ak的一个实体相关。每个集合A1,A2,Ak-1 Ak+1,An ,ikn,都形成一个候选码。A1RA2AiAi+1Ai+2An第28页/共66页Participation of an Entity Set in a Relationship Set联系集中的实体集参与Total participation完全参与完全参与(用双线表示用双线表示):实体集中的每实体集中的每个实体至少参与联系集中的一个联系。个实体至少参与联系集中的一个联系。例如,例如,loan是完全参与是完全参与 borrower。每笔贷款必须有一个顾。每笔贷款必须有一个顾客与之相关联。客
20、与之相关联。Partial participation部分参与:某些实体可以不参与联系部分参与:某些实体可以不参与联系集中的任何联系。集中的任何联系。例如,例如,customer 部分参与部分参与 borrower。total participation第29页/共66页Alternative Notation for Cardinality Limits基数限制的注释基数限制也可以表示参与约束(每个实体参与联系的次数)l.h:l 最小基数最小基数 h 最大基数最大基数l为为 1 表示完全参与。表示完全参与。h为为 1 表示实体至多参与一个联系。表示实体至多参与一个联系。h为为*表示没有限制。
21、表示没有限制。1.*=完全参与完全参与如果一个二元联系的两条边都有最大值如果一个二元联系的两条边都有最大值1,此联系是一对一。,此联系是一对一。C1 L1 C2 L2C3 L3C4 L4C5一对多第30页/共66页Weak Entity Sets弱实体集weak entity set弱实体集是指没有主键的实体集。弱实体集依赖于标识(强)实体集identifying entity set。弱实体集必然通过一对多联系集与标识(强)实体集关联。并且弱实体集全部参与联系。标识性联系用双边菱形框表示。弱实体集中的分辨符discriminator(或称部分码)是一组属性,用于区分弱实体集中的实体。例,pa
22、yment-number区分同一笔贷款的不用payment实体。弱实体集的主码由弱实体集所依赖的强实体集的主码,及弱实体集的分辨符构成。第31页/共66页Weak Entity Sets(Cont.)弱实体集(续)付款的主码(贷款号,付款号)标识性联系集应该没有描述性属性,因为任何必需的属性都可和弱实体集关联。(因为一对多联系集)weak entity settotal participationIdentifying relationshipdiscriminator第32页/共66页弱实体集还可以参与标识性联系以外的其他联系。例,payment实体可以参与与account实体相关联的联系,
23、以标识支付贷款的帐户。弱实体集可以作为属主实体集参与到与另一个弱实体集的标识性联系中。一个弱实体集也可能与不止一个属主实体集关联,这样一个特殊的弱实体可以通过来自标识实体集的实体组合来标识。弱实体集的主码可以有标识实体集的主码的并集加上弱实体集的分辨符组成。某些情况下,可以选择将一个弱实体集表述为它所属的实体集的一个多值复合属性。例,实体集loan具有一个多值复合属性payment,它由payment-number、payment-date和payment-amount组成。如果弱实体集只参与标识性联系,而且其属性不多,那么建模时将其表述为一个属性更合适。相反,如果弱实体集参与到标识性联系以外
24、的联系中,或者其属性较多时,则建模时将其表述为弱实体集更恰当。同一门课会在不同学期上,而在一学期里会有同一门课的几部分。同一门课的不同提供由semester和Section-number来标识,分辨符是两个。semesterCourse-offeringccocoursecourse-numbernameM1Section-number第33页/共66页Specialization特殊化自上而下的设计过程;在某实体集中标识出实体子集,有别于集合中的其它实体。一个实体可以根据多个可区分的特征来进行特殊化。当一个实体集有不只一种特殊化方式,则这个特定实体可能同时属于多个特殊化实体集。用标识成ISA
25、的三角形构件表示(如客户“是ISA”人)。第34页/共66页特殊化示例Specialization Example第35页/共66页一般化Generalization自下而上的设计过程将一组实体集所共享的特性组成较高层实体集。特殊化和概括化是相对的;它们以相同的形式表现在E-R图中。术语特殊化和概括化可以互换。属性继承Attribute inheritance 低层实体集继承相关联的高层实体集的所有属性和参与的关系。第36页/共66页Design Constraints on a Specialization/Generalization 建立在特殊性和概括性上的约束确定哪些实体可以是给定低层
26、实体集的成员的约束。condition-defined 条件定义(成员资格条件)例,高层实体集account具有属性account-type(savings account或checking account)。由于所有低层实体都基于同一属性(account-type)进行评估,这种类型的一般化称为是属性定义的。user-defined 用户定义(用户指定)例,银行员工在三个月的雇佣期后被分配到四个工作组中的一个。第37页/共66页同一概括中,确定实体是否可以同属于多个低层实体集的约束Disjoint 不相交(只属于一个低层实体)例,高层实体集account具有属性account-type(sa
27、vings account或checking account),一个实体不能既是储蓄帐户又是支票帐户。Overlapping 重叠(可属于同一概括中的多个低层实体)例,银行员工在三个月的雇佣期后被分配到四个工作组中的一个,假设某些经理参加到多个工作组中。第38页/共66页完备性性约束确定高层实体集中的实体是否必须属于同一特殊(概括)中至少一个低层实体集。Total(double line)全部(每个高层实体必须属于一个低层实体集)Partial(line)部分(允许某些高层实体不属于任何低层实体集)完备性约束可以和第二类约束任意组合。employeeISAcustomerpersonsavin
28、gs-accountISAchecking-accountaccountoverlappingpartial participationtotal participationdisjoint第39页/共66页E-R Diagram With Redundant Relationships冗余关系的E-R图第40页/共66页Aggregation(Cont.)聚集(续)联系集works-on和manages拥有重叠的信息。通过聚集aggregation消除冗余。将联系视为抽象实体。允许联系间有联系。联系抽象成为新实体。消除冗余后,下图说明如下:雇员在特定部门的特定工作中工作,(也可以在不同的部门
29、,为不同的工作工作)。雇员、部门和工作的组合有一个相关的领导(管理员)。第41页/共66页E-R Diagram With Aggregation使用聚集的E-R图第42页/共66页Summary of Symbols Used in E-R Notation E-R设计中使用的符号汇总第43页/共66页Summary of Symbols(Cont.)符号汇总(续)第44页/共66页Alternative E-R Notations可选的E-R表示第45页/共66页E-R Design Decisions E-R图设计策略用实体集或属性表示对象。如何使用实体集或关系集最佳表达现实世界的概念。
30、三元关系的使用和一对二元关系的使用的对比。强或弱实体集的使用。特殊性和概括性的使用提高模块化设计能力。聚集的使用将聚集实体集视为单个单元,而不必关注其内部结构的细节。第46页/共66页Design Phases设计阶段刻划数据需求阶段用户需求规格说明概念设计阶段功能需求规格说明逻辑设计阶段物理设计阶段第47页/共66页E-R Diagram for a Banking Enterprise银行系统的E-R图第48页/共66页Reduction of an E-R Schema to Tables将E-R模式转换成表主码使实体集和关系集可以表示为表,成为数据库的组成部分。与某E-R图相对应的数据
31、库可以表示为一组表。每一个实体集和关系集,都可以唯一地用一个表表示,其名称可以使用相对应的实体集或关系集的名称。每个表都有若干列(通常相当于属性),每一列都有唯一的名称。从E-R图产生出一个关系数据库设计中,将E-R图转换成表是基础。第49页/共66页Strong Entity Sets 强实体集强实体集转换成表时,拥有相同的属性。Cartesian product 笛卡儿积:D1D2 Dn (表有n列)第50页/共66页Weak Entity Sets弱实体集弱实体集转变为表后,包括一个用于标识强实体集的主码的列。第51页/共66页Relationship Sets 联系集联系集转变为表后,
32、表中各列对应于联系集的每一个描述性属性,以及每一个用于标识强实体集的主码的属性。第52页/共66页Redundancy of Tables表的冗余表示连接弱实体集及其标识性强实体集的联系集的表是冗余的。例如,付款表已经包含了贷款-付款表中会出现的信息(如列贷款号和付款号)第53页/共66页Combination of Tables 表的合并多对一和一对多的在多方全部参与的联系集,在表示时可以在多方为一方的每一个主码属性和联系集的每一个描述性属性加一列。H例如,不生成关系帐户-部门表,而在帐户实体集中加一个部门属性。第54页/共66页Combination of Tables(cont.)表的合
33、并(续)一对一关系集,任何一方都可以用于表示“多”方。即,附加的列可以加上任意一个实体集中。如果多方是部分参与,则多方中增加的列的属性值应允许使用空值。第55页/共66页Composite Attributes复合属性为复合属性的每个子属性创建一个单独的列,而不为复合属性自身创建一个单独的列。customer-streetcustomercustomer-citycustomer-idcustomer-addresscustomer-namecustomer-idcustomer-namecustomer-streetcustomer-citycustomer第56页/共66页Multival
34、ued Attributes多值属性实体E的多值属性M可以用单独的表T来表示。表T有对应E的主码的属性和对应多值属性M的属性。多值属性中的每个值映射至表T中的单独行。employee-idemployeedependent-nameemployee-idd-namedependent-name第57页/共66页Generalization 一般化方法1:为高层实体构造表。构成低层实体集的表,每个表中包含高层实体集的主码及本层的属性。table table attributesaccount account-number,balance savings-account account-numbe
35、r,interest-ratechecking-account account-number,overdraft-amount缺点:取诸如存储账户的信息时需要存取两个表。account-numbersavings-accountoverdraft-amountaccountinterest-ratebalanceISAchecking-account第58页/共66页方法2:如果一般化是不相交的且完全的,不为高层实体集创建任何表。相反,为每个低层实体集构造一个表,带所有本层属性和继承属性。table table attributessavings-account account-number,
36、balance,interest-ratechecking-account account-number,balance,overdraft-amount如果一般化是重叠的,某些像余额这样的值将没必要地被存储两次。如果一般化是部分的,某些实体不能表示出来。第59页/共66页Relations Corresponding to Aggregation相对于聚集的关系第60页/共66页Relations Corresponding to Aggregation(cont.)相对于聚集的关系(续)customer-namecust-social-securitycustomer-streetcust
37、omer-citycustomerloan-numberamountloancust-social-securityloan-numberborroweremp-social-security employee-namephone-numberemployeeemp-social-security cust-social-securityloan-numberloan-officer第61页/共66页一、一个实体型转换为一个关系模式关系的属性:实体型的属性关系的码:实体型的码二、一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。转换为一个独立的关系模式 关系的属性
38、:与该联系相连的各实体的码以及联系本身的属性 关系的候选码:每个实体的码均是该关系的候选码与某一端对应的关系模式合并 合并后关系的属性:加入对应关系的码和联系本身的属性 合并后关系的码:不变第62页/共66页三、一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:n端实体的码与n端对应的关系模式合并 合并后关系的属性:在n端关系中加入1端关系的码和联系本身的属性 合并后关系的码:不变 可以减少系统中的关系个数,一般情况下更倾向于采用这种方法。第63页/共66页四、一个m:n联系转
39、换为一个关系模式关系的属性:与该联系相连的各实体的码以及联系本身的属性关系的码:各实体码的组合五、三个或三个以上实体间的一个多元联系转换为一个关系模式关系的属性:与该多元联系相连的各实体的码 以及联系本身的属性关系的候选码:各实体码的组合六、同一实体集的实体间的联系,即自联系,也可按上述1:1、1:n和m:n三种情况分别处理。例:如果教师实体集内部存在领导与被领导的1:n自联系,我们可以将该联系与教师实体合并,这时主码职工号将多次出现,但作用不同,可用不同的属性名加以区分:教师(职工号,姓名,性别,职称,系主任)第64页/共66页七、具有相同码的关系模式可合并目的:减少系统中的关系个数。合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序。例:“拥有”关系模式:拥有(学号,性别)“学生”关系模式:学生(学号,姓名,出生日期,所在系,年级,班级号,平均成绩)可以将它们合并为一个关系模式:学生(学号,姓名,性别,出生日期,所在系,年级,班级号,平均成绩)第65页/共66页感谢您的观看!第66页/共66页
限制150内