数据库设计
数据库概念设计
基础概念
将需求分析转换为实体-联系模型。
- 实体: 一个对象,类似于面向对象中的对象
- 实体集: 由多个实体组成的集合
- 属性: 实体的特征、性质
- 联系: 表示实体之间的关系,多个实体之间的联系
- 二元联系: 表示两个实体之间的联系,有如下三种关系
- 一对一
- 一对多
- 多对多
- 弱实体: 某个实体集的所有属性都不足以构成自身的键值,需要连接其他实体的某些属性来构成
设计准则
- 尽可能反映现实情况
- 避免重复
- 设计得尽可能简单,去除掉多余的元素
- 数据库应该选择合理的关系(如果一个关系可以被其他关系推出,那么这个关系就是不必要的)
- 正确选择所用的信息:
- 一个东西要成为实体,应该要有很多信息来描述,否则应该要当成属性
- 多元关系和多个二元关系的选择——看实际情况,符合现实即可
- 不应该过度使用弱实体集
E-R模型转化为关系模型的一般规则
概念
- 一对一关系
对于实体集A的实体,在实体集B中至多有1个实体与实体集A联系,A和B具有1:1的联系
- 一对多关系
对于实体集A的实体,在实体集B中至多能找到n个与之联系;反过来说,实体集B中的每个实体,都跟实体集A中其中一个实体联系。实体集A和实体集B具有1:n的联系
- 多对多关系
实体集A中的每个实体与实体集B中的每个实体都有联系。
转换规则
二元关系
- 1:1联系(S,T)
选中一个关系模式,假设为S,将T的主码作为S的外码加入,将联系的单值属性加入到S中
- 1:N联系(S,T)
将1端的主码作为N的外码加入到N端。将联系的所有单值属性加入到N端
- N:M(S,T)
将联系转换为一个单独的关系模式,该关系模式的属性包括两端实体的码和联系本身的属性。
多元关系
- 1:1:1(M,N,K)
选定一个关系模式(K),将另外两个关系模式(M,N)的码加入到K中作为外键。
- 1:1:N(M,N,K)
将两个1端的关系模式(M,N)中的码,加入到K端的关系模式作为外键。
- M:N:K(M,N,K)
将该联系转化为关系模式,将三段的码加入到该关系模式当中。