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

1.3 数据模型

数据模型(Data Model)是现实世界数据特征的抽象,是站在计算机的角度,用模型的方式来描述数据、组织数据、处理数据的一种思想或一种方法。前述数据库体系结构中提到的模式就是将客观事物转换为数据模型的结果。

1.3.1 数据模型的基本概念

数据模型用来抽象、表现和处理现实世界中的数据和信息,是现实世界的模拟。为了把现实世界中的具体事物抽象、组织为某种DBMS支持的数据模型,人们常常首先把现实世界转换为信息世界,然后将信息世界转换为某一个DBMS支持的数据模型,如图1-4所示。

34599-00-022-1

图1-4 三个世界的转换

1. 现实世界

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

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

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

信息世界是对现实世界的认识和抽象描述,按用户的观点对数据和信息进行建模,不考虑在计算机和DBMS上的具体实现,所以被人们称之为概念数据模型,简称概念模型。

例如:学校教务管理系统中“学生”实体(Entity,E)和课程“实体”(Entity,E),以及实体之间的“选课”联系(Relationship,R),并派生出成绩“属性”(Attribute,A),构成的ER概念模型如图1-4中的②所示。

3. 机器世界(数据模型)

机器世界是建立在计算机上的逻辑数据模型,简称数据模型。按计算机系统的观点,根据概念模型进行某种数据模型的转换,用于DBMS的实现。

例如:学校教务管理系统中采用关系型数据模型,其学生选修课程的数据模型为“Student(学生)”、“Course(课程)”和“SC(学生选课)”关系,如图1-4中的③所示。

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('2011216001','赵成刚', '男','1992-5-5','软件技术')

3. 数据完整性

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

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

  CREATE TABLE Student
    (SID char(10) PRIMARY KEY,                        --实体完整性约束
     Sname char(8) NOT NULL,
     Sex nchar(1) NULL CHECK(Sex='男' OR Sex='女'),   --用户定义完整性约束
     Birthdate date NULL,                             --域完整性约束
     Specialty varchar(26) NULL)

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

1.3.3 数据模型的结构分类

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

1. 层次模型

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

34599-00-024-1

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

2. 网状模型

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

34599-00-025-1

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

3. 关系模型

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

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

34599-00-025-1

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

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

我们要学习的SQL Server 2008 R2就是一种支持关系模型的数据库管理系统。

4. 面向对象模型

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