590 likes | 927 Views
第 3 章 实体联系数据模型. 刘红岩 清华大学 管理科学与工程系 liuhy@sem.tsinghua.edu.cn. 主要内容. 基本 ER 数据模型 实体 联系 属性 结构约束 增强 ER 数据模型 特殊化/概括 聚集. 基本 ER 数据模型. 实体联系模型( Entity Relationship Model), 又称 ER 模型 , ER 图。 P. P. Chen 于1976年发表的一篇文章中提出 统一建摸语言( Unified Modeling Language, 简称 UML) 来图形表示 ER 模型
E N D
第3章 实体联系数据模型 刘红岩 清华大学 管理科学与工程系 liuhy@sem.tsinghua.edu.cn
主要内容 • 基本ER数据模型 • 实体 • 联系 • 属性 • 结构约束 • 增强ER数据模型 • 特殊化/概括 • 聚集 Hongyan Liu @ Tsinghua University
基本ER数据模型 • 实体联系模型(Entity Relationship Model),又称ER模型 ,ER 图。 • P. P. Chen 于1976年发表的一篇文章中提出 • 统一建摸语言(Unified Modeling Language,简称UML)来图形表示ER模型 • UML是一种可视化建模语言 ,1994年开始Rational 公司的3位面向对象方法学的创始人Rumbaugh、Booch和Jacobson先后开始合作,于1997年提交给对象管理组(Object Management Group,简称OMG),被采纳为面向对象建模方法的标准。 Hongyan Liu @ Tsinghua University
基本ER数据模型 • 实体(entity) • 凡是可以互相区别而可以被人们识别的事、物、概念等统统抽象为实体。 • 如:产品、销售、促销策略 • 具有共性的一类实体组成一个实体集(entity set)。 • 一般以大写字母表示实体集,小写字母表示实体。 • 以学生为例,设以ES表示学生实体集,e表示学生实体,则ES={e|e是学生} Hongyan Liu @ Tsinghua University
基本ER数据模型 • 弱实体(Weak Entity),或从属实体: 以另外一些实体的存在为前提,并且自身固有的属性中无法组成候选键 • 如:订单和订单细节 • 强实体和弱实体之间的这种依赖关系称为存在依赖 Hongyan Liu @ Tsinghua University
SalesPerson OrderDetail Order 基本ER数据模型 • 实体的图形表示 • 矩形框表示:单线矩形框和双线矩形框 • 框内是实体的名字 • 名字若用英文单词表示,每个英文单词的首字母都应大写, Hongyan Liu @ Tsinghua University
基本ER数据模型 • 联系(relationship) • 工人(Worker)与产品(Product)存在一种联系 • 工人王静负责产品羽毛球球拍的生产,张军负责足球的生产等。 • 两个实体集之间的联系,又称为二元联系(binary relationship) Worker Product Hongyan Liu @ Tsinghua University
基本ER数据模型 • n个实体之间的n元联系:一个n元元组的集合: {(e1, e2, …en) | e1E1,…, eiEi, …,enEn } • n称为该联系的度(degree)。 • n=1时的联系称为一元(unary)联系, • n=2时称为二元联系(binary relationship) • n=3时称为三元(ternary)联系, • n大于2的联系又成为复杂联系(complexrelationship) Hongyan Liu @ Tsinghua University
Produces Worker Product 基本ER数据模型 • 联系的图形表示 • 二元联系 • 用实线将参与联系的两个实体集连接起来 • 实线的上面是联系的名称和一个箭头 • 联系的名称一般用动词或动词短语表示 • 箭头用于表明参与实体与联系名称之间的关系 Hongyan Liu @ Tsinghua University
Worker (WorkerName) Product (PCode) Produces 王静 张军 李海 赵玲 202 101 201 基本ER数据模型 • 语义网络(semantic net): • 用符号代表实体, • 代表联系, • 连线将联系的参与实体连接起来 Hongyan Liu @ Tsinghua University
Worker (WorkerName) Worker (WorkerName) supervises Supervises 王静 张军 李海 赵玲 王静 张军 李海 赵玲 Supervisor Worker Supervisee 基本ER数据模型 • 一元联系,又称递归联系(recursive relationship):只有一个实体集参与但参与多次的联系 • 扮演两个不同的角色(role) Hongyan Liu @ Tsinghua University
Produces Worker Product WorkShop 基本ER数据模型 • 三元联系 • 用菱形框表示联系 Hongyan Liu @ Tsinghua University
基本ER数据模型 • 属性(attribute):用于描述实体或联系的每一个特性 • 描述销售员(SalesPerson)的属性: 工作证号(spID)、姓名(spName)、 性别(spSex)、出生日期(spBirthdate)、电话(spTelNo) • 描述学生和课程之间的选课联系的属性:分数(score) Hongyan Liu @ Tsinghua University
基本ER数据模型 • 属性的分类 • 简单属性(simple attribute) • 又称原子属性(atomic attribute) • 复合属性(composite attribute) • 如:销售员的地址:省、市、街道 • 单值属性(single-valued attribute) • 多值属性(multi-valued attribute) • 如:销售员的电话 • 派生属性(derived attribute) Hongyan Liu @ Tsinghua University
基本ER数据模型 • 候选键(candidate key):属性组的每一个取值可以唯一地决定实体集中的一个实体,而属性组的任一个真子集没有这个特性 • 如果候选键是包含两个以上属性的属性组,该候选键称为复合键(composite key) • 主键(primary key):从若干个候选键中选出的一个用于识别实体集中每一个实体的候选键 • 其他的候选键称为替补键(alternative key) Hongyan Liu @ Tsinghua University
SalesPerson spID {PK} spName spSex spBirthdate spTelNo[1..3] spSalary spBonus /totalSalary spAddress province city street zipCode 基本ER数据模型 • 属性的图形表示 • 属性的名称若用英文单词表示 • 单词的首字母小写,若包含多个单词或单词缩写,每个后续的单词或单词缩写的首字母大写 • 实体的矩形框分成上下两部分 • 上部是实体的名字, • 下部是各个属性的名字, Hongyan Liu @ Tsinghua University
SalesPerson spID {PK} spName spSex spBirthdate spTelNo[1..3] spSalary spBonus /totalSalary spAddress province city street zipCode 基本ER数据模型 • 实体的属性 • 若有主键,主键应列为第一个属性,且属性名后面加上主键的标记{PK} • 复合键:每个属性后{PPK} • 实体的简化图形表示 SalesPerson spID Hongyan Liu @ Tsinghua University
SalesPerson spID {PK} spName spSex spBirthdate spTelNo[1..3] spSalary spBonus /totalSalary spAddress province city street zipCode 基本ER数据模型 • 实体的属性 • 派生属性:在其属性名前加上一个斜线/; • 对于多值属性,用方括号指明取值个数的上下限,例如,[1..3] ,[1..*] • 对于复合属性,将其各个子成分缩进显示在复合属性名的下面。 Hongyan Liu @ Tsinghua University
基本ER数据模型 Order orderNo{PK} custerNo orderDate delivDate • 实体的属性 • 弱实体的属性中不存在主键,其主键需要其依赖的实体的主键和其本身的某些属性共同组成 OrderDetail itemNo qty discount Hongyan Liu @ Tsinghua University
Has SalesPerson spID beginDate Branch brachID 基本ER数据模型 • 联系的属性: • 显示于矩形框的下部,用虚线将矩形框与联系相连 Hongyan Liu @ Tsinghua University
E1 pk1 E2 pk2 R min1..max1 min2..max2 联系的约束 • 结构约束:描述参与联系的实体之间如何关联 • 在图形中通过参与度(min..max)来表示,对于E1与E2之间联系: • min2:实体集E1中实体的最小参与次数,即E1的一个实体最少与E2中min2个实体有联系 • max2:实体集E1中实体的最大参与次数,即E1的一个实体最多与E2中max2个实体有联系 Hongyan Liu @ Tsinghua University
SalesPerson (spID) Branch (BranchNo) Manages sp1 sp2 sp3 sp4 b1 b2 SalesPerson spID Branch brachID Manages 1..1 0..1 基本ER数据模型 • 参与度的确定和图形表示 Hongyan Liu @ Tsinghua University
SalesPerson spID Branch brachID Manages 1..1 0..1 基本ER数据模型 • 参与度→ 参与约束、基数约束 • 参与约束(participation constraint) • 全参与(total participation) • 部分参与(partial participation) • Min值反映参与约束 • Min1=0: E2是部分参与; Min2=0:E1是部分参与 • Min1>0: E2是完全参与; Min2>0:E1是完全参与 Hongyan Liu @ Tsinghua University
基本ER数据模型 • 基数约束(cardinality constraint):约束通过一个联系同另一个实体集中相联系的实体数目。用于二元联系时非常有用,也可以用于复杂联系。 • Max值反映基数约束,对于二元联系: • 1 对1: one to one • 1 对多: one to many • 多对多: many to many Hongyan Liu @ Tsinghua University
SalesPerson (spID) Branch (BranchNo) Manages sp1 sp2 sp3 sp4 b1 b2 SalesPerson spID Branch brachID Manages 1..1 0..1 1对1联系 • max1=1, max2=1: E1中的每个实体可以和E2中的0个或1个实体有联系,E2中的每个实体也可以和E1中的0个或1个实体有联系。
Branch (BranchNo) SalesPerson (spID) Has sp1 sp2 sp3 sp4 b1 b2 Branch branchID SalesPerson spID Has 1..1 1..* 1对多联系 • max1=1, max2=*或>1E1中的每个实体可以和E2中的任意多个实体有联系,E2中的每个实体可以和E1中的0个或1个实体有联系。 Hongyan Liu @ Tsinghua University
Order orderNo OrderDetail Contains 1..1 1..* 基本ER数据模型 • 弱实体的特点: • 强实体与弱实体之间是1对多联系 • 弱实体的存在以强实体的存在为前提,即存在依赖 • 弱实体本身的属性不足以构成其主键 Hongyan Liu @ Tsinghua University
OrderDetail (orderNo, itemNo) Product (pCode) ReferTo (21,1) (21,2) (21,3) (24,4) (23,1) 101 102 202 301 302 OrderDetail Product pCode ReferTo 0..* 1..1 基本ER数据模型 • 多对1联系 Hongyan Liu @ Tsinghua University
Product pCode Part partNo ConsistsOf 0..* 1..* Part (partNo) ConsistsOf Product (pCode) p1 p2 p3 p4 101 102 201 多对多联系 max1>1或=*, max2= *或>1 : E1中的每个实体可以和E2中的任意多个实体有联系,E2中的每个实体可以和E1中的任意多个实体有联系 Hongyan Liu @ Tsinghua University
Supervises 0..1 Worker (WorkerName) Worker (WorkerName) Supervisor supervises 0..* Worker 王静 张军 李海 赵玲 王静 张军 李海 赵玲 Supervisee 基本ER数据模型 • 一元联系:参与度写在角色附近 Hongyan Liu @ Tsinghua University
Worker/WorkShop (workerID, shopID) Product (PCode) Produces (since) (w1,ws1) (w2,ws1) (w1,ws2) (w2,ws2) (w3,ws1) 202 101 201 (2000-1-1) (2000-5-1) (2000-2-1) (2000-5-1) (2001-1-1) 基本ER数据模型 • 复杂联系:对于n元联系,先固定其中的n-1个实体集的取值,然后分析另一个实体集中的几个实体与其有关联 • 例如:三元联系Produces Hongyan Liu @ Tsinghua University
基本ER数据模型 • 三元联系的图形表示 0..* 0..1 Produces Worker Product 1..* WorkShop Hongyan Liu @ Tsinghua University
基本ER数据模型 • 某体育用品公司销售许多产品(product),在全国不同地方设立多个销售点(branch),每个销售点有多名销售人员(salesperson) 。每个客户(customer) 购买该公司的产品时,负责该客户的销售员要提交订单(order),以列出客户此次购买行为的相关信息,如客户编号、购买日期以及购买的商品的细节信息(orderdetail),如产品编号、数量、折扣等。每个订单最多有一个销售人员负责。 Hongyan Liu @ Tsinghua University
Customer custNo{PK} custName custTelNo custFaxNo ER模型 Branch branchID{PK} branchName branchTelNo branchAddress orderDate DelivDate 1..1 submit 1..* 1..1 Order orderNo{PK} Has 1..1 Responsible SalesPerson empID spTelNo spFaxNo 1..* 0..* 0..1 1..1 Contains 1..* OrderDetail pCode qty discount 0..* ReferTo 1..1 Product pCode{PK} pType pName price
常见问题 • 实体和联系 • 联系当作实体看待 • 语义表达不易理解 • 模型不够简洁 • 但不会丢失信息 • 实体当作联系看待 • 语义不易表达 • 数据冗余 Hongyan Liu @ Tsinghua University
常见问题 • 例如 • 语义:一个系与一个学生产生联系的同时对应一个班级? Department deptNo Student sNo Has 1..1 0..* classNo major year Hongyan Liu @ Tsinghua University
常见问题 • 数据冗余 Department (deptNo) Has Student (sNo) d1 d2 d3 101 102 201 202 301 Hongyan Liu @ Tsinghua University
Branch branchID SalesPerson spID OfficeRoom roomNo SalesPerson (spID) OfficeRoom (roomNo) Branch (BranchNo) WorksIn Has b1 b2 r11 r12 r21 r22 sp1 sp2 sp3 sp4 Has WorksIn 1..* 1..1 0..* 1..1 常见问题 • 信息丢失问题 • 裂缝陷阱(chasm trap) • 由于发生联系的实体之间的路径上存在一个或多个部分参与的实体而造成的。
Has Owns 1..1 1..* 1..1 1..* Branch branchID SalesPerson spID OfficeRoom roomNo SalesPerson (spID) Branch (BranchNo) OfficeRoom (roomNo) Has Owns r11 r12 r21 r22 sp1 sp2 sp3 sp4 b1 b2 常见问题 • 扇形陷阱(fan trap) • 由于一个实体的两侧分别有一个1:*的联系引起的 例:SalesPerson和OfficeRoom之间的正确联系无法得到
Branch branchID Department deptNo OfficeRoom roomNo SalesPerson spID Student sNo Class classID 常见问题 • 解决方法 Has WorksIn 1..* 1..1 0..* 1..1 1..1 1..* Owns Has Has 0..* 1..1 1..1 1..* Hongyan Liu @ Tsinghua University
Studies 1..* 0..* Student Course 0..* Teacher 常见问题 • 二元联系和复杂联系 Takes 0..* has 1..* 1..* 0..* Course Teacher Student Hongyan Liu @ Tsinghua University
常见问题 • 缺点: • 但这种转换使得模型更为复杂的同时,也使得n个实体参与到一个联系中的语义难以体现。 • 注意:一个n元联系一般与n个实体两两之间的联系经常是不等价的 Takes 0..* has 1..* 1..* 0..* Course Teacher Student Teaches Hongyan Liu @ Tsinghua University
主要内容 • 基本ER数据模型 • 实体 • 联系 • 属性 • 结构约束 • 增强(扩充)ER数据模型 • 特殊化/概括 • 聚集 Hongyan Liu @ Tsinghua University
EER模型 • 扩充ER数据模型 (extended entity relationship data model) 增强ER数据模型 (enhanced entity relationship data model) 简称为EER数据模型 • 特殊化(specialization) • 概括(generalization,普遍化) • 聚集(aggregation) Hongyan Liu @ Tsinghua University
增强ER模型 • 特殊化 • 特殊化是一个对实体集细化、逐步求精的过程 • 实体集中的部分实体具有一些区别于其他实体的特性,特性的取值可以将原来的实体集分解成或从中抽出几个实体子集 • 原来的实体集称为超类(或父类),而其每个子集称为子类。 • 例如:体育用品公司的所有职员Employee具有如下的共同特性:empID, empName, sex, age, empAddress。但工作性质不同,特殊化为工人(Worker)和销售员(SalesPerson) Hongyan Liu @ Tsinghua University
特殊化 • 特殊化的原因 • 子类具有超类不具有的属性。例如,工人可以具有技术级别(skill)属性,而销售员则具有联系电话(spTelNo)、传真(spFaxNo)等属性,这些属性是由其工作性质所决定的,在子类间不共享。 • 各子类参与不同于超类参与的联系。例如,工人与车间和产品之间存在联系,而销售员与销售分支机构等实体参与联系。 • 特殊化的重要特性是属性继承 • 一个超类实体的所有子类实体继承该超类的所有属性和联系 • 子类还可以继续特殊化成更低一层次的子类,低层次的子类继承其所有直接或间接超类的属性和联系。 Hongyan Liu @ Tsinghua University
Employee empID {PK} empName sex birthday empAddress {Optional, Or} Worker skill SalesPerson spTelNo spFaxNo 特殊化 • 图形表示 • “Is a” Hongyan Liu @ Tsinghua University
特殊化 • 约束:参与约束(participation constraint)和不相交约束(disjoint constraint) • 参与约束:描述超实体和子实体的关系 • 一种是强制(mandatory)类型:又称为全特殊化(total specialization),是指超类的每个实体都存在于某个或某些子类中 子类的并集等价于超类 • 一种是任选(optional)类型:又称为部分特殊化(partial specialization),指的是超类中的某些实体不存在于任何一个子类中。 Hongyan Liu @ Tsinghua University
特殊化 • 不相交约束:描述子类之间的关系的: • 重叠特殊化:超类中的实体可以同时属于多个同层次子类。 • 不相交特殊化:超类中的每个实体最多只能属于一个子类,即子类之间不相交 • 图形中约束的表示方法:{参与约束,不相交约束} • 参与约束: • Mandatory代表强制类型约束,全特殊化 • Optional代表任选类型约束,部分特殊化 • 不相交约束: • Or代表不相交类型约束 • And代表重叠类型约束。 Hongyan Liu @ Tsinghua University
特殊化 • 例:在大学中学习和工作的人有学生和教职员工。学生分研究生和本科生,按性别分男生和女生。教职员工分教工和职工两类,教工主要从事教学工作,而职工主要从事行政工作,有些人可能既担负教学工作,也担负一定的行政工作。请用特殊化的方法描述大学中的人员 Hongyan Liu @ Tsinghua University