2.3 概念模型
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。
2.3.1 基本概念
从现实抽象过来的信息世界具有以下7大主要基本概念。
(1)实体(Entity)
客观存在并互相区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系,如老师、学院、老师和学院之间的工作关系等都是实体。
(2)属性(Attribute)
实体所具有的某一特性称为属性。一个实体可以有若干属性来刻画。比如学生实体可以用学号、姓名、性别、出生年月、所在院系、入学时间等属性描述。其中各个属性针对实体的不同取值也不同,实体的具体取值称为熟悉值。例如:2017060203,李辉,男,12/26/2001,大数据系,09/012017。
(3)实体型(Entity Type)
即用实体类型名和所有属性来共同表示同一类实体,比如学生(学号、年龄)。
(4)实体集(Entity Set)
即同一类型实体的集合,如全体学生。
注意:区分实体、实体型、实体集三个概念。实体是某个具体的个体,比如学生中的王明。而实体集是一个个实体的某个集合,比如王明所在的2015级计算机2班的所有学生。而实体型则是实体的某种类型(该种类型的所有实体具有相同的属性而已),比如学生这个概念,王明是学生,王明所在班级的所有学生都是学生,显然学生是一个更大且更抽象的概念,王明和王明全班同学都比学生要更加具体。
(5)码(Key)
可以唯一标识一个实体的属性集,比如学号和每个学生实体一一对应,则学号可以作为码。
(6)域(Domain)
简单地说就是指实体中属性的取值范围(属于某个域),比如学生年龄的域为整数,因此精确地讲,域应该是某种数据类型的值的集合,学生的年龄是整数,但是有取不到所有整数,一般取值范围为6到40岁,而这个范围就来自(属于)整数这个集合。
(7)联系(Relationship)
主要指实体内部的联系(各属性之间的联系)和实体间的联系(数学抽象概念中强调实体型之间的联系,而现实生活中更加关注某几个具体的实体集之间的联系)。
2.3.2 E-R模型
概念层数据模型是面向用户、面向现实世界的数据模型,它是对现实世界的真实、全面的反映,它与具体的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-2所示。
图2-2 学生实体属性实例
(3)联系
联系是数据之间的关联集合,是客观存在的应用语义链。在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。
实体内部的联系通常是指组成实体的各属性之间的联系。
实体之间的联系通常是指不同实体集之间的联系。
在E-R图中联系用菱形表示,框内写上联系名,并用连线将联系框与它所关联的实体连接起来,如图2-3所示。
在E-R图中,基数表示一个实体到另一个实体之间关联的数目。基数是针对关系之间的某个方向提出的概念,基数可以是一个取值范围,也可以是某个具体数值。从基数的角度可以将关系分为一对一(1:1)、一对多(1:n)、多对多(m:n)关系。两个实体之间的联系可分为三类。
1)一对一联系(1:1)。如果实体集A中的每个实体,在实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B有一对一联系,记为1:1。
例如,学校里一个系和正系主任(假设一个系只有一个正主任,一个人只能担任一个系的正系主任),则系和正系主任是一对一联系,如图2-4所示。
图2-3 两个实体间的三类联系
图2-4 一对一联系实例
2)一对多联系(1:n)。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多的联系,记为1:n。
例如,一个系有多名教师。而每个教师只能在一个系工作,则系和教师之间是一对多联系,如图2-5所示。
3)多对多联系(m:n)。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B有多对多的联系,记为m:n。
例如,一门课程同时有若干学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系,如图2-6所示。
2.E-R模型设计原则与设计步骤
(1)E-R模型设计原则
1)属性应该存在于且只存在于某一个地方(实体或者关联)。该原则确保了数据库中的某个数据只存储于某个数据库表中(避免同一数据存储于多个数据库表),避免了数据冗余。
2)实体是一个单独的个体,不能存在于另一个实体中成为其属性。该原则确保了一个数据库表中不能包含另一个数据库表,即不能出现“表中套表”的现象。
图2-5 一对多联系实例
图2-6 多对多联系实例
3)同一个实体在同一个E-R图内仅出现一次。例如同一个E-R图,两个实体间存在多种关系时,为了表示实体间的多种关系,尽量不要让同一个实体出现多次。比如客服人员与客户,存在“服务—被服务”“评价—被评价”的关系。
(2)E-R模型设计步骤
① 划分和确定实体。
② 划分和确定联系。
③ 确定属性。作为属性的“事物”与实体之间的联系,必须是一对多的关系,作为属性的“事物”不能再有需要描述的性质或与其他事物具有联系。为了简化E-R模型,能够作为属性的“事物”尽量作为属性处理。
④ 画出E-R模型。重复过程①~③,以找出所有实体集、关系集、属性和属值集,然后绘制E-R图。设计E-R分图,即用户视图的设计,在此基础上综合各E-R分图,形成E-R总图。
⑤ 优化E-R模型。利用数据流程图,对E-R总图进行优化,消除数据实体间冗余的联系及属性,形成基本的E-R模型。