SQL Server 2012数据库技术及应用(第4版)
上QQ阅读APP看书,第一时间看更新

1.3 数据模型

数据模型(Data Model)是对现实世界数据特征的抽象,是数据库系统中用以提供信息表示和操作手段的形式构架。

1.3.1 数据模型的应用层次

众所周知,现实世界是由客观存在的事物及其联系构成的。

例如:学校里学生和课程均为客观事物,学生和课程之间存在着学生选课的联系,如图1-7中的①所示。

为了把现实世界中的具体事物抽象并组织为某种DBMS支持的数据模型,人们常常首先把现实世界的事物及其联系抽象为信息世界,即建立概念数据模型,如图1-7中的②所示。然后将信息世界数据化为某一个DBMS支持的机器世界,即建立逻辑数据模型,如图1-7中的③所示。再面向计算机进行物理存储设计,即建立物理数据模型。

图1-7 三个世界的转换

由此可见,在数据库设计过程中,数据模型按不同的应用层次可分为以下三种类型。

1.概念模型(信息世界)

概念数据模型(Conceptual Data Model,简称概念模型)是对现实世界的认识和抽象描述,按用户的观点对实体及其联系建立概念化结构,用于信息世界的建模。概念模型不考虑在计算机和DBMS上的具体实现,常用的有E-R概念模型和IDEF1X概念模型。

例如:在学校教务管理系统中,将学生、课程以及学生选课的客观事物抽象为“学生”实体(Entity,E)、课程“实体”(Entity,E)以及实体之间的“选课”联系(Relationship, R),并派生出成绩“属性”(Attribute,A),建立的E-R概念模型如图1-7中的②所示。

2.逻辑模型(机器世界)

逻辑数据模型(Logical Data Model,简称逻辑模型)是按照计算机系统的观点,将概念模型转换为DBMS支持的某一种数据模型(如关系数据模型),用于机器世界的建模。

例如:在学校教务管理系统中,将概念模型转换为关系数据模型,其学生、课程及其学生选修课程可用Student、Course和SC关系来描述,如图1-7中的③所示。

3.物理模型(物理存储)

物理数据模型(Physical Data Model,简称物理模型)是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。每一种逻辑模型在实现时都有其对应的物理模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。

1.3.2 数据模型的组成要素

数据模型是严格定义的一组概念的结合。这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件。因此,数据模型通常由数据结构、数据操作和完整性约束三部分组成。

1.数据结构

数据结构是所研究的对象类型的集合。这些对象是数据模型的组成成分,它们包括两类,一类是与数据类型、内容、性质有关的对象,另一类是与数据之间的联系有关的对象。

数据结构用于描述系统的静态特征。DBMS的DDL实现数据库的数据结构定义功能。例如,用SQL Server的T-SQL定义一个学生表的语句如下:

CREATE TABLE Student       --建立关系模型的学生表

(SID char(10),         --定义字符型的学号

Sname char(8),         --定义字符型的姓名

Sex nchar(1),         --定义字符型的性别

Birthdate date NULL,      --定义日期型的生日

Specialty varchar(26) NULL)  --定义变长字符型的专业

2.数据操作

数据操作是指对数据模型中各种数据对象允许执行的操作的集合,包括操作及有关的操作规则。数据模型必须定义这些操作的确切含义、操作符号、操作规则以及实现操作的语言。

数据操作用于描述系统的动态特性。DBMS的DML实现数据库的数据操作功能。例如,用SQL Server的T-SQL对以上“学生”表插入一行数据的语句如下:

INSERT Student(SID,Sname,Sex,Birthdate,Specialty)

VALUES('2014216001','赵成刚','男','1995-5-5','软件技术')

3.数据完整性

数据完整性是为了保证数据模型中数据的正确性、一致性和可靠性,对数据模型提出的一系列约束或规则。数据完整性控制可以有效避免数据库中存在不符合语义规定的数据,防止因错误信息的输入输出造成无效操作或错误信息。

DBMS的DDL和DCL提供多种方法保证数据完整性。例如,用SQL Server的T-SQL在创建“学生”表的同时进行完整性约束定义的语句如下:

CREATE TABLE Student

(SID char(10) PRIMARY KEY,            --主键PK约束实现实体完整性控制

Sname char(8) NOT NULL,

Sex nchar(1) NULL CHECK(Sex = '男' OR Sex = '女'), --CHECK约束实现域完整性控制

Birthdate date NULL,              --date数据类型实现域完整性控制

Specialty varchar(26) NULL)

对于这样定义的“学生”表,用户在输入学生的学号“SID”时,如果发生重复学号或者为空的情况,DBMS将给出错误提示信息并要求纠正错误。当用户输入性别“Sex”时,也将只能输入“男”或“女”。当用户输入出生日期“Birthdate”时,只能输入合法的日期数据,从而保证了数据的正确性。

有关数据模型的数据结构、数据操作和完整性约束的具体内容将在后续章节中深入介绍。

1.3.3 逻辑模型的结构分类

按照数据结构分类,数据库领域中的逻辑模型有以下4种。

1.层次模型

层次模型(Hierarchical Model)用树形结构来表示各类实体以及实体之间的联系,如图1-8所示。现实世界中许多实体之间的联系本来就呈现出一种自然的层次关系,但由于这种数据结构常用链接指针来表示,在需要动态访问数据时效率不高。对于某些应用系统要求很高的情况,数据的插入与删除等操作也有许多限制,现在已经很少采用了。

2.网状模型

网状模型(Network Model)用图形结构来表示各类实体以及实体之间的联系,如图1-9所示。网状模型是对层次模型的扩展,是现实世界中许多实体之间的联系本来就呈现出的一种自然的图形关系。网状模型的缺点是结构复杂,用户不易掌握,扩充和维护都比较复杂。与层次模型的数据结构相同,数据的插入与删除等操作限制更多,现在也很少采用。

图1-8 组织部门的层次模型示例

图1-9 销售机构的网状模型示例

3.关系模型

关系模型(Relational Model)用二维表结构来表示各类实体以及实体之间的联系,如表1-1所示。关系模型建立在严格的关系代数的基础上,是目前最重要的一种逻辑模型。

表1-1 关系Student(学生表)

1970年,美国IBM公司Sun Jose研究室的研究员E.F.Codd首次提出了数据库的关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。由于E.F.Codd的杰出工作,他于1981年获得ACM图灵奖。

20世纪80年代以来,计算机厂商新推出的数据库管理系统几乎都支持关系模型,非关系系统的产品也大多加上了关系接口。数据库领域当前的研究工作也都是以关系方法为基础的。

本书要介绍的SQL Server 2012就是一种支持关系模型的数据库管理系统。

4.面向对象模型

面向对象模型(Object Oriented Model)是用面向对象观点来描述现实世界实体(对象)的逻辑组织、对象间限制和联系等的模型。一系列面向对象的核心概念构成了 OO(Object Oriented)的模型基础,是有发展潜力的数据模型。由于其复杂性,目前还是一个发展方向,属于第二代数据库系统。