1. E-R模型
英文全称:Entity-relationship model,即实体关系模型
把现实世界的 实体模型通过建模转换为信息世界的概念模型,这个概念模型就是E-R模型
2. 数据库设计流程
一般设计数据库分为三个步骤
- 把现实世界的实体模型,通过建模转换成信息世界的E-R模型;
- 信息世界的E-R模型,经过模型转化,得到数据库世界的数据模型;
- 把数据模型进一步规范化,得到最终的数据库结构模型;
数据库世界的数据模型按数据的组织形式而分为三种类型
- 关系模型(在关系数据库设计中)
- 层次模型()
- 网状模型()
3. 关系模型
3.1 常用概念
- 关系:可以理解为一张二维表,每个关系都具有一个关系名,也就是通常说的表名(table);
- 元组:可以理解为二维表中的一行,在数据库中经常被称为记录(record);
- 属性:可以理解为二维表中的一列,在数据库中经常被称为字段(colum);
- 域:属性的取值范围,也就是数据库中某一列的取值限制;
- 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成(key);
- 关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,……,属性N),在数据库中成为表结构;
3.2 E-R图转关系模式
对于E-R图中每个实体
,都应转换为一个关系
(table)
该关系应包括对应实体的全部属性,并应根据关系所表达的语义确定哪个属性或哪几个属性组作为关键字
,关键字用下划线标识;
3.2.1 一对一关系
比如:一个班级对应一个正班长,就是1:1
联系
则可以创建两个关系(表),一个班级关系(表),一个学生关系(表);
然后我们需要一个联系(关联)来连接这两个关系(表)
有两种方案:
- 联系不单独对应一个关系(表):
不单独创建一个关系(表)来存储联系,通俗讲就是在一个表中冗余一个字段存另外一个表的主键。
比如在学生关系(表)中添加一个班级编号属性,用来存储班级关系中的班级编号属性值,
或者在班级关系(表)中添加一个学号属性,用来存储学生关系中的学号属性值。 - 联系单独对应一个关系:
单独创建一个关系(表)来存储联系,通俗讲就是创建一个中间表用来存储两个或多个表的主键。
比如创建一个联系关系(表)来存储班级编号属性和学号属性,并选择一个其他关系的主键(班级编号或学号都行)作为联系关系的主键。
3.2.2 一對多关系
班级关系和学生关系之间的联系是1:n
同样地也有两种关系模式:
-
联系不单独对应一个关系:
在这种1:n
的关系模式中,一般都是将1端的主键加入n端关系中,即在学生关系(表)中增加一个班级属性,存储对应的班级属性值。 -
联系单独对应一个关系:
单独创建一个联系关系(表)来存储班级属性和学号属性,并选择n端的主键(学号)作为联系关系的主键。
多对多关系
学生关系和课程关系之间的联系是m:n
这种m:n
的关系只有一种关系模式:
- 联系单独对应一个关系:
在这里就是单独创建一个联系关系(表)来存储课程号属性和学号属性和成绩属性,联系关系的主键是由双方的主键共同组成联合主键。
参考资料:【E-R图到关系模式的转换方式,你get到了吗】 https://www.bilibili.com/video/BV1Ju411e7Dr/?share_source=copy_web&vd_source=e22a75a6781804ee25ce46a2afc235ce