Transcript 实体联系模型
第3章 实体联系数据模型
刘红岩
清华大学 管理科学与工程系
[email protected]
主要内容
基本ER数据模型
实体
联系
属性
结构约束
增强ER数据模型
特殊化/概括
聚集
Hongyan Liu @ Tsinghua University
2
基本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
3
基本ER数据模型
实体(entity)
凡是可以互相区别而可以被人们识别的事、物、
概念等统统抽象为实体。
如:产品、销售、促销策略
具 有 共 性 的 一 类 实 体 组 成 一 个 实 体 集 ( entity
set)。
一般以大写字母表示实体集,小写字母表示实体。
以学生为例,设以ES表示学生实体集,e表示学生实体,
则ES={e|e是学生}
Hongyan Liu @ Tsinghua University
4
基本ER数据模型
弱实体(Weak Entity),或从属实体:
以另外一些实体的存在为前提,并且自身
固有的属性中无法组成候选键
如:订单和订单细节
强实体和弱实体之间的这种依赖关系称为
存在依赖
Hongyan Liu @ Tsinghua University
5
基本ER数据模型
实体的图形表示
矩形框表示:单线矩形框和双线矩形框
框内是实体的名字
名字若用英文单词表示,每个英文单词的首字
母都应大写,
Order
Hongyan Liu @ Tsinghua University
OrderDetail
SalesPerson
6
基本ER数据模型
联系(relationship)
工人(Worker)与产品(Product)存在一
种联系
工人王静负责产品羽毛球球拍的生产,张军负
责足球的生产等。
两个实体集之间的联系,又称为二元联系
(binary relationship)
Worker
Hongyan Liu @ Tsinghua University
Product
7
基本ER数据模型
n个实体之间的n元联系:一个n元元组
的集合:
{(e1, e2, …en) | e1E1,…, eiEi, …,enEn }
n称为该联系的度(degree)。
n=1时的联系称为一元(unary)联系,
n=2时称为二元联系(binary relationship)
n=3时称为三元(ternary)联系,
n大于2的联系又成为复杂联系(complex
relationship)
Hongyan Liu @ Tsinghua University
8
基本ER数据模型
联系的图形表示
二元联系
Worker
Produces
Product
用实线将参与联系的两个实体集连接起来
实线的上面是联系的名称和一个箭头
联系的名称一般用动词或动词短语表示
箭头用于表明参与实体与联系名称之间的
关系
Hongyan Liu @ Tsinghua University
9
基本ER数据模型
语义网络(semantic net):
用符号代表实体,
代表联系,
连线将联系的参与实体连接起来
Worker
(WorkerName)
王静
张军
李海
赵玲
Hongyan Liu @ Tsinghua University
Produces
Product
(PCode)
202
101
201
10
基本ER数据模型
一元联系,又称递归联系(recursive
relationship):只有一个实体集参与但
参与多次的联系
扮演两个不同的角色(role)
Worker
(WorkerName)
Supervises
Supervisor
Worker
Supervisee
Hongyan Liu @ Tsinghua University
王
张
李
赵
静
军
海
玲
supervises
Worker
(WorkerName)
静
军
海
玲
王
张
李
赵
11
基本ER数据模型
三元联系
用菱形框表示联系
Worker
Produces
Product
WorkShop
Hongyan Liu @ Tsinghua University
12
基本ER数据模型
属性(attribute):用于描述实体或联
系的每一个特性
描述销售员(SalesPerson)的属性:
工作证号(spID)、姓名(spName)、
性
别(spSex)、出生日期(spBirthdate)、电
话(spTelNo)
描述学生和课程之间的选课联系的属
性:分数(score)
Hongyan Liu @ Tsinghua University
13
基本ER数据模型
属性的分类
简单属性(simple attribute)
复合属性(composite attribute)
如:销售员的地址:省、市、街道
单值属性(single-valued attribute)
多值属性(multi-valued attribute)
又称原子属性(atomic attribute)
如:销售员的电话
派生属性(derived attribute)
Hongyan Liu @ Tsinghua University
14
基本ER数据模型
候选键(candidate key):属性组的每一个
取值可以唯一地决定实体集中的一个实体,而
属性组的任一个真子集没有这个特性
如果候选键是包含两个以上属性的属性组,该
候选键称为复合键(composite key)
主键(primary key):从若干个候选键中选
出的一个用于识别实体集中每一个实体的候选
键
其他的候选键称为替补键(alternative key)
Hongyan Liu @ Tsinghua University
15
基本ER数据模型
属性的图形表示
属性的名称若用英文单词
表示
单词的首字母小写,若包
含多个单词或单词缩写,
每个后续的单词或单词缩
写的首字母大写
实体的矩形框分成上下两
部分
上部是实体的名字,
下部是各个属性的名字,
Hongyan Liu @ Tsinghua University
SalesPerson
spID {PK}
spName
spSex
spBirthdate
spTelNo[1..3]
spSalary
spBonus
/totalSalary
spAddress
province
city
street
zipCode
16
基本ER数据模型
实体的属性
若有主键,主键应列为
第一个属性,且属性名
后面加上主键的标记{PK}
复合键:每个属性后
{PPK}
实体的简化图形表示
SalesPerson
SalesPerson
spID {PK}
spName
spSex
spBirthdate
spTelNo[1..3]
spSalary
spBonus
/totalSalary
spAddress
province
city
street
zipCode
spID
Hongyan Liu @ Tsinghua University
17
基本ER数据模型
实体的属性
派生属性:在其属性名前
加上一个斜线/;
对于多值属性,用方括号
指明取值个数的上下限,
例如,[1..3] ,[1..*]
对于复合属性,将其各个
子成分缩进显示在复合属
性名的下面。
Hongyan Liu @ Tsinghua University
SalesPerson
spID {PK}
spName
spSex
spBirthdate
spTelNo[1..3]
spSalary
spBonus
/totalSalary
spAddress
province
city
street
zipCode
18
基本ER数据模型
实体的属性
弱实体的属性中不存
在主键,其主键需要
其依赖的实体的主键
和其本身的某些属性
共同组成
Hongyan Liu @ Tsinghua University
Order
orderNo{PK}
custerNo
orderDate
delivDate
OrderDetail
itemNo
qty
discount
19
基本ER数据模型
联系的属性:
显示于矩形框的下部,用虚线将矩形框与联系
相连
SalesPerson
spID
Has
Branch
brachID
beginDate
Hongyan Liu @ Tsinghua University
20
联系的约束
结构约束:描述参与联系的实体之间如何关联
在图形中通过参与度(min..max)来表示,对
于E1与E2之间联系:
E1
pk1
E2
R
min1..max1 min2..max2 pk2
min2:实体集E1中实体的最小参与次数,即E1的一
个实体最少与E2中min2个实体有联系
max2:实体集E1中实体的最大参与次数,即E1的一
个实体最多与E2中max2个实体有联系
Hongyan Liu @ Tsinghua University
21
基本ER数据模型
参与度的确定和图形表示
SalesPerson
(spID)
Manages
sp1
sp2
sp3
sp4
SalesPerson
spID
Hongyan Liu @ Tsinghua University
Branch
(BranchNo)
b1
b2
Manages
1..1
0..1
Branch
brachID
22
基本ER数据模型
参与度→ 参与约束、基数约束
参与约束(participation constraint)
全参与(total participation)
部分参与(partial participation)
Min值反映参与约束
Min1=0: E2是部分参与; Min2=0:E1是部分参与
Min1>0: E2是完全参与; Min2>0:E1是完全参与
SalesPerson
spID
Hongyan Liu @ Tsinghua University
Manages
1..1
0..1
Branch
brachID
23
基本ER数据模型
基数约束(cardinality constraint):约
束通过一个联系同另一个实体集中相联系的
实体数目。用于二元联系时非常有用,也可
以用于复杂联系。
Max值反映基数约束,对于二元联系:
1 对1: one to one
1 对多: one to many
多对多: many to many
Hongyan Liu @ Tsinghua University
24
1对1联系
max1=1, max2=1: E1中的每个实体可以和E2中
的0个或1个实体有联系,E2中的每个实体也
可以和E1中的0个或1个实体有联系。
SalesPerson
spID
Manages
1..1
0..1
SalesPerson
(spID)
Manages
sp1
sp2
sp3
sp4
Branch
brachID
Branch
(BranchNo)
b1
b2
1对多联系
max1=1, max2=*或>1 E1中的每个实体可以和E2
中的任意多个实体有联系,E2中的每个实体
可以和E1中的0个或1个实体有联系。
Branch
(BranchNo)
Has
Hongyan Liu @ Tsinghua University
sp1
sp2
sp3
sp4
b1
b2
Branch
branchID
SalesPerson
(spID)
Has
1..1
1..*
SalesPerson
spID
26
基本ER数据模型
弱实体的特点:
强实体与弱实体之间是1对多联系
弱实体的存在以强实体的存在为前提,即存在依赖
弱实体本身的属性不足以构成其主键
Order
orderNo
Hongyan Liu @ Tsinghua University
OrderDetail
Contains
1..1
1..*
27
基本ER数据模型
多对1联系
OrderDetail
(orderNo, itemNo)
Product
(pCode)
(21,1)
(21,2)
(21,3)
(24,4)
(23,1)
OrderDetail
ReferTo
0..*
Hongyan Liu @ Tsinghua University
ReferTo
101
102
202
301
302
Product
1..1 pCode
28
多对多联系
max1>1或=*, max2= *或>1 : E1中的每个实体可以和
E2中的任意多个实体有联系,E2中的每个实
体可以和E1中的任意多个实体有联系
Product
pCode
Part
ConsistsOf
0..*
1..*
partNo
Part
(partNo)
ConsistsOf
Product
(pCode)
p1
p2
p3
p4
101
102
201
Hongyan Liu @ Tsinghua University
29
基本ER数据模型
Supervises
0..1
一元联系:参与度写在角色附近
Supervisor
0..*
Worker
Supervisee
Worker
(WorkerName)
王静
张军
李海
赵玲
Hongyan Liu @ Tsinghua University
supervises
Worker
(WorkerName)
静
军
海
玲
王
张
李
赵
30
基本ER数据模型
复杂联系:对于n元联系,先固定其中的n-1个实体
集的取值,然后分析另一个实体集中的几个实体与
其有关联
例如:三元联系Produces
Worker/WorkShop
(workerID, shopID)
Produces
(since)
(w1,ws1)
(w2,ws1)
(w1,ws2)
(w2,ws2)
(w3,ws1)
(2000-1-1)
(2000-5-1)
(2000-2-1)
(2000-5-1)
(2001-1-1)
Hongyan Liu @ Tsinghua University
Product
(PCode)
202
101
201
31
基本ER数据模型
三元联系的图形表示
Worker
0..*
Produces
0..1
Product
1..*
WorkShop
Hongyan Liu @ Tsinghua University
32
基本ER数据模型
•
某体育用品公司销售许多产品(product),
在全国不同地方设立多个销售点(branch),
每个销售点有多名销售人员(salesperson)
。每个客户(customer) 购买该公司的产品时
,负责该客户的销售员要提交订单(order),
以列出客户此次购买行为的相关信息,如客
户编号、购买日期以及购买的商品的细节信
息(orderdetail),如产品编号、数量、折扣等
。每个订单最多有一个销售人员负责。
Hongyan Liu @ Tsinghua University
33
ER模型
Customer
custNo{PK}
custName
custTelNo
custFaxNo
1..1
submit
1..*
Branch
branchID{PK}
branchName
branchTelNo
branchAddress
orderDate
DelivDate
Order
orderNo{PK}
Has
Responsible
0..*
1..1
Contains
1..*
OrderDetail
pCode
qty
discount
0..*
ReferTo
1..1
Product
pCode{PK}
pType
pName
price
1..1
SalesPerson
0..1 empID
spTelNo
spFaxNo
1..*
1..1
常见问题
实体和联系
联系当作实体看待
语义表达不易理解
模型不够简洁
但不会丢失信息
实体当作联系看待
语义不易表达
数据冗余
Hongyan Liu @ Tsinghua University
35
常见问题
例如
语义:一个系与一个学生产生联系的同时对应一
个班级?
Department
deptNo
Has
1..1
Student
0..* sNo
classNo
major
year
Hongyan Liu @ Tsinghua University
36
常见问题
数据冗余
Department
(deptNo)
Has
Student
(sNo)
d1
101
102
201
202
301
d2
d3
Hongyan Liu @ Tsinghua University
37
常见问题
信息丢失问题
裂缝陷阱(chasm trap)
由于发生联系的实体之间的路径上存在一个或多个部分
参与的实体而造成的。
Branch
branchID
Branch
(BranchNo)
b1
b2
SalesPerson
Has
1..1 1..* spID
WorksIn OfficeRoom
0..* 1..1 roomNo
Has
SalesPerson
(spID)
WorksIn
OfficeRoom
(roomNo)
sp1
sp2
sp3
sp4
r11
r12
r21
r22
常见问题
扇形陷阱(fan trap)
由于一个实体的两侧分别有一个1:*的联系引起的
例:SalesPerson和OfficeRoom之间的正确联系无法得到
SalesPerson
spID
SalesPerson
(spID)
sp1
sp2
sp3
sp4
Has
1..* 1..1
Has
Branch
branchID
Branch
(BranchNo)
b1
b2
OfficeRoom
Owns
1..1 1..* roomNo
Owns
OfficeRoom
(roomNo)
r11
r12
r21
r22
常见问题
解决方法
Branch
branchID
Has
SalesPerson
1..1 1..* spID
1..1
WorksIn OfficeRoom
0..* 1..1 roomNo
1..*
Owns
Department
deptNo
Hongyan Liu @ Tsinghua University
Has
Class
1..1 0..* classID
Student
Has
1..1 1..* sNo
40
常见问题
二元联系和复杂联系
Student
1..*
Studies
0..*
Course
0..*
Teacher
Student
1..*
Takes 0..*
Hongyan Liu @ Tsinghua University
Course
0..*
has
1..*
Teacher
41
常见问题
缺点:
但这种转换使得模型更为复杂的同时,也使得n个实体
参与到一个联系中的语义难以体现。
注意:一个n元联系一般与n个实体两两之间的联
系经常是不等价的
Student
1..*
Takes 0..*
Course
0..*
has
1..*
Teacher
Teaches
Hongyan Liu @ Tsinghua University
42
主要内容
基本ER数据模型
实体
联系
属性
结构约束
增强(扩充)ER数据模型
特殊化/概括
聚集
Hongyan Liu @ Tsinghua University
43
EER模型
扩充ER数据模型
(extended entity relationship data model)
增强ER数据模型
(enhanced entity relationship data model)
简称为EER数据模型
特殊化(specialization)
概括(generalization,普遍化)
聚集(aggregation)
Hongyan Liu @ Tsinghua University
44
增强ER模型
特殊化
特殊化是一个对实体集细化、逐步求精的过程
实体集中的部分实体具有一些区别于其他实体的
特性,特性的取值可以将原来的实体集分解成或
从中抽出几个实体子集
原来的实体集称为超类(或父类),而其每个子
集称为子类。
例如:体育用品公司的所有职员Employee具有
如下的共同特性:empID, empName, sex, age,
empAddress。但工作性质不同,特殊化为工人
(Worker)和销售员(SalesPerson)
Hongyan Liu @ Tsinghua University
45
特殊化
特殊化的原因
子类具有超类不具有的属性。例如,工人可以具有技术级
别(skill)属性,而销售员则具有联系电话(spTelNo)、传
真(spFaxNo)等属性,这些属性是由其工作性质所决定
的,在子类间不共享。
各子类参与不同于超类参与的联系。例如,工人与车间和
产品之间存在联系,而销售员与销售分支机构等实体参与
联系。
特殊化的重要特性是属性继承
一个超类实体的所有子类实体继承该超类的所有属性和联
系
子类还可以继续特殊化成更低一层次的子类,低层次的子
类继承其所有直接或间接超类的属性和联系。
Hongyan Liu @ Tsinghua University
46
特殊化
图形表示
Employee
empID {PK}
empName
sex
birthday
empAddress
“Is a”
{Optional, Or}
Worker
skill
Hongyan Liu @ Tsinghua University
SalesPerson
spTelNo
spFaxNo
47
特殊化
约束:参与约束(participation constraint)
和不相交约束(disjoint constraint)
参与约束:描述超实体和子实体的关系
一 种 是 强 制 ( mandatory) 类 型 : 又 称 为 全 特 殊 化
(total specialization),是指超类的每个实体都存在
于某个或某些子类中
子类的并集等价于超类
一 种 是 任 选 ( optional) 类 型 : 又 称 为 部 分 特 殊 化
(partial specialization),指的是超类中的某些实体
不存在于任何一个子类中。
Hongyan Liu @ Tsinghua University
48
特殊化
不相交约束:描述子类之间的关系的:
重叠特殊化:超类中的实体可以同时属于多个同层次子类。
不相交特殊化:超类中的每个实体最多只能属于一个子类,
即子类之间不相交
图形中约束的表示方法:{参与约束,不相交约束}
参与约束:
Mandatory代表强制类型约束,全特殊化
Optional代表任选类型约束,部分特殊化
不相交约束:
Or代表不相交类型约束
And代表重叠类型约束。
Hongyan Liu @ Tsinghua University
49
特殊化
例:在大学中学习和工作的人有学生和教职
员工。学生分研究生和本科生,按性别分男
生和女生。教职员工分教工和职工两类,教
工主要从事教学工作,而职工主要从事行政
工作,有些人可能既担负教学工作,也担负
一定的行政工作。请用特殊化的方法描述大
学中的人员
Hongyan Liu @ Tsinghua University
50
特殊化
Person
大学中人的特殊化
{Optional, And}
Staff
{Mandatory, And}
Employee
{Optional}
Teacher
Student
{Optional, Or}
Graduate
Undergraduate
{Mandatory, Or}
Female
Male
{Optional}
TeacherEmp
Hongyan Liu @ Tsinghua University
51
概括
概括(普遍化)
概括是特殊化的逆过程,是根据若干个已有实体的
共同特征,将它们合并抽象为一个超类实体的过程,
因而是一个自底向上的设计过程
如:工人生产产品,销售员销售产品,工人、销售
员同为公司的工作人员,有统一的编号,都有姓名、
年龄、性别、住址等属性,因此可以进行概括,概
括为公司员工。
Hongyan Liu @ Tsinghua University
52
概括
概括的目的
避免子类所共有的属性在多个子类中重复出现
避免定义多个语义相同的联系
如:公司为每个员工,包括工人和销售员,购买不
同额度的保险
1..1 Has
1..1 Policy1
Worker
pID{PK}
period
amount
…
empID
name
skills
policyDate
1..1
SalesPerson
empID
name
spTelNo
spFaxNo
Hongyan Liu @ Tsinghua University
Has
1..1
1..1
policyDate
53
概括
若进行概括
两个联系的语义是相同的,联系的属性也是相同的。
经概括之后,则只需将超类,即公司员工,与保险单
发生联系即可,使得模型更为简洁,更易理解。
Worker
1..1
skills
{optional, Or}
Employee
empID
name
1..1 Has
SalesPerson
spTelNo
spFaxNo
Hongyan Liu @ Tsinghua University
policyDate
1..1
Policy1
pID{PK}
period
amount
…
54
特殊化和概括
特点
特殊化用于强调一个抽象级别较高的实体集(即超
类)的子实体集(即子类)具有特殊的特性,并且
参与不同的联系。
概括则是强调低层实体集之间所具有的共性,即具
有相同的属性和参与相同的联系。两种方法都是对
数据进行更精确描述的方法。
概括的图形表示与特殊化相同。
Hongyan Liu @ Tsinghua University
55
聚集
C1
C2
T1
T2
S1
S2
S3
在基本ER模型中,联系的参与者只能是实体,联
系本身是不可以再参与其他的联系
例如:每位教授每学期可以讲授多门课程,每门
课可以由多名教师单独讲授。每名学生可以选修
多门不同的课程,每门课程可由多名学生选修。
数据库原理 32学时 2学分 春季
信息系统 32学时 2学分 春季
张老师 教授 男 50
刘老师 副教授 女 30
张三 男 管理科学与工程
李四 男 经济
王一 女 会计
Hongyan Liu @ Tsinghua University
T1, C1, 2003, 三教3200
T2, C1, 2003, 艺术212
T1, C2, 2003, 四教4102
S1, T1, C1, 2003, 三教3200, 80
S1, T1, C2, 2003, 四教4102, 85
S2, T2, C1, 2003, 三教3200, 90
S3, T2, C1, 2003, 三教3200, 70
56
聚集
Teacher
1..* teach 0..*
T1, C1, 2003, 三教3200
T2, C1, 2003, 艺术212
T1, C2, 2003, 四教4102
S1, C1, 80
S1, C2, 85
S2, C1, 90
S3, C1, 70
Course
1..6
study
若要统计每个教授每
个学期所教的每个课堂
的学生人数?
20..100
Student
Teacher
1
TCS
0..*
Course
S1, T1, C1, 2003, 三教3200, 80
S1, T1, C2, 2003, 四教4102, 85
S2, T2, C1, 2003, 三教3200, 90
S3, T2, C1, 2003, 三教3200, 70
20..*
Student
Hongyan Liu @ Tsinghua University
57
聚集的方法解决该问题
CL1, T1, C1, 2003, 三教3200
CL2, T2, C1, 2003, 艺术212
CL3, T1, C2, 2003, 四教4102
S1, CL1, 80
S1, CL2, 85
S2, CL2, 90
S3, CL3, 70
Teacher
custNo
Course
CourseNo
Hongyan Liu @ Tsinghua University
Teach
Year
ClassRoom
take
Student
sID
score
58