微课1-3
在计算机领域,数据库技术是发展最快的技术之一。数据库技术沿着数据模型的主线在不断推进。在现实生活中,人们对具体的模型并不陌生,如汽车模型、建筑设计沙盘等,它们是对现实世界某个对象的模拟和抽象,可以让人很容易联想到真实事物。数据模型也是一种模型,它通过对现实世界数据特征进行抽象,完成描述数据、组织数据和对数据的操作。
因为计算机只能直接处理数据,所以人们必须将现实世界中的事物转换成计算机能明白的数据。实现这一过程的重要工具就是数据模型,它可以完成抽象、表示和处理现实事物的过程。数据库系统的实现离不开一个可靠的数据模型,数据模型是数据库系统的核心和根基。因此,学习数据库的基础是了解数据模型的基本概念。
数据(Data)是描述事物的符号记录,模型(Model)是现实世界的抽象,数据模型(Data Model)是现实世界数据特征的抽象。数据模型从抽象层面描述了数据库系统所描述的内容,包括数据库系统的数据结构(静态特征)、数据操作(动态特征)和数据的完整性约束3个部分,即数据模型的三要素。
数据结构用于描述数据库系统的静态特征,是数据库研究的对象类型及对象之间联系的集合。也就是说,数据结构的组成部分有两类:一类与数据对象的内容、性质、类型相关,例如,学生成绩管理系统数据库中的学生数据项特征,包括学号、姓名、班级等,以及各项特征的属性、域、关系等;一类是数据对象之间的联系,例如,一个学生可以选多门课、一门课可以被多个学生选择,这种联系也存在于数据库系统中。这两类组成部分概括如下。
(1)数据对象本身:类型、内容、性质,例如,关系模型中的域、属性、关系等。
(2)数据对象之间的联系:数据之间是如何关联的,例如,关系模型中的主键、外键等。
在数据库系统中,人们通常会按照其数据结构的类型来命名数据模型。例如,层次模型和关系模型的数据结构就分别是层次结构和关系结构。
数据操作用于描述数据库系统的动态特征,是允许施加在数据对象上的操作的集合。对数据执行的操作主要有检索、插入、删除和修改。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。
数据的完整性约束是一组完整性规则的集合,规定数据库状态及状态变化所应满足的条件,主要描述数据结构内数据间的语法、词义联系、制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。例如,关系模型中规定了一个数据记录中必须有一个确定的关键字,并且不能为空。
另外,数据模型还应提供定义完整性约束条件的机制,以反映某个应用涉及的数据必须遵守的特定现实条件,例如,在学生选课管理系统中,学生必须选择所有必修科目。
在数据库领域,数据模型按不同的应用目的,主要分为3种类型:概念数据模型、逻辑数据模型和物理数据模型。
概念数据模型(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所示。
逻辑数据模型(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 课程信息表
关系模型的优点是数据结构简单、清晰,用户易懂、易使用,并且存取路径透明,从而可以保证更高的数据独立性和安全保密性。
物理数据模型(Physical Data Model)简称物理模型,是面向计算机系统的物理表示模型,描述了系统内部的表示方法和存取方法,或者在磁盘、磁带上的存储方式和存取方法。它不仅与具体的 DBMS 有关,还与操作系统和硬件有关。设计人员在实现逻辑数据模型时都需选择对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,设计者只需设计索引、聚集等特殊结构。
这3个模型的生成过程就是实现一个软件系统的3个关键步骤,是从抽象到具体的不断细化,是完善的分析、设计和开发过程。
各种机器上实现的DBMS都是基于某种数据模型的。为了把现实世界中的具体事物抽象、组织成某种 DBMS支持的数据模型,人们常常先把现实世界转换为信息世界,将客观世界中的事物用对应的信息结构表达出来;然后将信息世界转换为机器世界,也就是某一个 DBMS支持的数据模型。也就是说,要将现实世界中的客观对象转换为机器世界(计算机)能处理的数字信息,需要经过抽象和数字化:先将现实世界的事物抽象成某一种信息结构,也就是信息世界的概念数据模型,这种概念数据模型与具体的计算机系统无关,不是某一个 DBMS支持的数据模型;接着,将信息世界的概念数据模型进行数字化,将其转换为计算机上某一个 DBMS支持的数据模型。这一过程如图1-12所示。
图1-12 现实世界的抽象过程