概念数据模型(E-R模型)
概念数据模型是现实世界第一层次的抽象,是数据库设计人员和用户交流的工具,因此要求概念数据模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面应该简单、直观和清晰,能为不具备专业知识或者专业知识较少的用户所理解。
概念数据模型的表示方法很多,其中最常用的是P.P.S. Chen于1976年提出的实体-联系方法(Entity Relationship Approach),简称E-R方法或E-R模型。E-R模型用E-R图来抽象表示现实世界中客观事物及其联系的数据特征,是一种语义表达能力强、易于理解的概念数据模型。
E-R模型常用术语
实体(Entity)
现实世界中客观存在并可以相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念。实体概念的关键之处在于一个实体能够与另一个实体相互区别。
属性(Attribute)
实体通常具有若干个特征,每一个特征称为实体的一个属性。例如,一个学生实体有学号、姓名、性别、年龄、班级等属性。属性不能脱离实体,属性必须相对实体而存在,它表达了实体某个特定方面的特征。属性的名称称为属性名,同一类型的实体的属性一般采用相同的属性名。属性的具体取值称为属性值,用以刻画一个具体的实体,实体的属性值是数据库中存储的主要数据。
键(Key)
能唯一标识每个实体的属性或属性组,称为实体的键,简称键,有时也称为实体标识符、关键字、关键码、码。也就是主键
域(Relation)
属性的可能取值范围称为属性的域。
实体集(Entity Set)
同一类型实体的集合称为实体集。
例如,全体学生是一个实体集。
在同一个实体集中,每个实体的属性名和属性的域是相同的,但部分属性的值却不相同。不同实体集可以相交。
例如,某些教师在本校在职攻读博士学位,那么他们既是教师身份,也是学生身份,说明学生实体集和教师实体集是相交的。
实体型(Entity type)
在数据模型中,型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。实体型也称实体类型,是指用实体名和属性名对某一类实体的抽象和刻画。如果属性是实体型的键,在属性名下用下划线标明。
例如,学生(学号,姓名,性别,出生年月,班级,入学年月)就是一个实体型。实体型是实体集抽象化和结构化的结果,一个具体的实体是其实体型的实例,是其实体型的赋值。为了叙述的方便,在不引起混淆的情况下,有时把实体型简称为实体。
联系(Relation)
在现实世界中,事物内部以及事物之间通常存在一定的联系,这些联系在信息世界中反映为实体(型)内部各实体之间的联系和不同实体(型)之间的联系。联系也可能具有属性,用来描述联系的特征。
例如顾客实体和商品实体之间存在“购买”联系,“购买”联系具有购买数量、购买日期等属性。
实体、属性和联系称为E-R模型三要素。
E-R模型的表示—E-R图
E-R图是E-R模型的直观表示形式,是用来表示现实世界中客观事物及其联系的一种信息结构图。E-R图提供了表示实体型、属性和联系的方法
实体型:用矩形框表示,框内写明实体名。
属性:用椭圆形框表示,框内写明属性名,并用无向边将其与相应的实体型或联系连接起来。如果属性是实体型的键,在属性名下用下划线标明。
联系:用菱形框表示,框内写明联系名,并用无向边分别与发生联系的实体型连接起来,同时在无向边上标明联系的类型(如1 : 1、1 : n、m : n、1 : m : n等)。
E-R图的设计步骤
- 确定实体型及其属性
- 确定实体型之间的联系及联系的属性
- 画E-R图
实体型的联系类型
两个实体型之间的联系
一对一联系(1 : 1)
如果实体集A中的每个实体至多与实体集B中的一个实体有联系,反之亦然,则称实体集A与实体集B具有—对一联系,记为1 : 1。
例如,教室的座位与学生之间具有一对一的联系,一个学生只能坐一个座位,而一个座位只能由一个学生来坐。
—对多联系(1 : n)
如果实体集A中的每个实体与实体集B中n(n≥0)个实体有联系,而实体集B中每个实体至多与实体集A中的一个实体有联系,则称实体集A与实体集B具有—对多联系,记为1 : n。
例如,人与手机号之间具有一对多联系,一个人可以购买多手机号,而每个手机号只能为一个人所拥有。
多对多联系(m : n)
如果实体集A中的每个实体与实体集B中n (n≥0)个实体有联系,而实体集B中的每个实体与实体集A中m (m≥0)个实体有联系,则称实体集A与实体集B具有多对多联系,记为m : n。
例如,学生与课程之间具有多对多联系,一个学生可选多门课程,而一门课程可由多个学生选。
多个实体型之间的联系
n多个(三个或三个以上)实体型之间的联系也称多元联系,与二元联系类似,也存在一对一、一对多、多对多等联系类型。
例如:对于商店、服务员与忠实顾客三个实体型,一家商店可以有多位忠实顾客、聘用多名服务员,一名服务员只能受聘于一家商店、工作时为多位忠实顾客服务,一位忠实顾客只在一家商店购买所需物品、在购物过程中接受多名服务员提供的服务,因此商店与服务员、忠实顾客之间是一对多联系,记为1 : m : n。
例如:对于供货商、商店、商品三个实体型,一位供货商可以供给多家商店多种商品,一家商店可以销售多位供货商供给的商品,每种商品可由多家供货商供给,因此供货商、商店、商品之间是多对多联系,记为m : n : p。
单个实体型内的联系类型
n单个实体型内的联系也称一元联系,在同一个实体集内各实体之间的联系也可存在一对一、一对多、多对多等联系类型。
例如,对于职工实体型来说,一个职工至多只能与其中一个职工结婚,这种结婚联系是一对一联系,如图(a)所示;一个职工可以领导若干名职工,而一个职工只能被另一个职工直接领导,这种“领导”联系是一对多联系,如图(b)所示。又如,对于零件实体型,一个零件可以由多个子零件组成,而一个零件又可以是多个零件的组成部分,这种“组成”联系是多对多联系,如图(c)所示。