数据库设计和模型幻灯片.ppt

上传人:石*** 文档编号:87332475 上传时间:2023-04-16 格式:PPT 页数:79 大小:4.38MB
返回 下载 相关 举报
数据库设计和模型幻灯片.ppt_第1页
第1页 / 共79页
数据库设计和模型幻灯片.ppt_第2页
第2页 / 共79页
点击查看更多>>
资源描述

《数据库设计和模型幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据库设计和模型幻灯片.ppt(79页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、数据数据库设计和模型和模型2023/4/11第1页,共79页,编辑于2022年,星期六第五章第五章:实体实体 联系模型联系模型n设计过程n建模n约束nE-R 图 n设计中的问题 n弱实体集 n扩展的 E-R 特性n银行数据库的设计n数据库设计的其他问题2023/4/11第2页,共79页,编辑于2022年,星期六设计过程设计过程n用户需求规格说明n概念设计阶段lE-R 模型n功能需求规格说明n逻辑设计l关系模式建立n物理设计l定义数据库物理特征n设计中主要陷阱l冗余l不完整性2023/4/11第3页,共79页,编辑于2022年,星期六建立模型建立模型n数据库可以被建模为:l实体集合l实体间的联系

2、n实体(实体(entity)是一个存在且区别于其他对象的对象l例子:特定的一个人/公司/事件/工厂n实体有属性(attributes)l例子:人有名字和住址n实体集(实体集(entity set)是具有相同类型,即相同性质或属性的实体集合l例子:所有人/公司/树/假期的集合2023/4/11第4页,共79页,编辑于2022年,星期六customer 和和 loan 实体集合实体集合customer_id customer_ customer_ customer_ loan_ amount name street city number2023/4/11第5页,共79页,编辑于2022年,星期六

3、联系集联系集n联系(联系(relationship)是一个几个实体间的关联例子:HayesdepositorA-102customer 实体联系集account 实体n联系集(联系集(relationship set)是一个n 2 实体集间的数学关系(这些实体集不必互异),来源于实体集(e1,e2,en)|e1 E1,e2 E2,en En这里(e1,e2,en)是联系l例子:(Hayes,A-102)depositor2023/4/11第6页,共79页,编辑于2022年,星期六联系集联系集 borrower2023/4/11第7页,共79页,编辑于2022年,星期六联系集联系集(Cont.)

4、n属性属性可以是一个联系集中的性质(property)n例如,customer 和 account实体集间的depositor 联系集可以有属性access-date2023/4/11第8页,共79页,编辑于2022年,星期六联系集的度(联系集的度(degree)n指参与一个联系集的实体集数目n涉及两个实体集的联系集叫做二元(binary)(或两度)。总体上,大多数数据库系统中的联系集是二元的。n联系集可以涉及两个以上的实体集n涉及两个以上的实体集的联系集很少见4例子:假设银行的雇员(employees)可以在多个支行有工作,在不同支行有不同工作。于是在实体集 employee、job 和 b

5、ranch间存在一个三元联系集2023/4/11第9页,共79页,编辑于2022年,星期六属性属性n实体由属性集代表,即实体集所有属性具有的描述性的性质 n域(域(Domain)每个属性允许的取值 n属性的类型:l简单(simple)和复合(composite)属性l单值(Single-valued)和 多值(multi-valued)属性4例子:多值属性 phone_numbersl派生(Derived)属性4能够从其他属性计算得来4例子:给定 date_of_birth,得到 age例子:customer=(customer_id,customer_name,customer_street

6、,customer_city)loan=(loan_number,amount)2023/4/11第10页,共79页,编辑于2022年,星期六复合(复合(composite)属性)属性2023/4/11第11页,共79页,编辑于2022年,星期六映射基数约束映射基数约束n表示一个实体通过一个联系集能够与多少个实体相关联n在二元联系集中非常有用n对二元联系集,映射基数必须是下列类型之一:l一对一l一对多l多对一l多对多 2023/4/11第12页,共79页,编辑于2022年,星期六映射基数(映射基数(Mapping Cardinalities)一对一一对多注意:A 和 B 中一些元素可以不被映射

7、到另一集合中的任何元素上2023/4/11第13页,共79页,编辑于2022年,星期六映射基数(映射基数(Cont.)多对一多对多注意:A 和 B 中一些元素可以不被映射到另一集合中的任何元素上2023/4/11第14页,共79页,编辑于2022年,星期六码码n超码:唯一标识别实体集中一个实体的属性集 n候选码:最小的超码n主码:被选中的候选码2023/4/11第15页,共79页,编辑于2022年,星期六联系集的码联系集的码n参与联系的实体集的主码的组合形成联系集的一个超码l(customer_id,account_number)是 depositor 的一个超码l注意:这意味着实体集对能在特

8、定的联系集中最多有一个联系 4例子:如果需要对每个customer访问每个account跟踪所有 access_dates,我们不能对每次访问假定一个联系。但,我们可以使用多值属性n当确定候选码时,必须考虑联系集的映射基数n当在多于一个候选码中选择主码时,需要考虑联系集的语义2023/4/11第16页,共79页,编辑于2022年,星期六E-R 图图n矩形:实体集n菱形:联系集n线段:将属性连接到实体集,将实体集连接到联系集n椭圆:属性l双线:多值属性l虚线:派生属性n下划线:主码属性2023/4/11第17页,共79页,编辑于2022年,星期六E-R 图:复合、多值、派生属性图:复合、多值、派

9、生属性2023/4/11第18页,共79页,编辑于2022年,星期六具有属性的联系集具有属性的联系集2023/4/11第19页,共79页,编辑于2022年,星期六角色角色n一个联系的实体集不需要是相异的n如下,标签“manager”和“worker”叫做角色(roles),它们指定employee 实体如何通过 works_for 联系集交互nE-R图中通过标示连接矩形和菱形的线段来表示角色n角色标签可选,用来阐明联系的语义2023/4/11第20页,共79页,编辑于2022年,星期六基数约束(基数约束(Cardinality Constraints)n基数约束表示为联系集和实体集间的有向或无

10、向线段:l()表示“一”l()表示“多”n一对一联系:l一个customer 通过联系borrower 最多与一个loan关联l一个 loan通过联系borrower 最多与一个customer关联2023/4/11第21页,共79页,编辑于2022年,星期六一对多联系一对多联系n在一对多联系中,一个customer 通过联系borrower 与多个(包括零个)loan关联,一个 loan通过联系borrower 最多与一个customer关联2023/4/11第22页,共79页,编辑于2022年,星期六多对一联系多对一联系n在多对一联系中,一个customer 通过联系borrower最多与

11、一个loan关联,一个 loan通过联系borrower 与多个(包括零个)customer关联2023/4/11第23页,共79页,编辑于2022年,星期六多对多联系多对多联系n一个 customer 通过联系borrower 与多个loan(包括零个)关联n一个 loan通过联系borrower 与多个(包括零个)customer关联2023/4/11第24页,共79页,编辑于2022年,星期六实体集在联系集上的参与实体集在联系集上的参与n全参与(双线表示):实体集上每个实体参与联系集上的至少一个联系l例如:loan 在 borrower 上的参与是全参与4 每个 loan 必须有一个cu

12、stomer 通过borrower 与之关联n部分参与:某些实体可以不参与联系集中任何联系l例如:customer 在 borrower 上的参与是部分参与2023/4/11第25页,共79页,编辑于2022年,星期六基数约束的另一种表示符号基数约束的另一种表示符号n基数约束也能表示为参与约束2023/4/11第26页,共79页,编辑于2022年,星期六几种表示比较几种表示比较2023/4/11第27页,共79页,编辑于2022年,星期六三元联系三元联系E-R图图2023/4/11第28页,共79页,编辑于2022年,星期六三元联系的基数约束三元联系的基数约束n我们只允许三元(或更高度数)联系

13、最多有一个箭头来表示基数约束n如:一个从 works_on 到 job 的箭头表示每个雇员在任一支行最多有一个工作n如果有超过一个箭头,则有两种意思解释:l如:一个A,B 和 C间的三元联系R,箭头到 B 和 C 可以有如下意思:1.每个A 实体与 B 和 C中唯一的实体相关联 2.每个(A,B)中实体对与C中唯一实体关联,且每个(A,C)中实体对与B中唯一实体关联l上面二者有不同的形式l为避免混乱,我们规定超过一个箭头为非法2023/4/11第29页,共79页,编辑于2022年,星期六设计问题设计问题n实体集实体集 vs.属性属性选择主要基于建模企业的结构,以及所讨论的属性的语义n实体集实体

14、集 vs.联系集联系集可能的指导在于设计一个联系集去描述两个实体间的动作n二元联系集二元联系集 vs.n元联系集元联系集 尽管可能用多个互异的二元联系集代替任何一个非二元(n 2)联系集,一个 n 元联系集能够将多个实体参与一个联系表现的更清楚n联系属性的布局联系属性的布局2023/4/11第30页,共79页,编辑于2022年,星期六实体集实体集 vs.属性属性2023/4/11第31页,共79页,编辑于2022年,星期六实体集实体集 vs.联系集联系集2023/4/11第32页,共79页,编辑于2022年,星期六二元联系二元联系 vs.非二元联系非二元联系n有些非二元联系表示为二元联系更好l

15、例子:三元联系 parents,关联一个 child 到 他/她的 father 和 mother,该联系以两个二元联系father 和 mother表达更好 4使用两个二元联系允许部分信息(如:只知道mother)l但一些联系是“自然的”非二元4例如:works_onl思考:民政局要记录人的家庭(婚姻、亲子(血亲、非血亲)、社会(工作)关系。提示:一个实体“人”。2023/4/11第33页,共79页,编辑于2022年,星期六非二元联系转换为二元形式非二元联系转换为二元形式 n总之,通过建立一个人为的实体集,任何非二元联系能够被二元联系替换。l使用实体集 E以及三个联系集,代替A、B 和 C

16、间的联系 R:1.RA,关联 E 和 A 2.RB,关联 E 和 B3.RC,关联 E 和 Cl为 E 建立一个特殊的标识属性l如果联系集 R 有属性,将其赋给实体集 E l对 R 中每个联系(ai,bi,ci),建立 1.实体集 E 中的一个新的实体 ei 2.增加(ei,ai)到 RA 3.增加(ei,bi)到 RB 4.增加(ei,ci)到 RC2023/4/11第34页,共79页,编辑于2022年,星期六非二元联系转换为二元形式非二元联系转换为二元形式(Cont.)n并需要约束转换l转换所有约束也许不可能l在转换后的模式的实例中,可能有的实例不能与 R 中任何实例相对应4练习:增加约束

17、到联系RA、RB 和 RC,以确保新建立的实体对应于实体集A、B 和 C每个中严格的一个实体l我们能够避免建立标识属性,通过使E 成为一个被三个联系集标识的弱实体集2023/4/11第35页,共79页,编辑于2022年,星期六联系属性的布局:映射基数影响联系属性的布局:映射基数影响E-R设计设计n如果每个帐户只能有一个客户,可以让 access-date 成为 account 的一个属性,而不是联系的属性,l即是,该从account到customer联系是多对一(等价地,customer到 account是一对多)2023/4/11第36页,共79页,编辑于2022年,星期六弱实体集(弱实体集

18、(Weak Entity Sets)n一个没有主码的实体集称为弱实体集(弱实体集(weak entity set)n弱实体集的存在依赖于标识实体集标识实体集(identifying entity set)或属主实体集(属主实体集(owner entity set)的存在l它必须与标识实体集通过一个从标识实体集到弱实体集的完全、一对多的联系集相连l标识性联系(标识性联系(Identifying relationship)使用双线菱形描画n弱实体集的分辨符(分辨符(discriminator)(或部分码)是区分弱实体集的所有实体的属性集合n弱实体集的主码由弱实体集存在依赖于的强实体集的主码,加上弱

19、实体集的分辨符组成2023/4/11第37页,共79页,编辑于2022年,星期六弱实体集弱实体集(Cont.)n使用双线矩形描画弱实体集n使用虚线下划线描画弱实体集的分辨符npayment_number payment 实体集的分辨符npayment 的主码 (loan_number,payment_number)2023/4/11第38页,共79页,编辑于2022年,星期六弱实体集弱实体集(Cont.)n注意:强实体集主码并不显式地存储在弱实体集中,因为它隐含在标识性联系中n如果 loan_number 被显式存储,payment 应该成为强实体,但这样payment 和 loan 间的联系

20、被一个隐含联系重复了,该隐含的联系被payment 和 loan共有的属性 loan_number 定义了n弱实体集可以参与标识性联系以外的其他联系n弱实体集可以作为属主参与到与另一个弱实体集的标识性联系中n弱实体集可以与不止一个标识实体集联系n如果弱实体集属性不多,也没有参与到标识性联系以外的其他联系,我们可以选择将弱实体集表示为属主实体集的一个多值复合属性2023/4/11第39页,共79页,编辑于2022年,星期六更多弱实体集例子更多弱实体集例子n在大学里,course 是强实体,course_offering 能够被建模为弱实体ncourse_offering的分辨符可以是 semes

21、ter(包括 year)和section_number (如果有超过一个部分)n如果我们建模 course_offering 为一个强实体,我们应该建模course_number 为一个属性。这样,与 course 的联系应该隐含course_number 属性,就重复了。2023/4/11第40页,共79页,编辑于2022年,星期六扩展的扩展的 E-R 特性特性:特殊化(特殊化(Specialization)n自上而下(自上而下(top-down)的设计过程。我们在一个实体集中设计互异的子群n这些子群变成低层实体集,这些实体集有属性或参与对高层实体集不适用的联系n三角形组件描画,标示为 IS

22、A(如:customer“is a”person)n属性继承属性继承 一个低层实体集继承其相连高层实体集的全部属性,以及继承地参与到其高层实体集参与的联系中l单继承:给定低层实体集参与到一个ISA联系中l多继承:给定低层实体集参与到一个以上ISA联系中2023/4/11第41页,共79页,编辑于2022年,星期六特殊化例子特殊化例子2023/4/11第42页,共79页,编辑于2022年,星期六扩展扩展 E-R 特性特性:泛化(泛化(Generalization)n自下而上(自下而上(bottom-up)设计过程 组合共享同样特性的实体集到高层实体集n特殊化和泛化是简单的互逆过程,在 E-R 图

23、中以同样方式描画n术语特殊化和泛化常被互换地使用2023/4/11第43页,共79页,编辑于2022年,星期六特殊化和泛化特殊化和泛化(Cont.)n基于不同的特性,实体集可以有多种特殊化方式 n如:permanent_employee vs.temporary_employee,以及 officer vs.secretary vs.tellern每个特定的 employee 应该是 lpermanent_employee 或 temporary_employee 的一个成员 l同时也是officer、secretary 或 teller 的一个成员 nISA 联系也用来指代 父类父类 子类(

24、子类(superclass subclass)联系2023/4/11第44页,共79页,编辑于2022年,星期六特殊化特殊化/泛化上的约束设计泛化上的约束设计n判定哪些实体能够成为给定低层实体集的成员l条件定义的4成员资格的确定基于实体是否满足一个显式的条件或谓词4例子:所有65岁以上的客户是 senior-citizen 的成员,senior-citizen ISA personl用户定义的4不是条件判定,而是用户指派n约束或非约束的实体可以属于单一泛化中超过一个低层实体集l分离的(分离的(disjoint)4一个实体只能够属于一个低层实体集4注意 E-R 图中在 ISA 三角旁书写disj

25、oint l重叠的(重叠的(overlapping)4一个实体能够属于超过一个低层实体集2023/4/11第45页,共79页,编辑于2022年,星期六特殊化特殊化/泛化上的约束设计泛化上的约束设计(Cont.)n完全性约束(完全性约束(Completeness constraint)-指定一个高层泛化实体集是否必须属于至少一个低层实体集l全部特殊化或泛化全部特殊化或泛化:一个实体必须属于低层实体集中的一个l部分特殊化或泛化部分特殊化或泛化:一个实体不需要属于低层实体集中的一个2023/4/11第46页,共79页,编辑于2022年,星期六聚集(聚集(Aggregation)n 考虑前面提到的三元

26、联系 works_onn 假设我们想要记录管理者,该管理者管理一个支行的一个雇员完成的工作2023/4/11第47页,共79页,编辑于2022年,星期六聚集聚集(Cont.)n联系集 works_on 和 manages 代表重叠的信息l每个manages 联系对应于一个 works_on 联系l但是,一些 works_on 联系可以不对应于任何manages 联系 4所以我们不能丢弃 works_on 联系n通过聚集可以消除这种冗余l允许联系间的联系l把联系当成一个抽象实体对待l抽象联系成为新实体n不再引入冗余,下面图形代表:l一个雇员在特定支行的特定工作(job)上工作(work on)l

27、一个雇员(employee)、支行(branch)、工作(job)的组合可以有一个关联的管理者(manager)2023/4/11第48页,共79页,编辑于2022年,星期六包含聚集的包含聚集的E-R图图 2023/4/11第49页,共79页,编辑于2022年,星期六E-R 图使用的符号汇总图使用的符号汇总2023/4/11第50页,共79页,编辑于2022年,星期六符号汇总符号汇总(Cont.)2023/4/11第51页,共79页,编辑于2022年,星期六E-R 设计决定设计决定n使用属性或实体集代表一个对象n一个真实世界中的概念最好表示为实体集或联系集n使用三元联系或二元联系n使用强实体集

28、或弱实体集.n使用特殊化/泛化 对设计中的模块结构有贡献n使用聚集 能够将聚集实体集当成单个单元对待,而不必关心其内部结构n正确的设计决定来源于对被建模企业的深刻理解!2023/4/11第52页,共79页,编辑于2022年,星期六银行数据库设计银行数据库设计n银行数据库的数据需求n银行数据库中的实体集n银行数据库中的联系集n银行数据库中的E-R图2023/4/11第53页,共79页,编辑于2022年,星期六银行数据库的数据需求银行数据库的数据需求n银行有多个支行。每个支行位于某个城市,由唯一的名字标识。银行监控每个支行的资产。n银行的客户通过其customer_id值来标识。银行存储每个客户的

29、姓名及其居住的街道和城市。客户可以有账户,并且可以贷款。客户可能同某个银行员工发生联系,该员工作为此客户的贷款负责人或私人助理。n银行员工通过其employee_id值来标识。银行的管理机构存储每个员工的姓名、电话号码、亲属姓名及其经理的employee_id号码。银行还需要知道员工开始工作的日期,由此日期可以推知员工的雇佣期。2023/4/11第54页,共79页,编辑于2022年,星期六银行数据库的数据需求(银行数据库的数据需求(Cont.)n银行提供两类账户支票账户和储蓄存款账户。账户可以由两个或两个以上客户共有,一个客户也可以有两个或两个以上的账户。每个账户被赋予唯一的账户号。银行记录每

30、个账户的余额以及每个账户拥有者访问该账户的最近日期。另外,每个储蓄存款账户有其利率,而每个支票账户有其透支额。n每笔贷款由某个支行发放,能被一个或多个客户所共有。一笔贷款用一个唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次还款情况。虽然贷款的还款号并不能唯一地标识银行所有贷款中的某个特定的还款,但可以唯一地标识对某贷款的所还款项。对每次的还款需要记载其日期和金额。真实的银行中,还应像记载对贷款的所还款项那样来记载每个储蓄存款账户或支票账户中取出或存入的金额。由于这些记载的建模过程类似,并且为了保持示例的简洁性,在我们的模型中不考虑对存款和取款的记录。2023/4/11第55页,共79页

31、,编辑于2022年,星期六银行数据库中的实体集银行数据库中的实体集 数据需求规格说明是建造数据库概念模式的出发点。由前面数据需求规格说明所列举的特点,我们开始标识实体集及其属性:n实体集branch,具有属性branch_name、branch_city和assets。n实体集customer,具有属性customer_id、customer_name、customer_street和customer_city。此外还可以考虑加上属性banker_name。n实体集employee,具有属性employee_id、employee_name、telephone_number、salary和ma

32、nager;此外还包括多值属性dependent_name,基属性start_date及其派生属性employment_length。2023/4/11第56页,共79页,编辑于2022年,星期六银行数据库中的实体集(银行数据库中的实体集(Cont.)n两个账户实体savings_account和checking_account,它们共同的属性是account_number和balance;此外savings_account还具有属性interest_rate,checking_account还具有属性overdraft_amount。n实体集loan,具有属性loan_number、amou

33、nt和originating_branch。n弱实体集payment,具有属性payment_number、payment_date和payment_amount。2023/4/11第57页,共79页,编辑于2022年,星期六银行数据库中的联系集银行数据库中的联系集在前面的设计模式上,我们定义如下联系集和映射基数。在这个过程中我们还要对前面关于实体集属性的决策进一步精化。nborrower,是customer和loan间的一个多对多联系集。nloan_branch,指明产生贷款的银行支行的多对一联系集。注意这个联系代替了loan实体集的originating_branch属性。nloan_pa

34、yment,从loan到payment的一对多联系集,表明一笔款项是为某笔贷款而付的。2023/4/11第58页,共79页,编辑于2022年,星期六银行数据库中的联系集(银行数据库中的联系集(Cont.)ndepositor,具有联系属性access_date,是customer和account间的多对多联系集,表明某个客户拥有某个账户。ncust_banker,具有联系属性type的一个多对一联系集,表明一个客户可以从一个银行员工处获得建议,而一个银行员工可以为一个或多个客户提供建议。注意这个联系集代替了customer实体集的banker_name属性。nworks_for,具有manag

35、er角色和具有worker角色的employee实体之间的联系集;其映射基数表明了一个员工仅为一个经理工作,而一个经理监督一个或多个员工。请注意我们用这一联系集代替了employee实体集的manager属性。2023/4/11第59页,共79页,编辑于2022年,星期六银行的银行的 E-R 图图 2023/4/11第60页,共79页,编辑于2022年,星期六从从E-R图转换到关系模式图转换到关系模式n主码允许实体集和联系集一律被表示为数据库的关系模式n一个符合E-R图的数据库能够被模式集所表示n对每个实体集和联系集有一个唯一的模式,该模式被赋予相应实体集或联系集的名字n每个模式有限个列(总体

36、上对应于属性),每个列有唯一的名字2023/4/11第61页,共79页,编辑于2022年,星期六实体集表示为模式实体集表示为模式n强实体集转换为具有同样属性的模式n弱实体集转换为包含标识实体集主码的表,如:payment=(loan_number,payment_number,payment_date,payment_amount)2023/4/11第62页,共79页,编辑于2022年,星期六联系集表示为模式联系集表示为模式n一个多对多联系集表示为一个具有(两个)参与实体集主码的模式,并且该模式包含所有该联系集的描述性属性 n例子:联系集borrower的关系模式:borrower=(cust

37、omer_id,loan_number)2023/4/11第63页,共79页,编辑于2022年,星期六模式中的冗余模式中的冗余n在多边全参与的多对一以及一对多联系集,能够被表示为:增加一个额外的属性到“多”边,该属性包含“一”边的主码n例子:不是为联系集account_branch 建立模式,而是增加一个属性branch_name 到由实体集account建立的模式中n模式account的主码应当还是account_number,但应当增加外码约束branch_name到模式branch)2023/4/11第64页,共79页,编辑于2022年,星期六模式中的冗余模式中的冗余(Cont.)n对一

38、对一联系集,任何一边能够用来做“多”边对待l即,额外的属性能够增加到与任何一个实体集相应的模式中 n如果在“多”边是部分参与,可如前处理,但将造成“多”边(所增加的属性)的null值n连接弱实体集和标识强实体集的联系集的相应模式是冗余的l例子:payment 模式包含了出现在loan_payment模式中的属性(即,loan_number 和 payment_number)2023/4/11第65页,共79页,编辑于2022年,星期六复合及多值属性复合及多值属性n复合属性处理:为每个组成属性建立一个分离的属性l例子:实体集 customer 有复合属性 name,name 包含组成属性firs

39、t_name 和 last_name,则相应模式包含两个属性 first_name 和 last_namen实体 E 的多值属性 M 由单独的模式 EM 表示l模式 EM 有对应于 E 的主码及多值属性 M 组成的的属性集l例子:employee的多值属性 dependent_names 表示为如下模式:employee_dependent_names=(employee_id,dname)l每个多值属性的值映射到在模式 EM 上的关系的一个单独的元组4例子:一个主码为123-45-6789的 employee 实体及亲属Jack 和 Jane 映射到两个元组:(123-45-6789,Jac

40、k)and(123-45-6789,Jane)2023/4/11第66页,共79页,编辑于2022年,星期六特殊化表示为模式特殊化表示为模式n方法 1:l为上层实体集建立一个模式 l为每个低层实体集建立一个模式,包含本地属性和高层实体集的主码 schema attributes person name,street,city customer name,credit_rating employee name,salaryl缺点:得到关于的 employee 的信息需要访问连个关系,分别对应于一个高层已一个低层模式2023/4/11第67页,共79页,编辑于2022年,星期六泛化表示为模式泛化表

41、示为模式(Cont.)n方法 2:l对每个实体集建立模式,该模式包含所有本地和继承的属性schema attributes person name,street,city customer name,street,city,credit_rating employee name,street,city,salaryl如果是全部泛化,泛化的实体集(person)对应的模式不需要存储信息4可以被定义为包含泛化关系的视图关系4但因为外码约束,显式的模式定义可能依然需要l缺点:对同时是客户和雇员的人,street 和 city 可能被重复存储2023/4/11第68页,共79页,编辑于2022年,星期

42、六聚集表示为模式聚集表示为模式n为表示聚集,建立模式包含如下内容:l聚集的联系集的主码l关联的实体集的主码l联系集的所有描述性属性n例子:为表示聚集 works_on 和实体集manager间的联系集manages,建立如下模式:manages(employee_id,branch_name,title,manager_name)2023/4/11第69页,共79页,编辑于2022年,星期六银行的关系模式银行的关系模式n强实体集导出的模式n多值属性导出的模式n关联强实体集的联系集导出的模式n弱实体集导出的模式nISA联系导出的模式n外码约束2023/4/11第70页,共79页,编辑于2022年

43、,星期六银行的关系模式银行的关系模式(Cont.)n强实体集导出的模式lbranch=(branch_name,branch_city,assets)lcustomer=(customer_id,customer_name,customer_street,customer_city)lloan=(loan_number,amount)laccount=(account_number,balance)lemployee=(employee_id,employee_name,telephone_number,start_date)n多值属性导出的模式ldependent_name=(employe

44、e_id,d_name)2023/4/11第71页,共79页,编辑于2022年,星期六银行的关系模式银行的关系模式(Cont.)n关联强实体集的联系集导出的模式laccount_branch=(account_number,branch_name)lloan_branch=(loan_number,branch_name)lborrower=(customer_id,l oan_number)ldepositor=(customer_id,account_number)lcust_banker=(customer_id,employee_id,type)lworks_for=(worker_e

45、mployee_id,manager_employee_id)n弱实体集导出的模式lPayment=(loan_number,payment_number,payment_date,payment_amount)nISA联系导出的模式(允许账户既不是储蓄存款账户也不是支票账户的情况)lsavings_account=(account_number,interest_rate)lchecking_account=(account_number,overdraft_amount)n外码约束2023/4/11第72页,共79页,编辑于2022年,星期六UMLnUML:Unified Modeling

46、 LanguagenUML 具有为整个系统建立图示模型的很多组件nUML 类图(Class Diagrams)对应于 E-R 图,但有一些不同2023/4/11第73页,共79页,编辑于2022年,星期六UML 类图符号汇总类图符号汇总UML中非二元联系使用菱形(同E-R图)E-R UML(1.3后也使用菱形表示联系)2023/4/11第74页,共79页,编辑于2022年,星期六UML 类图符号汇总类图符号汇总(Cont.)*基数约束标画位置是反的(3项右边的图:E2 to E1是多对一)*泛化可以独立disjoint/overlapping于之外使用汇合或分支的箭头overlappingdi

47、sjoint2023/4/11第75页,共79页,编辑于2022年,星期六课堂练习课堂练习n1。为车辆保险公司设计一个E-R图。每个客户有一辆或多辆车,每辆车可以关联0次或多次事故的纪录。2023/4/11第76页,共79页,编辑于2022年,星期六课堂练习解答课堂练习解答2023/4/11第77页,共79页,编辑于2022年,星期六课后练习课后练习n考虑一个为期末考试安排教室的大学数据库。这个数据库可被建模为单个的实体集exam,它具有属性course_name、section_number、room_number 和 time。也可以定义一个或多个附加实体集,同时用联系集来代替 exam 实体集的一些属性,例如:lcourse有属性name、department和c_numberlsection有属性s_number和enrollment,并作为依赖于course的一个弱实体集。lroom有属性r_number、capacity 和 building。a用 E-R 图来说明如何使用这三个附加实体集。b对于每个附加实体集,解释哪些应用特点会对决定是否加入它产生影响。2023/4/11第78页,共79页,编辑于2022年,星期六第五章结束第五章结束2023/4/11第79页,共79页,编辑于2022年,星期六

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com