任务1.2.2 掌握数据模型
在数据库领域,数据模型按不同的应用目的,主要分为3种类型:概念数据模型、逻辑数据模型和物理数据模型。
1.概念数据模型
概念数据模型(Conceptual Data Model)也称为概念模型,它按照用户的观点对数据和信息建模,是对现实世界的抽象反映。它使数据库设计人员在设计的初始阶段摆脱了计算机系统及DBMS的具体技术问题,能集中精力分析数据及数据之间的联系等,不依赖于具体的计算机系统,是现实世界到数据世界的中间层。概念数据模型主要用来完成数据库设计,它必须转换成逻辑数据模型才能在DBMS中实现。
概念数据模型是数据库设计者进行数据库设计的有力工具,也是设计者与用户之间进行交流的“语言”。因此,概念数据模型一方面应该具有强大的语义表达能力,另一方面应该清晰、直接、易于用户理解。
描述概念数据模型的工具是E-R模型,主要包括实体、联系和属性3个基本概念。
(1)实体(Entity)
实体可以是现实世界中可互相区别的事件或物体,也可以是抽象的概念或联系。例如,学校中的每个人都是一个实体。每个实体由一组属性来表示,其中一些属性可以唯一地标识一个实体,如学号。与此类似,每一门课程也可以看作一个实体,而课程号唯一地标识了某个具体的课程实体。当然,实体也可以是抽象的概念,如学生选课、机票预订等。实体集是具有相同属性的实体集合,而实例是实体集中的某个特例。
实体集与实例举例如图1-7所示。
图1-7 实体集与实例举例
(2)联系(Relationship)
在客观世界中,事物彼此之间是有联系的。实体之间的联系可以分为以下3类。
① 一对一联系(1 : 1)。
如果实体集E(1)中的每一个实体至多与实体集E(2)中的一个实体相对应,并且实体集E(2)中的每一个实体至多与实体集E(1)中的一个实体相对应,则称实体集E(1)与实体集E(2)为一对一联系,记作1 : 1。
例如,电影院里一个座位只能坐一个观众,因此观众与座位之间是一对一联系。
② 一对多联系(1 : n)。
如果实体集E(1)中的一个实体与实体集E(2)中的多个实体相对应,并且实体集E(2)中的一个实体至多与实体集E(1)中的一个实体相对应,则称实体集E(1)与实体集E(2)为一对多联系,记作1 : n。
例如,一个系部有多位教师,而每位教师只属于某一个系部,因此系部与教师之间是一对多联系。
③ 多对多联系(m : n)。
如果实体集E(1)中的一个实体与实体集E(2)中的多个实体相对应,并且实体集E(2)中的一个实体与实体集E(1)中的多个实体相对应,则称实体集E(1)与实体集E(2)为多对多联系,记作m : n。
例如,一个项目有多个职工,一个职工也可以参与多个项目,因此职工与项目之间是多对多联系。
实体间的联系举例如图1-8所示。
图1-8 实体间的联系举例
(3)属性(Attribute)
实体或联系所具有的某方面特性被称为属性。一个实体可以由若干个属性来描述。例如,学生实体可能有学号、姓名、专业、性别、出生日期等属性;课程实体可能有课程号、课程名称、开课学期、学时、学分等属性。可以唯一确定一个实体的属性(一个或多个)称之为主键。
联系也可能有属性。例如,学生与课程的联系是“学习”,学生“学习”某门课程所获取的“成绩”同时依赖于某个特定的学生以及某门特定的课程,所以“成绩”是学生与课程之间的联系“学习”的属性。
概念数据模型有多种表示方法,其中最为常用的是陈品山(P.P.S.Chen)于1976年提出的实体-联系(E-R)模型,也就是E-R图,它提供了表示实体、属性和联系的方法。
① 实体:用矩形框表示,矩形框内写明实体名。
② 属性:用椭圆形框表示,并用无向边将其与相应的实体连接起来,确定为主键的属性用添加下划线的方式表示。联系也是可以有属性的。
③ 联系:用菱形框表示,菱形框内写明联系名,并用无向边分别与实体相连,同时注明联系的类型(1 : 1、1 : n或m : n)。
学生成绩管理系统数据库的E-R模型如图1-9所示。
2.逻辑数据模型
逻辑数据模型(Logical Data Model)简称数据模型,它按计算机系统的观点对数据建模,是对概念数据模型的进一步分解和细化。它也是用户从数据库中看到的模型,是具体的 DBMS 支持的数据模型,主要包括层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relation Model)等。此模型既要面向用户,又要面向系统,主要用于DBMS的实现。
逻辑数据模型的选择将直接影响数据库的性能。逻辑数据模型的选择对数据库设计者来说是首要任务。目前常用的逻辑数据模型有3种:层次模型、网状模型和关系模型。
图1-9 学生成绩管理系统数据库的E-R模型
(1)层次模型
层次模型的基本数据结构就是层次结构。由于在层次模型中,各类实体及实体间的联系是用“有向树”的数据结构来表示的,所以也称其为树形结构。大学系部的层次模型如图1-10所示,系部就是“树根”(根节点),系部下面的各办公室就是“树枝”(树节点)。
图1-10 大学系部的层次模型
从模型图可见,层次模型的优点是数据结构简单、节点间联系清晰;缺点是不能直接表示实体间的复杂联系(如多对多联系),查询树节点必须通过根节点,查询效率较低。
(2)网状模型
网状模型的基本数据结构就是网络结构。网状模型中的每个节点表示一个实体,节点之间的连线表示实体与实体之间的联系,从而构成一个复杂的网状结构。学生与课程的网状模型如图1-11所示。
图1-11 学生与课程的网状模型
(3)关系模型
关系模型在逻辑数据模型中占据了最重要的地位。20世纪80年代以来,计算机厂商推出的DBMS几乎都支持关系模型,数据库领域当前的研究方向也大都以关系模型为根基。
每个关系的数据结构都是一张规范化的二维表,每张二维表都可以称为关系,表中的每一行对应一个元组或者一条记录,表中的每一列对应一个属性或者一个字段。表1-1所示的课程信息表便是以二维表的形式来表示课程关系的。
表1-1 课程信息表
关系模型的优点是数据结构简单、清晰,用户易懂、易使用,并且存取路径透明,从而可以保证更高的数据独立性和安全保密性。
3.物理数据模型
物理数据模型(Physical Data Model)简称物理模型,是面向计算机系统的物理表示模型,描述了系统内部的表示方法和存取方法,或者在磁盘、磁带上的存储方式和存取方法。它不仅与具体的 DBMS 有关,还与操作系统和硬件有关。设计人员在实现逻辑数据模型时都需选择对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,设计者只需设计索引、聚集等特殊结构。
这3个模型的生成过程就是实现一个软件系统的3个关键步骤,是从抽象到具体的不断细化,是完善的分析、设计和开发过程。
各种机器上实现的DBMS都是基于某种数据模型的。为了把现实世界中的具体事物抽象、组织成某种 DBMS支持的数据模型,人们常常先把现实世界转换为信息世界,将客观世界中的事物用对应的信息结构表达出来;然后将信息世界转换为机器世界,也就是某一个 DBMS支持的数据模型。也就是说,要将现实世界中的客观对象转换为机器世界(计算机)能处理的数字信息,需要经过抽象和数字化:先将现实世界的事物抽象成某一种信息结构,也就是信息世界的概念数据模型,这种概念数据模型与具体的计算机系统无关,不是某一个 DBMS支持的数据模型;接着,将信息世界的概念数据模型进行数字化,将其转换为计算机上某一个 DBMS支持的数据模型。这一过程如图1-12所示。
图1-12 现实世界的抽象过程