数据库设计和模型幻灯片.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据库设计和模型幻灯片.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 联系也用来指代 父类父类 子类(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 模型 幻灯片
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内