实体联系模型

Download Report

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) | e1E1,…, eiEi, …,enEn }
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