数据库建模
2021-4-24
课程笔记
0. mind
1. 基本概念
本小节内容仅做一些基本概念的介绍
1.1 实体集
①实体
即客观事实存在的事物或对象,是一个名词
例:学生,教师,书等实际客观存在的事物;也可以是一门课,一个专业等抽象概念存在的事物
②实体集
实体集就是相同类型实体的集合
例:学生实体集,课程实体集等
1.2 联系集
①联系
联系是指多个实体之间的相互关联,是一个动词
小明选修了计算机课,小明则是学生实体,计算机课是课程实体,选修则是一个联系
②联系集
联系集就是同类联系的集合,不必深究
③单联系/多联系
多联系指同样的实体之间可以有多个不同的联系
④角色
实体在联系中的作用称为角色,这并不重要…
⑤度
参与联系集的实体集的数目就是联系集的度。
1.3 属性
不论实体集,联系集均具有属性。属性是对集合的特征描述。下面讨论下属性的分类。
①简单/复合属性
简单属性即原子属性,复合属性即可再分的属性
例:地址属性可再分为省份,城市,街道等
事实上,复合属性并不好,因为在转换成关系模式的时候要把它拆分开来,倒不如不设置复合属性
②单值/多值属性
一个学生有多个电话号码即多值属性。
事实上也不好用,关系模式上会将这种属性改成弱实体集。具体见后文建模原则。
③派生属性
某属性的值可以通过其他相关属性派生出来就为派生属性
例:学生年龄可以通过身份证号推算出来
2. 规则约束
2.1 实体集
①映射约束
映射约束是指实体集通过联系集与另一个实体集之间映射基数的关系。这种映射关系有四种类别:一对一;一对多;多对一;多对多;
例:
一对多:一个客人可以购买多辆车
多对多:一个学生可以选择多门课,一门课可以被多个学生选择
2.2 码
这里主要讨论码的一些关系,分别有超码,候选码和主码,事实上这部分内容在第一二章也讨论过。
①超码
在看完下面候选码的内容之后,超码就是候选码的超集. 所谓超码便是能唯一区分实体的集合.
②候选码
候选码其实是区分一个实体集的核心属性,称之为候选码我认为可以理解为是候选主码.
③主码
主码是从候选码选择出来的.
2.3 联系集
本小节将讨论联系集的码以及安置, 从上文讨论的映射关系来进行分类.
①一对一
联系集的码可以从参与的实体集任意方的主码
属性安置可以安置在实体集上
② 一对多
联系集的码主码由"多"的一方实体集提供
属性安置可以安置在联系集上, 或者"多"的那边的实体集上
③多对多
联系集的码主码由参与的实体集的所有主码构成
属性安置只能安置在联系集上
2.4 特殊规则
2.4.1 依赖约束
依赖约束分两种, 实体集与联系集之间的依赖关系, 实体集与实体集之间的依赖关系.
①实体集与联系集之间
倘若一个实体集的存在是依赖于一个联系集的, 则该实体集称为依赖实体集
例: 商品销售单的实体集存在是依赖于商品销售这个联系集的
②实体集与实体集
倘若一个实体集依赖于另一个实体集而存在,则该实体集称为弱实体集, 强实体集则为标识实体集, 之间的联系集则称为标识联系集.
要注意, 弱实体集是有一定约束的, 强实体集与弱实体集的关系一定是一对多的关系.
例: 开课班实体集是依赖课程实体集存在的, 没有课程便不会存在开课班级. 课程与开课班的关系是一对多的
2.4.2 多值联系
多值联系是指, 在一个联系集中, 参与进来的实体集之间存在多个联系.
例: 一个客户可以跟多个银行贷款, 一个银行可以向多个客户放贷, 这是一个多对多的关系
3. 实体集/联系集扩展
在多个实体集/联系集之间存在的一些联系
3.1 实体集(类层次)
实体集与实体集之间的继承关系称为类层次. 这本质上是一个继承.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qeFl4Eve-1648880072259)(图片\类层次.png)]
3.2 联系集(聚合)
倘若一个联系集跟另一个联系集有联系, 则把其处理为聚合关系
例: 学生与开课班之间存在选课的联系, 教师要对学生课程成绩录入成绩, 这个录入成绩的联系应该是与学生选课这个联系集的联系
4. E-R建模原则
以下将介绍E-R建模的一些原则,包括如何对我们搭建出来的数据关系进行E-R建模。
4.1 实体集/属性/联系集
①实体集or属性
在对建模过程中,选择实体集还是属性呢?
我们需要注意两个原则
- 属性是不可分的
- 属性不能与其他实体产生联系
对于复合属性,我们可以将其子属性建模为一个属性
②实体集or联系集
这个倒还好区分,实体是客观存在的事物,而联系则是一个动作
③多元联系转二元联系
4.2 依赖约束的建模
4.3 多值联系的建模
①转换为弱实体集
②转化为依赖实体集
5. E-R模型转关系模型
集还是属性呢?
我们需要注意两个原则
- 属性是不可分的
- 属性不能与其他实体产生联系
对于复合属性,我们可以将其子属性建模为一个属性
②实体集or联系集
这个倒还好区分,实体是客观存在的事物,而联系则是一个动作