基于E-R模型的关系型数据库设计方法
-
在管理信息系统开发中,数据库设计的目标是建立DBMS能识别的关系数据模型。而关系数据模型建立的基础是首先建立E-R模型,通过E-R模型才能转换为关系数据模型。如何建立E-R模型以及如何将E-R模型转换为关系数据模型,是管理信息系统开发中数据库设计的关键。---摘自《价值工程》
-
可以通俗理解为E-R模型能够更好的去帮助我们去分析创建关系数据库中的所需的表
一、那么什么是E-R模型?
E-R模型即实体-联系模型,E-R模型的提出基于这样一种认识,数据库总是存储现实世界中有意义的数据,而现实世界是由一组实体和实体的联系组,E-R模型可以成功描述数据库所存储的数据。
二、为什么要设计E-R模型?
设计E-R模型能够更有效和更好的模拟现实世界。
三、E-R模型的基本要素
-
实体 :实体是E-R模型的基本对象,是现实世界中各种事物的抽象,凡是可以相互区别,并可以被识别的事、物概念等均可认为是实体。在一个单位中,具有共性的一类实体可以划分为一个实体集,例如,学生李明,黄颖等都是实体,为了便于描述,可以定义学生这样的一个实体集,所有学生都是这个集合的成员。
-
属性:每个实体都具有各种特征,称其为实体的属性,如学生有学号,姓名,年龄等属性。实体的属性值是数据库存储的主要数据。能唯一标识实体的属性或属性组称为实体键,如一个实体有多个键存在。则可从中选取一个作为主键。
-
实体间会存在各种关系,如人与人之间可能存在领导与雇员关系等,实体间的关系被抽象为联系。
联系可分为以下 3 种类型:
(1) 一对一联系(1 ∶1)
对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中至多有一个实体b与之有联系,而反过来也是如此,则称实体集A与实体集B存在一对一联系。
例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。
(2) 一对多联系(1 ∶N)
对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中有N个实体b与之有联系,而实体B中每一个实体b,A中至多有一个与之有联系,则称体集A与实体集B存在一对多联系。
例如,某校一个班级可以有多个学生,但一个学生只能有一个班级
(3) 多对多联系(M ∶N)
对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中有N个实体b与之有联系,而实体B中每一个实体b,A中有M个与之有联系,则称实体集A与实体集B存在多对多联系。
实体符号用矩形表示,并标以实体名称,属性用椭圆表示,并标以属性名称,联系用菱形表示,并标以联系名称
(1) 一对一联系(1 ∶1),ER图
在关系模型中一张二维表格(行,列)对应一个表格,二维表中的每行代表一个实体,每个实体的列代表该实体属性。E-R图最终需要转换为关系模型才有意义。
四、将E-R模型转化为关系模型
-
实体转化为关系
实体集转化为关系非常简单,只需将实体的属性作为关系的列即可(实体的所有属性);
-
联系转化为关系
1)一对一联系需要将其中一个实体的主键作为另一个实体的属性。反映到映射中,将一个关系的主键作为另一个关系的普通列联系本身的属性也应当以列的形式植入。对于一对一关系可将主从关系颠倒,也不会导致信息丢失
可将角色编号作为用户关系中的一个普通列,反过来也可以!
2)一对多联系,需要将一的一方作为主表,多的一方作为从表。联系的所有属性为从表的列,这样才不会导致信息丢失。如学生与班级:学生信息为从表,班级信息为主表
3)一对多。无论联系加入到哪一方都将造成信息丢失。如学生与选课。可以将学号,课程Id,以及关系的属性---学分作为新关系的列