概念层数据模型是面向用户、面向现实世界的数据模型,它是对现实世界的真实、全面的反映,它与具体的DBMS无关。常用的概念层数据模型有实体—联系(Entity-Relationship,E-R)模型、语义对象模型。这里只介绍实体—联系模型。E-R图由实体、属性和联系三个要素构成。
1.基本概念
(1)实体
客观存在并可相互区别的事物称为实体。
E-R图中的实体用于表示现实世界具有相同属性描述的事物的集合,它不是某一个具体事物,而是某一种类别所有事物的统称。实体可以是具体的人、事、物,也可以是抽象的概念或联系,例如,职工、学生、部门、课程等都是实体。
在E-R图中用矩形框表示具体的实体,把实体名写在框内。实体中的每一个具体的记录值(一行数据),比如学生实体中的每个具体的学生称为一个实体的一个实例。
数据库开发人员在设计E-R图时,一个E-R图中通常包含多个实体,每个实体由实体名唯一标记。开发数据库时,每个实体对应于数据库中的一张数据库表,每个实体的具体取值对应于数据库表中的一条记录。
(2)属性
E-R图中的属性通常用于表示实体的某种特征,也可以使用属性表示实体间关系的特征(稍后举例)。一个实体通常包含多个属性,每个属性由属性名唯一标记,画在椭圆内。E-R图中实体的属性对应于数据库表的字段。
在E-R图中,属性是一个不可再分的最小单元,如果属性能够再分,则可以考虑将该属性进行细分,或者可以考虑将该属性“升格”为另一个实体。
实体所具有的某一特性称为属性。每个实体具有一定的特征或性质,这样才能区分一个实例。属性就是描述实体或者联系的性质或特征的数据项,属于一个实体的所有实例都具有相同的性质,在E-R模型中,这些性质或特征就是属性。
例如,学生的学号、姓名、性别、出生日期、所在院系、入学年份等都是学生实体具有的特征,(14002668,张三,男,1992-12,计算机系,2015)这些属性组合起来表征了一个学生。属性在E-R图中用椭圆(圆角矩形)表示,在矩形框内写上实体名称,并用连线将属性框与它所描述的实体联系起来,如图2-3所示。
图2-3 学生实体属性实例
(3)联系
联系是数据之间的关联集合,是客观存在的应用语义链。在现实世界中,事物内部及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。
实体内部的联系通常是指组成实体的各属性之间的联系。
实体之间的联系通常是指不同实体集之间的联系。
在E-R图中联系用菱形表示,框内写上联系名,并用连线将联系框与它所关联的实体连接起来,如图2-4所示。
图2-4 两个实体间的三类联系
在E-R图中,基数表示一个实体到另一个实体之间关联的数目。基数是针对关系之间的某个方向提出的概念,基数可以是一个取值范围,也可以是某个具体数值。从基数的角度可以将关系分为一对一(1∶1)、一对多(1∶n)、多对多(m∶n)关系。两个实体之间的联系可分为如下三类:
1)一对一联系(1∶1)。如果实体集A中的每个实体,在实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B有一对一联系,记为1∶1。
例如,学校里一个系和正系主任(假设一个系只有一个正系主任,一个人只能担任一个系的正系主任),则系和正系主任是一对一联系,如图2-5所示。
图2-5 一对一联系实例
2)一对多联系(1∶n)。如果对于实体集A中的每一个实体,实体集B中有n个实体( n ≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多的联系,记为1∶n。
例如,一个系有多名教师。而每个教师只能在一个系工作,则系和教师之间是一对多联系,如图2-6所示。
3)多对多联系(m∶n)。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B有多对多的联系,记为m∶n。
例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系,如图2-7所示。
图2-6 一对多联系实例
图2-7 多对多联系实例
2.E-R模型设计原则与设计步骤
(1)ER模型设计原则
1)属性应该存在于且只存在于某一个地方(实体或者关联)。该原则确保了数据库中的某个数据只存储于某个数据库表中(避免同一数据存储于多个数据库表),避免了数据冗余。
2)实体是一个单独的个体,不能存在于另一个实体中成为其属性。该原则确保了一个数据库表中不能包含另一个数据库表,即不能出现“表中套表”的现象。
3)同一个实体在同一个E-R图内仅出现一次。例如,同一个E-R图,两个实体间存在多种关系时,为了表示实体间的多种关系,尽量不要让同一个实体出现多次。比如客服人员与客户,存在“服务—被服务”“评价—被评价”的关系。
(2)ER模型设计步骤
1)划分和确定实体。
2)划分和确定联系。
3)确定属性。作为属性的“事物”与实体之间的联系,必须是一对多的关系,作为属性的“事物”不能再有需要描述的性质或与其他事物具有联系。为了简化E-R模型,能够作为属性的“事物”尽量作为属性处理。
4)画出E-R模型。重复过程1)~3),以找出所有实体集、关系集、属性和属值集,然后绘制E-R图。设计E-R分图,即用户视图的设计,在此基础上综合各E-R分图,形成E-R总图。
5)优化E-R模型。利用数据流程图,对E-R总图进行优化,消除数据实体间冗余的联系及属性,形成基本的E-R模型。