第五章、数据库设计与e-r模型-爱代码爱编程
数据库整体设计流程
- 1、刻画数据库用户需求
- 2、概念设计
- 3、逻辑设计
- 4、物理设计
本章讲解概念设计
一、E-R模型(实体-联系数据模型)
- 三个主要的组成部分:实体集、联系集、属性
1、实体、实体集
-
实体:一个实体是现实世界可区别于所有其他对象的一个‘事物’或‘对象’
实体可以是实在的也可是抽象的,如一个人、课程、开设的课程段或者航班预订
例如:课程可以被开左实体,并且course_id唯一标识出了大学中某个课程实体 -
实体集:是共享相同性质或属性、具有的相同类型的实体的集合
- 所谓实体集就是同一类型实体的集合(一般是有限的)。注意!是同一类型实体的集合哦。
实体集中包含的是实体,可以把它理解成数学中的集合,例:{茉莉蜜茶、冰红茶、青梅绿茶}这就是一个实体集。 再比如{鲫鱼、鲤鱼、金龙鱼}这也是一个实体集,这两个实体集里分别只包含了三个实体
- 所谓实体集就是同一类型实体的集合(一般是有限的)。注意!是同一类型实体的集合哦。
-
属性:属性是每个实体集中每个成员所拥有的描述性性质
-
如instructor实体集可能具有的属性是:ID、name、dept_name和salary
-
每个实体在它的每个属性上都有一个值
-
实体集在E-R图中用一个矩形来表示
2、复杂属性
- 复合属性:
复合属性可以被划分为子部分
- 多值属性
对一个实体而言,一个属性可以对应于多个值
假设往instructor实体集中添加一个phone_number属性,每个教师可以有零个、一个或多个电话号码,这种类型被称为多值属性 - 派生属性
这类属性的值可以从其他相关属性或实体的值派生出来
例如:instructor实体集具有age属性,如果instructor实体集还有date_of_birth属性,就可以从date_of_birth和当前日期计算出age属性的值,因此age就是派生属性
3、联系集
- 联系:联系是多个实体间的相互关联
如:张三丰是武当派的老师,教太极拳
则老师和课程是教授关系,学生和课程是选择关系 - 联系集:相同类型联系的集合
- 实体集和实体集产生的联系很多构成联系集
实体集之间的关联被称为参与
上图可以描述为教师实体集和课程实体集参与到教学这个联系集
- 自己跟自己联系的时候,把对应的角色标识出来
- 联系集也可以有描述性属性,在图中通过虚线相连接
- 在一个实体集中,有下划线的属性代表主码
二、约束
1.映射基数约束
-
映射基数:一个实体能通过一个联系集关联另一个实体的数量
具体可分为四种 -
一对一
- A中的一个实体至多与B中的一个实体相关联,且B中一个实体也至多与A中的一个实体相关联
- A中的一个实体至多与B中的一个实体相关联,且B中一个实体也至多与A中的一个实体相关联
-
一对多
- A中的一个实体可以与B中任意数量的实体相关联、而B中的一个实体至多与A中的一个实体相关联
- A中的一个实体可以与B中任意数量的实体相关联、而B中的一个实体至多与A中的一个实体相关联
-
多对一
- 同上面的一对多
-
多对多
- A中的一个实体可以与B中的任意数量的实体相关联,而B中的一个实体也可与A中的任意数量的实体相关联