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可能具有属性IDnamedept_name、和salary。在现实生活中,可能还有更多的属性,如街道号、房间号、州、邮政编码和国家,但是为了使我们的例子简单,我们省略了这些属性。
  • course实体集可能的属性有course_idtiledept_namecredits

属性值

每个实体的每个属性都有一个值( value)。
例如,一个特定的instructor实体可能ID的值为12121,name的值为王小明,dept_name的值为金融, salary的值为90000。

ID属性用来唯一地标识教师,因为可能会有多个教师拥有相同的名字。在美国,许多企业发现将个人的社会保障号用作其值唯一标识该人的属性很方便。一般来说,大学必须给每个教师创建和分配一个唯一的标识符。

因此,数据库包括一组实体集,每个实体集包括任意数量的相同类型的实体。图7-1为一个大学数据库的一部分,其中有两个实体集: instructorstudent。为了使图示简单,只显示了两个实体集的部分属性。
一个大学数据库可能包含许多其他的实体集。例如,除了跟踪记录教师和学生外,大学还具有课程信息,用实体集course来表示,它包括属性accoun_ numbercourse idtitledept_namecredits在真实环境中,一个大学数据库可能会包含数十个实体集