数据库设计——ER图
E-R图也称实体—联系图,提供了表示实体类型、属性和联系的方法用来描述现实世界的概念模型。
它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;用“菱形框”表示实体型之间的联系成因,在菱形框内写明联系名,并用“实心线段”分别与有关实体型连接起来,同时在“实心线段”旁标上联系的类型(1:1,1:n或m:n)。
构成E-R图的3个基本要素是实体型、属性和联系,其表示方法为:
实体:一般认为,客观上可以相互区分的事情就是实体,实体可以是具体的人和物,也可以是抽象的概念与联系。关键在于一个实体能与另一个实体相区别,具有相同属性的实体具有相同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体。
在E-R图中用矩形表示,矩形框内写明实体名;比如学生张三、学生李四都是实体。如果是弱实体的话,在矩形外面再套实线矩形。
属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。属性不能脱离实体,属性是相对实体而言的。
在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。如果是多值属性的话,在椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。
联系:联系也称关系,信息世界中反映实体内部或实体之间的关联。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。
在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。比如老师给学生授课存在授课关系,学生选课存在选课关系。如果是弱实体的联系则在菱形外面再套菱形。
一般性约束
实体-联系数据模型中的联系型,存在3种一般性约束:一对一约束(联系)、一对多约束(联系)和多对多约束(联系),它们用来描述实体集之间的数量约束:
(1)一对一联系(1:1):对于两个实体集A和B,若A中的每一个值在B中至多有一个实体值与之对应,反之亦然,则称实体集A和B具有一对一的联系。
一个学校只有一个正校长,而一个校长只在一个学校中任职,则学校与校长之间具有一对一联系。
(2) 一对多联系(1 ∶N):对于两个实体集A和B,若A中的每一个值在B中有多个实体值与之对应,反之B中每一个实体值在A中至多有一个实体值与之对应,则称实体集A和B具有一对多的联系。
例如,某校教师与课程之间存在一对多的联系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教。一个专业中有若干名学生,而每个学生只在一个专业中学习,则专业与学生之间具有一对多联系
(3) 多对多联系(M ∶N):对于两个实体集A和B,若A中每一个实体值在B中有多个实体值与之对应,反之亦然,则称实体集A与实体集B具有多对多联系
例如,表示学生与课程间的联系“选修 ”是多对多的,即一个学生可以学多门课程,而每门课程可以有多个学生来学。联系也可能有属性。例如,学生“ 选修” 某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于“ 成绩” 既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间的联系“ 选修”的属性。
实际上,一对一联系是一对多联系的特例,而一对多联系又是多对多联系的特例。联系是随着数据库语义而改变的,假如有如下3种语义规定:例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。一个员工可以同时是多个部门的经理,而一个部门只能有一个经理,则这种规定下“员工”与“部门”之间的“管理”联系就是1:n的联系了。一个员工可以同时在多个部门工作,而一个部门有多个员工在其中工作,则“员工”与“部门”的“工作”联系为m:n联系。
那我们如何确认实体集之间的关系呢? 我们可以先固定某个实体集中的某个实体值,然后看看它是否对应另一个实体集的多个实体值;同样地,我们需要固定另一个实体集中的某个实体值,然后看看它是否对应另一个实体集的多个实体集。通过这样的方式,我们可以确认两个实体集之间的关系。
弱实体
弱实体(weak entity)是一种数据库系统术语。其定义为一个实体对于另一个实体(一般为强实体,也可以是依赖于其他强实体的弱实体)具有很强的依赖联系,而且该实体主键的一部分或全部从其强实体(或者对应的弱实体依赖的强实体)中获得,则称该实体为弱实体。
在设计数据库时,我们可以作一张E-R图,这样有利于我们更好地体会各个数据表之间的关系。