第二章---数据库建模
一、数据库设计步骤
(1) 概念模型:面向现实世界,与计算机无关。
(2)数据模型:面向计算机实现
二、概念模型——ER图
(1)概念模型、E-R模型的基本概念与E-R图表示
1、实体(Entity):现实世界一个具体或抽象的事物,称为E-R模型的一个实体
2、属性(Attritube):用于刻划现实世界事物的特性,称为E-R模型实体的属性。
3、实体集(Entity Set):现实世界具有相同特性事物的集合,称为E-R模型的实体集
例如 用E-R图表示“学生”实体集及其属性
4、域(Domain):属性的取值范围
a)现实世界事物特性取值允许是单值的,或多值的,或结构的,或集合的。
b)E-R模型中,属性只允许单值
5、键码(或称关键字):能够唯一识别一个实体的最小的属性集,称为实体的键码或关键字。
6、候选码、主码:一个实体集有不止一个键码时,这些键码统称候选码。
任何一个实体集都必须选择一个键码作为主码
E-R图上只标出主码
(2)实体之间的联系及其表示用于刻划现实世界事物之间的联系。
1、两个实体集之间联系的类型
(1)“一对一”联系(1:1)
例:一门“课程”只有一名任课“老师”;一名“教师”只教一门课
(2)“一对多联系”(1:n)
例:一个“班级”有若干名“学生”;一个“学生”只属于一个班级
(3)“多对多"联系(m:n)
一名“学生”可选多门“课程”;一门“课程”有若干名“学生”选中
2、多个实体集之间的联系(也称:多元/多路联系)
例:(王东,OS,“操作系统原理”,03.2)
3、同一实体集内,各实体之间的联系
举例:用E-R图表示工厂物资管理的概念模型。
问题描述:
(1)实体集及其属性如下:
仓库:仓库号,仓库面积,电话号码。
零件:零件号,名称,规格,单位,描述。
供应商:供应商号,姓名,地址,电话号码,账号。
项目:项目号,预算,开工年月。
职工:职工号,姓名,出生年月,职称。
(2)实体集之间的联系如下:
- 一个仓库可以存放多个零件;一种零件可以存放在多个仓库中;某一仓库中某种零件的数量,由“数量”属性刻划。
- 一个仓库有多个职工当保管员;一个职工只能在一个仓库工作。
- 职工之间有领导/被领导的关系;一个仓库主任领导若干保管员。
- 供应商、项目、零件之间存在供货关系:一个供应商可对多个项目、多种零件供货;一个项目或一个零件可有多个供应商供货(记录“供货量”)
例2:假设学生运动会信息系统需要保存如下信息:
- 学院:学院代号,学院名称,办公地点
- 班级:班号,班长姓名
- 学生:学号,姓名,性别,出生年月
- 运动会:举办年份,举办季节,总裁判长
- 项目:项目代号,项目名称,项目性质,本校记录。
其中:
(1)一个学院有多个班级,一个班级只属于一个学院。
(2)一个班级有多名学生,一名学生只属于一个班级。
(3)一名学生可以参加多届运动会、多个项目。系统应能够正确记录一名学生在某届运动会、某一项目上所取得的成绩。
同时,一个项目可以有不止一名学生报名参加。
(4)每年可以举办两届运动会,分别称为春季运动会和秋季运动会
三、子类
1、一般方法
“cartoons”继承了“Movies”的属性和联系
2、多重继承问题
四、弱实体集
1、弱实体集及其联系
弱实体集:组成一个实体集键码属性中的一部分(或者全部),必须来自其它实体集的键码属性,
这样的实体集称为弱实体集。
注意:给弱实体集提供键码属性的实体集,与弱实体集之间的联系,必须是单值的(一对一或一对多)。
2、多元联系的连接实体集表示
多元联系的连接实体集是一个弱实体集。
五、对约束的建模
1、约束—现实世界的实际需求
2、约束的类型
- 键码(关键字)约束 ——单值约束
- 参照完整性约束
- 用户定义完整性约束——域的约束
键码(或称关键字)约束:
必须保证一个实体集至少有一个键码(称为实体完整性约束)。
若一个实体集存在多个键码,DB设计者可以指定一个键码作为主码。
单值约束:
1. 属性的单值约束
1)除了构成主码的属性之外,其他属性任何时候最多有一个值(必要时允许为“空”)。
2)构成主码的属性(无论是全部,或者一部分),任何时候必须有一个值(且不能为空)
2. 联系的单值约束(1:1或n:n)
E-R图中用菱形并带“箭头”的连线表示
参照完整性约束:反应现实世界不同事物之间的存在约束。
参照完整性:E-R图中,对于从E到F的多对一联系的参照完整性约束,指:对于E中当前存在的一个实体e,
F上必须存在一个相对应的实体f。
六、E-R图设计原则
一、忠实性:设计必须以现实世界为唯一依据。
二、避免冗余:即,一事一地”原则。现实世界中的一个事物,在一个数据库中只表达一次。
三、尽量简单:属性、实体集和联系能不用就不用,能合并就合并。
四、选择合适的事物类型:仅当现实世界一个事物需要进一步刻划它的特性时,才选择实体集和
属性集合表示该事物。