一、那么什么是E-R模型?
E-R模型即实体-联系模型,E-R模型的提出基于这样一种认识,数据库总是存储现实世界中有意义的数据,而现实世界是由一组实体和实体的联系组,E-R模型可以成功描述数据库所存储的数据。
二、为什么要设计E-R模型?
设计E-R模型能够更有效和更好的模拟现实世界。
三、E-R模型的基本要素
1) 实体 :实体是E-R模型的基本对象,是现实世界中各种事物的抽象,凡是可以相互区别,并可以被识别的事、物概念等均可认为是实体。在一个单位中,具有共性的一类实体可以划分为一个实体集,例如,学生李明,黄颖等都是实体,为了便于描述,可以定义学生这样的一个实体集,所有学生都是这个集合的成员。
2)属性:每个实体都具有各种特征,称其为实体的属性,如学生有学号,姓名,年龄等属性。实体的属性值是数据库存储的主要数据。能唯一标识实体的属性或属性组称为实体键,如一个实体有多个键存在。则可从中选取一个作为主键。
3)联系:实体间会存在各种关系,如人与人之间可能存在领导与雇员关系等,实体间的关系被抽象为联系。
四、E-R图的四个组成的部分
矩形框:表示实体,在矩形框中写上实体的名字
椭圆形框:表示实体或联系的属性
菱形框:表示联系,在框中记入联系名
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)。
五、将E-R模型转化为关系模型
1、实体转化为关系
实体集转化为关系非常简单,只需将实体的属性作为关系的列即可(实体的所有属性);
2、联系转化为关系
1)一对一联系需要将其中一个实体的主键作为另一个实体的属性。反映到映射中,将一个关系的主键作为另一个关系的普通列联系本身的属性也应当以列的形式植入。对于一对一关系可将主从关系颠倒,也不会导致信息丢失
可将角色编号作为用户关系中的一个普通列,反过来也可以!
2)一对多联系,需要将一的一方作为主表,多的一方作为从表。联系的所有属性为从表的列,这样才不会导致信息丢失。
如学生与班级:学生信息为从表,班级信息为主表
3)一对多。无论联系加入到哪一方都将造成信息丢失。
如学生与选课。可以将学号,课程Id,以及关系的属性---学分作为新关系的列
六、例子
E-R图表示某个工厂物资管理的概念模型
实体包括:
仓库: 仓库号、面积、电话号码;
零件 :零件号、名称、规格、单价、描述;
供应商:供应商号、姓名、地址、电话号码、帐号;
项目:项目号、预算、开工日期;
职工:职工号、姓名、年龄、职称;
实体之间的联系
仓库------零件
1、一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件是多对多的关系。
2、用库存量来表示某种零件在某个仓库中的数量
仓库------职工
1、一个仓库拥有多个职工,一个职工只能在一个仓库中工作,仓库和职工是一对多的关系
2、职工之间有领导和被领导的关系,因为管仓库肯定有个头,所以有领导和被领导的关系。
E-R图如下所示
参考:
[1] https://blog.csdn.net/qq_40722284/article/details/82461747