1、1.1数据库系统概论数据库系统概论nEntity Sets实体集实体集nRelationship Sets联系集联系集nDesign Issues 模型设计模型设计nMapping Constraints 映射约束映射约束nKeys码码nE-R Diagram E-R图图nExtended E-R Features 扩展扩展E-R功能功能nDesign of an E-R Database Schema E-R数据库模数据库模式的设计式的设计nReduction of an E-R Schema to Tables E-R模式转模式转换成表时的缩减换成表时的缩减1.2数据库系统概论数据库系统概
2、论n数据库可由下列内容模型化数据库可由下列内容模型化:H实体的集合实体的集合H实体间的关系实体间的关系n实体:实体:是现实世界中可区别于其他对象的“事件”或“物体”。例如:指定的人、公司、事件、工厂例如:指定的人、公司、事件、工厂是拥有相同特性的同类型实体的集合。例如所有人、公司、树、节假日的集合例如所有人、公司、树、节假日的集合组成实体集的各实体称为实体集的组成实体集的各实体称为实体集的外延外延。1.3数据库系统概论数据库系统概论 customer-id customer-customer-customer-loan-amount name street city number1.4数据库系
3、统概论数据库系统概论n实体由实体由属性属性集表示,该集合描述了实体集中所有成员所拥有的集表示,该集合描述了实体集中所有成员所拥有的特性。特性。Example:customer=(customer-id,customer-name,customer-street,customer-city)loan=(loan-number,amount)贷款贷款=(贷款号,贷款金额)(贷款号,贷款金额)n域域每个属性的取值范围。每个属性的取值范围。n属性类型:属性类型:H单个和单个和组合属性组合属性H单值和多值属性(一组值)单值和多值属性(一组值)4例:多值属性:电话号码,例:多值属性:电话号码,0个、个、1
4、个或多个个或多个HNull attributes 空属性空属性HDerived attributes派生属性派生属性4由其他属性计算而得由其他属性计算而得4例如例如“年龄年龄”可以得出可以得出“出生年份出生年份”1.5数据库系统概论数据库系统概论复合属性复合属性可以是有层次的。可以是有层次的。1.6数据库系统概论数据库系统概论n联系:联系:是若干实体间的关联。例如:例如:Hayes depositor A-102 姓名(客户实体)姓名(客户实体)储户(联系集)储户(联系集)(帐目实体)(帐目实体)联系集:联系集:是两个以上实体间的数学关系(所有实体来自实体集)。(e1,e2,en)|e1 E1
5、,e2 E2,en En其中其中(e1,e2,en)是联系。是联系。H例如:例如:(Hayes,A-102)depositor1.7数据库系统概论数据库系统概论1.8数据库系统概论数据库系统概论n实体集间的关联被称为实体集间的关联被称为参与参与,既实体集,既实体集E1,E2,En参与联系参与联系集集 R.n E-R模式中的联系实例代表真实世界中被抽象化的实体间的模式中的联系实例代表真实世界中被抽象化的实体间的关联。关联。n在联系中实体所起的功用称为实体的在联系中实体所起的功用称为实体的角色角色。n联系也可能具有联系也可能具有描述性属性描述性属性。nBinary relationship set
6、s 二元联系集nNonbinary relationship sets,such as ternary relationship sets 非二元联系集非二元联系集 三元联系集三元联系集n参与一个联系集的实体集的数目被称为联系集的参与一个联系集的实体集的数目被称为联系集的度度。1.9数据库系统概论数据库系统概论n映射基数或映射比例表达通过一联系集能映射基数或映射比例表达通过一联系集能同时同时与另一与另一个实体相关联的个实体相关联的实体数目实体数目n多用于描述二元关系集。多用于描述二元关系集。n二元关系集的映射有下列类型:二元关系集的映射有下列类型:HOne to one一对一一对一HOne t
7、o many一对多一对多HMany to one多对一多对一HMany to many 多对多多对多1.10数据库系统概论数据库系统概论(a)一对一一对一:A中的一个实体至多与中的一个实体至多与 B中的一个实体相关联中的一个实体相关联,B中的一个实体中的一个实体至多与至多与 A 中的一个实体相关联中的一个实体相关联。(b)一对多一对多:A中的一个实体可以与中的一个实体可以与 B中的任意多个实体相关联中的任意多个实体相关联,然而,然而,B中中的一个实体至多与的一个实体至多与 A 中的一个实体相关联中的一个实体相关联。注意:注意:A和和B中的元素也可以没有对应元素(找不到映射关系)中的元素也可以没
8、有对应元素(找不到映射关系)1.11数据库系统概论数据库系统概论Many to one多对一多对一Many to many多对多多对多注:注:A和和B中的元素可以没有映射关系中的元素可以没有映射关系1.12数据库系统概论数据库系统概论n如果实体如果实体X的存在依赖于实体的存在依赖于实体Y的存在,则的存在,则X存在依赖存在依赖于于Y。HY是支配实体是支配实体dominant entity(如下例中的贷)(如下例中的贷)HX是从属实体是从属实体subordinate entity(如下例的付款)(如下例的付款)如果贷款实体被删除,则其相关的付款实体也必须删如果贷款实体被删除,则其相关的付款实体也必
9、须删除。除。nTotal participation 全部参与全部参与 loan对对borrow联系集联系集nPartial participation 部分参与部分参与 customer对对borrowloan-paymentpaymentloan1.13数据库系统概论数据库系统概论n实体集的实体集的“超码超码”super key是属性集,其值可以是属性集,其值可以唯一唯一的标识一个实体。的标识一个实体。n实体的实体的“候选码候选码”candidate key是是最小最小的超级码的超级码H客户客户id号是客户的候选取码号是客户的候选取码H帐户号是帐户的候选取码帐户号是帐户的候选取码n虽然可以
10、有多个候选取存在,但只有一个候选作为虽然可以有多个候选取存在,但只有一个候选作为“主码主码”primary key1.14数据库系统概论数据库系统概论假设所有主码的属性名称是唯一的并且每个实体集仅假设所有主码的属性名称是唯一的并且每个实体集仅参与联系集一次。联系集的主码成员依赖于和联系集参与联系集一次。联系集的主码成员依赖于和联系集R相关联的属性的结构。相关联的属性的结构。H如果联系集如果联系集R没有属性与之相关联,那么属性集合没有属性与之相关联,那么属性集合primary-key(E1)U primary-key(E2)UU primary-key(En)表示集合表示集合R中中一个独立的联系
11、。一个独立的联系。H如果联系集如果联系集R有属性有属性a1,a2,am 与之相关联,那么属性集合与之相关联,那么属性集合primary-key(E1)U primary-key(E2)UU primary-key(En)Ua1,a2,am表示集合表示集合R中一个独立的联系。中一个独立的联系。对于以上两种情况,属性集合对于以上两种情况,属性集合primary-key(E1)U primary-key(E2)UU primary-key(En)构成了联系构成了联系集的集的超码超码。1.15数据库系统概论数据库系统概论如果在不同的实体集中出现了主码属性名不唯一的情如果在不同的实体集中出现了主码属性名
12、不唯一的情况,属性应该改名以区分它们;实体集的名字加上属况,属性应该改名以区分它们;实体集的名字加上属性名可以形成唯一的名称。如果一个实体集不止一次性名可以形成唯一的名称。如果一个实体集不止一次地参与某个联系集,则角色名可以代替实体集的名称地参与某个联系集,则角色名可以代替实体集的名称形成唯一的属性名。形成唯一的属性名。联系集主码的结构联系集主码的结构依赖于联系集的依赖于联系集的映射基数映射基数。H多对多多对多H一对多一对多 多对一多对一H 一对一一对一n对于非二元联系,如果没有度的限制,前面描述的超对于非二元联系,如果没有度的限制,前面描述的超码成为唯一的候选码,并被选为主码。码成为唯一的候
13、选码,并被选为主码。1.16数据库系统概论数据库系统概论n是用实体集还是属性?是用实体集还是属性?H选择主要与企业模型结构有关,与相关的属性语义选择主要与企业模型结构有关,与相关的属性语义有关有关H一个常见的错误是用实体集的主码作为另一个实体一个常见的错误是用实体集的主码作为另一个实体集的属性,而不是联系。例如,将集的属性,而不是联系。例如,将customer-id作作为为loan的属性是不正确的,即使每笔贷款只有一个的属性是不正确的,即使每笔贷款只有一个客户也是如此。用客户也是如此。用borrower联系代表贷款和客户直联系代表贷款和客户直接的连接关系才是正确的方法,因为这样可以明确接的连接
14、关系才是正确的方法,因为这样可以明确地表示出两者之间的关系而不是将这种关系隐含在地表示出两者之间的关系而不是将这种关系隐含在属性中。属性中。H另一个常犯的错误是将有关系的实体集的主码属性另一个常犯的错误是将有关系的实体集的主码属性作为联系集的属性。这样做是不对的,因为在联系作为联系集的属性。这样做是不对的,因为在联系的表示中已经包含了这些主码属性。的表示中已经包含了这些主码属性。1.17数据库系统概论数据库系统概论n使用联系集还是实体集?使用联系集还是实体集?指导方针是用联系集来描述实体集间的相互作用。指导方针是用联系集来描述实体集间的相互作用。n举例:举例:H一法:贷款作为一个实体来建模一法
15、:贷款作为一个实体来建模H二法:不将贷款作为一个实体,而作为客户和银行分支机构之二法:不将贷款作为一个实体,而作为客户和银行分支机构之间的一个联系的描述性属性。每次贷款用这个联系表示。间的一个联系的描述性属性。每次贷款用这个联系表示。4如果每笔贷款正好为一个客户所有,并且正好同一个分行相联系,如果每笔贷款正好为一个客户所有,并且正好同一个分行相联系,用联系表示贷款可以。但用联系表示贷款可以。但不能方便地表示多个客户共有一笔贷款。不能方便地表示多个客户共有一笔贷款。为此,为共有贷款的每个人分别定义一个联系,并且具有相同的为此,为共有贷款的每个人分别定义一个联系,并且具有相同的描述性属性值。描述性
16、属性值。4这种重复有两个问题:数据多次存储,浪费空间;更新可能导致这种重复有两个问题:数据多次存储,浪费空间;更新可能导致不一致状态。一法就没有这种问题。不一致状态。一法就没有这种问题。branchborrowerloancustomerLoan-branchbranchamountcustomercust-branchLoan-number1.18数据库系统概论数据库系统概论n二元还是二元还是n元联系集元联系集 一般地,非二元关系可以通过构造出一个假设的实体一般地,非二元关系可以通过构造出一个假设的实体集来表示成二元关系。集来表示成二元关系。H关系关系R是实体集是实体集A,B,C的关联表示,
17、则可以利用的关联表示,则可以利用新的实体集新的实体集E,及三个关系,及三个关系RA,RB 和和RC 相应地表示相应地表示A,B,C之间的关之间的关系。系。H如果联系集如果联系集R有属性,将这些属性赋给实体集有属性,将这些属性赋给实体集E。并为。并为E建立一建立一个标识属性(因每个实体集都应该至少有个一属性,以区别实个标识属性(因每个实体集都应该至少有个一属性,以区别实体集中的各个成员)。体集中的各个成员)。H针对针对R中的每个联系中的每个联系(ai,bi,ci),在实体集,在实体集E中构造出一个新的中构造出一个新的实体实体ei,并将其与,并将其与A,B,C相应的实体关联,即在相应的实体关联,即
18、在RA中插入中插入(ei,ai),在,在RB中插入中插入(ei,bi),在,在RC中插入中插入(ei,ci)。1.19数据库系统概论数据库系统概论n可以将这一过程直接推广到可以将这一过程直接推广到n元联系集的情况。因元联系集的情况。因此概念上可以限制此概念上可以限制E-R图中只包含二元联系集。然而图中只包含二元联系集。然而,这种限制并不总让人满意。,这种限制并不总让人满意。H对于表示联系集对于表示联系集R而创建的实体集而创建的实体集E,为其创建,为其创建一个标识属性。该标识属性和附加的那些联系集一个标识属性。该标识属性和附加的那些联系集增加了设计的复杂程度以及对总的存储空间的需增加了设计的复杂
19、程度以及对总的存储空间的需求。求。HN元联系集可以更清晰地表示几个实体集参与到元联系集可以更清晰地表示几个实体集参与到一个联系集中。一个联系集中。H可能没有将三元联系上的约束转变为二元联系上可能没有将三元联系上的约束转变为二元联系上的约束的方法。例如,一个多对一的约束,从的约束的方法。例如,一个多对一的约束,从A、B到到C,这种约束就不能用联系集,这种约束就不能用联系集RA,RB 和和RC 上上的度约束来表示。的度约束来表示。1.20数据库系统概论数据库系统概论n联系属性的设置联系属性的设置 映射基数映射基数可以影响联系属性的设置。可以影响联系属性的设置。H 多对一或一对多多对一或一对多联系集
20、的属性可以归到联系的联系集的属性可以归到联系的“多方多方”实体集实体集,而不,而不是联系集。是联系集。H 一对一一对一联系集的属性可以归到参与的实体集的联系集的属性可以归到参与的实体集的任何一方任何一方,而不是联系,而不是联系集。集。1.21数据库系统概论数据库系统概论H对于对于多对多多对多联系集而言,属性设置的选择更明了。当一个属性由参与联系集而言,属性设置的选择更明了。当一个属性由参与的实体集共同决定,联系集属性的实体集共同决定,联系集属性必须必须归到归到多对多联系集多对多联系集。1.22数据库系统概论数据库系统概论Rectangles矩形表示实体集矩形表示实体集Diamonds菱形表示关
21、系集菱形表示关系集Lines直线用于连接实体集和属性,以及实体集与关系集直线用于连接实体集和属性,以及实体集与关系集Ellipses椭圆表示属性椭圆表示属性HDouble ellipses双线椭圆表示多值属性双线椭圆表示多值属性HDashed ellipses虚线椭圆表示派生属性虚线椭圆表示派生属性Underline 下划线标识主码属性下划线标识主码属性Double lines 双线双线表示一个实体表示一个实体全部参与全部参与联系集中联系集中Double Rectangles 双矩形双矩形表示表示弱实体集弱实体集1.23数据库系统概论数据库系统概论n关系集和实体集之间的基数的约束,通常使用带箭
22、头关系集和实体集之间的基数的约束,通常使用带箭头直线表示一,无箭头直线表示多。直线表示一,无箭头直线表示多。从从customer到到 loan:H一对多一对多1.24数据库系统概论数据库系统概论H多对一多对一H一对一一对一1.25数据库系统概论数据库系统概论1.26数据库系统概论数据库系统概论multivalued attributescomposite attributesderived attributes1.27数据库系统概论数据库系统概论n关系的实体集不一定要互异。关系的实体集不一定要互异。n“领导领导”和和“工人工人”两个称呼称为两个称呼称为“角色角色”;它们用于表;它们用于表示雇员
23、实体与关系集示雇员实体与关系集“受雇受雇”之间的关系。之间的关系。n角色在角色在E-R图中通过标识连接菱形和矩形的直线完成。图中通过标识连接菱形和矩形的直线完成。role1.28数据库系统概论数据库系统概论在非二元联系集中,可以标明一些多对一联系类型。在非二元联系集中,可以标明一些多对一联系类型。假设假设一个员工在每个支行最多只能有一份工作(比如,一个员工在每个支行最多只能有一份工作(比如,Jones不能在同一支行又当经理又当审计员)。这种约束可以从不能在同一支行又当经理又当审计员)。这种约束可以从联系集拉出一个箭头指向联系集拉出一个箭头指向job来表示。来表示。1.29数据库系统概论数据库系
24、统概论n只允许联系集外最多有一个箭头,否则会有两种解释:只允许联系集外最多有一个箭头,否则会有两种解释:H来自来自A1,A2,Ai的实体的一个特殊组合最多只的实体的一个特殊组合最多只能和来自能和来自Ai+1,Ai+2,An实体的一个组合相实体的一个组合相关。联系关。联系R的主码可以用的主码可以用A1,A2,Ai的主码的主码的并集来构造。的并集来构造。H对每个实体集对每个实体集Ak,ikn,来自其他实体集的每个,来自其他实体集的每个实体组合最多和来自实体组合最多和来自Ak的一个实体相关。每个集合的一个实体相关。每个集合A1,A2,Ak-1 Ak+1,An ,ikn,都形成一个候选码。都形成一个候
25、选码。A1RA2AiAi+1Ai+2An1.30数据库系统概论数据库系统概论Total participation完全参与完全参与(用双线表示用双线表示):实体集中的每实体集中的每个实体至少参与联系集中的一个联系。个实体至少参与联系集中的一个联系。例如,例如,loan是完全参与是完全参与 borrower。每笔贷款必须有一个顾。每笔贷款必须有一个顾客与之相关联。客与之相关联。Partial participation部分参与:某些实体可以不参与联系部分参与:某些实体可以不参与联系集中的任何联系。集中的任何联系。例如,例如,customer 部分参与部分参与 borrower。total par
26、ticipation1.31数据库系统概论数据库系统概论n基数限制也可以表示参与约束(基数限制也可以表示参与约束(每个实体参与联系的次数每个实体参与联系的次数)l.h:l 最小基数最小基数 h 最大基数最大基数l为为 1 表示完全参与。表示完全参与。h为为 1 表示实体至多参与一个联系。表示实体至多参与一个联系。h为为*表示没有限制。表示没有限制。1.*=完全参与完全参与如果一个二元联系的两条边都有最大值如果一个二元联系的两条边都有最大值1,此联系是一对一。,此联系是一对一。C1 L1 C2 L2C3 L3C4 L4C5一对多1.32数据库系统概论数据库系统概论weak entity set弱
27、实体集是指没有主键的实体集。弱实体集是指没有主键的实体集。弱实体集依赖于标识(强)实体集弱实体集依赖于标识(强)实体集identifying entity set。H弱实体集必然通过弱实体集必然通过一对多联系集一对多联系集与标识(强)实体集关联与标识(强)实体集关联。并且弱实体集并且弱实体集全部参与全部参与联系。联系。H标识性联系标识性联系用双边菱形框表示。用双边菱形框表示。弱实体集中的分辨符弱实体集中的分辨符discriminator(或称部分码)是(或称部分码)是一组属性,用于区分弱实体集中的实体。例,一组属性,用于区分弱实体集中的实体。例,payment-number区分同一笔贷款的不用
28、区分同一笔贷款的不用payment实实体。体。弱实体集的主码由弱实体集所依赖的强实体集的主码,弱实体集的主码由弱实体集所依赖的强实体集的主码,及弱实体集的分辨符构成。及弱实体集的分辨符构成。1.33数据库系统概论数据库系统概论付款的主码付款的主码(贷款号,付款号)(贷款号,付款号)n标识性联系集应该没有描述性属性,因为任何必需的属标识性联系集应该没有描述性属性,因为任何必需的属性都可和弱实体集关联。(因为一对多联系集)性都可和弱实体集关联。(因为一对多联系集)weak entity settotal participationIdentifying relationshipdiscrimina
29、tor1.34数据库系统概论数据库系统概论n弱实体集还可以参与标识性联系以外的其他联系。例,弱实体集还可以参与标识性联系以外的其他联系。例,payment实体实体可以参与与可以参与与account实体相关联的联系,以标识支付贷款的帐户。弱实实体相关联的联系,以标识支付贷款的帐户。弱实体集可以作为属主实体集参与到与另一个弱实体集的标识性联系中。体集可以作为属主实体集参与到与另一个弱实体集的标识性联系中。一个弱实体集也可能与不止一个属主实体集关联,这样一个特殊的弱一个弱实体集也可能与不止一个属主实体集关联,这样一个特殊的弱实体可以通过来自标识实体集的实体组合来标识。弱实体集的主码可实体可以通过来自
30、标识实体集的实体组合来标识。弱实体集的主码可以有标识实体集的主码的并集加上弱实体集的分辨符组成。以有标识实体集的主码的并集加上弱实体集的分辨符组成。n某些情况下,可以选择将一个弱实体集表述为它所属的实体集的一个某些情况下,可以选择将一个弱实体集表述为它所属的实体集的一个多值复合属性。例,实体集多值复合属性。例,实体集loan具有一个多值复合属性具有一个多值复合属性payment,它,它由由payment-number、payment-date和和payment-amount组成。如果组成。如果弱实体集只参与标识性联系,而且其属性不多,那么建模时将其表述弱实体集只参与标识性联系,而且其属性不多,
31、那么建模时将其表述为一个属性更合适。相反,如果弱实体集参与到标识性联系以外的联为一个属性更合适。相反,如果弱实体集参与到标识性联系以外的联系中,或者其属性较多时,则建模时将其表述为弱实体集更恰当。系中,或者其属性较多时,则建模时将其表述为弱实体集更恰当。同一门课会在不同学期上,而在一学期里会有同一门课的同一门课会在不同学期上,而在一学期里会有同一门课的几部分几部分。同一门。同一门课的不同提供由课的不同提供由semester和和Section-number来标识,分辨符是两个。来标识,分辨符是两个。semesterCourse-offeringccocoursecourse-numbername
32、M1Section-number1.35数据库系统概论数据库系统概论n自上而下的设计过程;在某实体集中标识出实自上而下的设计过程;在某实体集中标识出实体子集,有别于集合中的其它实体。体子集,有别于集合中的其它实体。n一个实体可以根据多个可区分的特征来进行特一个实体可以根据多个可区分的特征来进行特殊化。殊化。n当一个实体集有不只一种特殊化方式,则这个当一个实体集有不只一种特殊化方式,则这个特定实体可能同时属于多个特殊化实体集。特定实体可能同时属于多个特殊化实体集。n用标识成用标识成ISA的三角形构件表示(如客户的三角形构件表示(如客户“是是ISA”人)。人)。1.36数据库系统概论数据库系统概论
33、1.37数据库系统概论数据库系统概论n自下而上的设计过程自下而上的设计过程将一组实体集所共享将一组实体集所共享的特性组成较高层实体集。的特性组成较高层实体集。n特殊化和概括化是相对的;它们以相同的形式特殊化和概括化是相对的;它们以相同的形式表现在表现在E-R图中。图中。n术语特殊化和概括化可以互换。术语特殊化和概括化可以互换。n属性继承属性继承Attribute inheritance 低层实体低层实体集继承相关联的高层实体集的所有属性和参与集继承相关联的高层实体集的所有属性和参与的关系。的关系。1.38数据库系统概论数据库系统概论n确定哪些实体可以是给定低层实体集的成员的约确定哪些实体可以是
34、给定低层实体集的成员的约束。束。Hcondition-defined 条件定义(成员资格条件)条件定义(成员资格条件)例,高层实体集例,高层实体集account具有属性具有属性account-type(savings account或或checking account)。由于所有低层实体都基于同一属性(由于所有低层实体都基于同一属性(account-type)进行评估,这种类型的一般化称为是属)进行评估,这种类型的一般化称为是属性定义的。性定义的。Huser-defined 用户定义(用户指定)用户定义(用户指定)例,银行员工在三个月的雇佣期后被分配到例,银行员工在三个月的雇佣期后被分配到四个
35、工作组中的一个。四个工作组中的一个。1.39数据库系统概论数据库系统概论n同一概括中,确定实体是否可以同属于多个低层同一概括中,确定实体是否可以同属于多个低层实体集的约束实体集的约束HDisjoint 不相交(只属于一个低层实体)不相交(只属于一个低层实体)例,高层实体集例,高层实体集account具有属性具有属性account-type(savings account或或checking account),一个实体不能既是储蓄帐户又是支票帐户。一个实体不能既是储蓄帐户又是支票帐户。HOverlapping 重叠(可属于同一概括中的多重叠(可属于同一概括中的多个低层实体)个低层实体)例,银行员
36、工在三个月的雇佣期后被分配到四例,银行员工在三个月的雇佣期后被分配到四个工作组中的一个,假设某些经理参加到多个个工作组中的一个,假设某些经理参加到多个工作组中。工作组中。1.40数据库系统概论数据库系统概论n完备性性约束完备性性约束确定高层实体集中的实体是否必须确定高层实体集中的实体是否必须属于同一特殊(概括)中至少一个低层实体集。属于同一特殊(概括)中至少一个低层实体集。HTotal(double line)全部(每个高层实体必须属于一个低层实全部(每个高层实体必须属于一个低层实体集)体集)HPartial(line)部分(允许某些高层实体不属于任何低层实体集)部分(允许某些高层实体不属于任
37、何低层实体集)n完备性约束可以和第二类约束任意组合。完备性约束可以和第二类约束任意组合。employeeISAcustomerpersonsavings-accountISAchecking-accountaccountoverlappingpartial participationtotal participationdisjoint1.41数据库系统概论数据库系统概论1.42数据库系统概论数据库系统概论n联系集联系集works-on和和manages拥有重叠的信息。拥有重叠的信息。n通过通过聚集聚集aggregation消除冗余。消除冗余。H将联系视为抽象实体。将联系视为抽象实体。H允许联
38、系间有联系。允许联系间有联系。H联系抽象成为新实体。联系抽象成为新实体。n消除冗余后,下图说明如下:消除冗余后,下图说明如下:H雇员在特定部门的特定工作中工作,(也可以在不雇员在特定部门的特定工作中工作,(也可以在不同的部门,为不同的工作工作)。同的部门,为不同的工作工作)。H雇员、部门和工作的组合有一个相关的领导(管理雇员、部门和工作的组合有一个相关的领导(管理员)。员)。1.43数据库系统概论数据库系统概论1.44数据库系统概论数据库系统概论1.45数据库系统概论数据库系统概论1.46数据库系统概论数据库系统概论1.47数据库系统概论数据库系统概论n用实体集或属性表示对象。用实体集或属性表
39、示对象。n如何使用实体集或关系集最佳表达现实世界的概念。如何使用实体集或关系集最佳表达现实世界的概念。n三元关系的使用和一对二元关系的使用的对比。三元关系的使用和一对二元关系的使用的对比。n强或弱实体集的使用。强或弱实体集的使用。n特殊性和概括性的使用提高模块化设计能力。特殊性和概括性的使用提高模块化设计能力。n聚集的使用将聚集实体集视为单个单元,而不必关聚集的使用将聚集实体集视为单个单元,而不必关注其内部结构的细节。注其内部结构的细节。1.48数据库系统概论数据库系统概论n刻划数据需求阶段刻划数据需求阶段用户需求规格说明用户需求规格说明n概念设计阶段概念设计阶段功能需求规格说明功能需求规格说
40、明n逻辑设计阶段逻辑设计阶段n物理设计阶段物理设计阶段1.49数据库系统概论数据库系统概论1.50数据库系统概论数据库系统概论n主码使实体集和关系集可以表示为表,成为数主码使实体集和关系集可以表示为表,成为数据库的组成部分。据库的组成部分。n与某与某E-R图相对应的数据库可以表示为一组表。图相对应的数据库可以表示为一组表。n每一个实体集和关系集,都可以唯一地用一个每一个实体集和关系集,都可以唯一地用一个表表示,其名称可以使用相对应的实体集或关表表示,其名称可以使用相对应的实体集或关系集的名称。系集的名称。n每个表都有若干列(通常相当于属性),每一每个表都有若干列(通常相当于属性),每一列都有唯
41、一的名称。列都有唯一的名称。n从从E-R图产生出一个关系数据库设计中,将图产生出一个关系数据库设计中,将E-R图转换成表是基础。图转换成表是基础。1.51数据库系统概论数据库系统概论n强实体集转换成表时,拥有相同的属性。强实体集转换成表时,拥有相同的属性。nCartesian product 笛卡儿积笛卡儿积:D1D2 Dn (表有表有n列列)1.52数据库系统概论数据库系统概论n弱实体集转变为表后,包括一个用于标识强实体集的弱实体集转变为表后,包括一个用于标识强实体集的主码的列。主码的列。1.53数据库系统概论数据库系统概论联系集转变为表后,表中各列对应于联系集的每一个联系集转变为表后,表中
42、各列对应于联系集的每一个描述性属性,以及每一个用于标识强实体集的主码的描述性属性,以及每一个用于标识强实体集的主码的属性。属性。1.54数据库系统概论数据库系统概论n表示连接弱实体集及其标识性强实体集的联系集的表表示连接弱实体集及其标识性强实体集的联系集的表是冗余的。是冗余的。H例如,付款表已经包含了贷款例如,付款表已经包含了贷款-付款表中会出现的信付款表中会出现的信息(如列贷款号和付款号)息(如列贷款号和付款号)1.55数据库系统概论数据库系统概论n多对一和一对多的在多方全部参与的联系集,在表示时可多对一和一对多的在多方全部参与的联系集,在表示时可以在多方为一方的每一个主码属性和联系集的每一
43、个描述以在多方为一方的每一个主码属性和联系集的每一个描述性属性加一列。性属性加一列。H例如例如,不生成关系帐户,不生成关系帐户-部门表,而在帐户实体集中加一个部门表,而在帐户实体集中加一个部门属性。部门属性。1.56数据库系统概论数据库系统概论n一对一关系集,任何一方都可以用于表示一对一关系集,任何一方都可以用于表示“多多”方。即,附加的列可以加上任意一个实体集中。方。即,附加的列可以加上任意一个实体集中。n如果多方是部分参与,则多方中增加的列的属如果多方是部分参与,则多方中增加的列的属性值应允许使用空值。性值应允许使用空值。1.57数据库系统概论数据库系统概论n为复合属性的每个子属性创建一个
44、单独的列,而为复合属性的每个子属性创建一个单独的列,而不为复合属性自身创建一个单独的列。不为复合属性自身创建一个单独的列。customer-streetcustomercustomer-citycustomer-idcustomer-addresscustomer-namecustomer-idcustomer-namecustomer-streetcustomer-citycustomer1.58数据库系统概论数据库系统概论实体实体E的多值属性的多值属性M可以用单独的表可以用单独的表T来表示。来表示。表表T有对应有对应E的主码的属性和对应多值属性的主码的属性和对应多值属性M的的属性。属性。多
45、值属性中的每个值映射至表多值属性中的每个值映射至表T中的单独行。中的单独行。employee-idemployeedependent-nameemployee-idd-namedependent-name1.59数据库系统概论数据库系统概论n方法1:H为高层实体构造表。为高层实体构造表。H构成低层实体集的表,每个表中包含高层实体集的主码及本层构成低层实体集的表,每个表中包含高层实体集的主码及本层的属性。的属性。table table attributesaccount account-number,balance savings-account account-number,interest-
46、ratechecking-account account-number,overdraft-amountH缺点:取诸如存储账户的信息时需要存取两个表。缺点:取诸如存储账户的信息时需要存取两个表。account-numbersavings-accountoverdraft-amountaccountinterest-ratebalanceISAchecking-account1.60数据库系统概论数据库系统概论n方法2:H如果一般化是不相交的且完全的如果一般化是不相交的且完全的,不为高层实体集创建任何表。,不为高层实体集创建任何表。相反,为每个低层实体集构造一个表,带所有本层属性和继承属相反,为
47、每个低层实体集构造一个表,带所有本层属性和继承属性。性。table table attributessavings-account account-number,balance,interest-ratechecking-account account-number,balance,overdraft-amountH如果一般化是重叠的,如果一般化是重叠的,某些像余额这样的值将没必要地被存储两某些像余额这样的值将没必要地被存储两次。次。H如果一般化是部分的,如果一般化是部分的,某些实体不能表示出来。某些实体不能表示出来。1.61数据库系统概论数据库系统概论1.62数据库系统概论数据库系统概论cu
48、stomer-namecust-social-securitycustomer-streetcustomer-citycustomerloan-numberamountloancust-social-securityloan-numberborroweremp-social-securityemployee-namephone-numberemployeeemp-social-security cust-social-securityloan-numberloan-officer1.63数据库系统概论数据库系统概论n一、一个实体型转换为一个关系模式一、一个实体型转换为一个关系模式H关系的属性:
49、实体型的属性关系的属性:实体型的属性H关系的码:实体型的码关系的码:实体型的码n二、一个二、一个1:1联系可以转换为一个独立的关系模式,也可以联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。与任意一端对应的关系模式合并。H转换为一个独立的关系模式转换为一个独立的关系模式H 关系的属性:与该联系相连的各实体的码以及联系本关系的属性:与该联系相连的各实体的码以及联系本身的属性身的属性H 关系的候选码:每个实体的码关系的候选码:每个实体的码均是均是该关系的候选码该关系的候选码H与某一端对应的关系模式合并与某一端对应的关系模式合并H 合并后关系的属性:加入对应关系的码和联系本身的
50、合并后关系的属性:加入对应关系的码和联系本身的属性属性H 合并后关系的码:不变合并后关系的码:不变1.64数据库系统概论数据库系统概论n三、一个三、一个1:n联系可以转换为一个独立的关系模式,联系可以转换为一个独立的关系模式,也可以与也可以与n端对应的关系模式合并。端对应的关系模式合并。H转换为一个独立的关系模式转换为一个独立的关系模式H 关系的属性:与该联系相连的各实体的码以关系的属性:与该联系相连的各实体的码以及联系本身的属性及联系本身的属性H 关系的码:关系的码:n端实体的码端实体的码H与与n端对应的关系模式合并端对应的关系模式合并H 合并后关系的属性:在合并后关系的属性:在n端关系中加