7.2 实体-联系模型 7.2.1 实体集
7.2 实体-联系模型
实体-联系(entity-relationship,E-R
)数据模型的提出旨在方便数据库的设计,它是通过允许定义代表数据库全局逻辑结构的企业模式实现的。E-R
模型在将现实世界企业的含义和交互
映射到概念模式
上非常有用,因此,许多数据库设计工具都利用了E-R
模型的概念。E-R
数据模型釆用了三个基本概念:实体集
、联系集
和属性
,我们首先对此进行学习;E-R
模型还有一个相关联的图形表示
(E-R
图),我们在本章后面学习。
7.2.1 实体集
什么是实体
实体(entity
)是现实世界中可区别于所有其他对象的一个”事物”或”对象”。
例如,大学中的每个人都是一个实体。每个实体有一组性质,其中一些性质的值可以唯一地标识一个实体。例如,个人可能具有person_id
性质唯一标识这个人。因此, person_id
的值677-89-9011将唯一标识大学中个特定的人。
与此类似,课程也可以看作实体,而course_id
唯一标识了大学中的某个课程实体。
实体可以是实实在在的,如人或书;也可以是抽象的
,如课程、课程段开课或者机票预订。
什么是实体集
实体集(entity set
)是相同类型即具有相同性质(或属性)的一个实体集合
。例如,一所给定大学的所有教师的集合
可定义为实体集``instructor
。类似地,实体集student
可以表示大学中所有学生的集合。
外延
在建模的过程中,我么通常抽象地使用术语实体集,而不是指某个个别实体的特别集合。我们用术语实体集的外延
(extension
)来指属于实体集的实体的实际集合。因此,**大学中实际教师的集合构成了实体集instructor
的外延
**。我们在第2章看到过的联系和联系实例之间的区别和上述区别类似。
实体集不必互不相交。例如,可以定义大学里所有人的实体集( person
)。一个person
实体可以是instructor
实体,可以是student
实体,可以既是instructor
实体又是student
实体,也可以都不是。
属性
实体通过一组属性(attribute
)来表示。属性是实体集中每个成员所拥有的描述性性质。为某实体集指定一个属性表明数据库为该实体集中每个实体存储相似的信息;但每个实体在每个属性上都有各自的值。
- 实体集
instructor
可能具有属性ID
、name
、dept_name
、和salary
。在现实生活中,可能还有更多的属性,如街道号、房间号、州、邮政编码和国家,但是为了使我们的例子简单,我们省略了这些属性。 course
实体集可能的属性有course_id
、tile
、dept_name
和credits
属性值
每个实体的每个属性都有一个值( value
)。
例如,一个特定的instructor
实体可能ID
的值为12121
,name
的值为王小明
,dept_name
的值为金融
, salary
的值为90000。
ID
属性用来唯一地标识教师,因为可能会有多个教师拥有相同的名字。在美国,许多企业发现将个人的社会保障号
用作其值唯一标识该人的属性很方便。一般来说,大学必须给每个教师创建和分配一个唯一的标识符。
因此,数据库包括一组实体集,每个实体集包括任意数量的相同类型的实体。图7-1为一个大学数据库的一部分,其中有两个实体集: instructor
和student
。为了使图示简单,只显示了两个实体集的部分属性。
一个大学数据库可能包含许多其他的实体集。例如,除了跟踪记录教师和学生外,大学还具有课程信息,用实体集course
来表示,它包括属性accoun_ number
、 course id
、 title
、 dept_name
和credits
。在真实环境中,一个大学数据库可能会包含数十个
实体集。