数据库系统-设计与应用
第 2 章 关系模型的查询语言
本章目标
本章主要内容包含两个部分。第一部分讲解关系模型基本概念,并从数据结构、数据操纵和完
整性约束三个方面论述关系模型;第二部分讲解关系数据库中的结构化查询语言 SQL。通过本章的
学习,将达到如下的目标:
了解数据模型和关系模型基本概念
理解并掌握关系模型的数据结构、数据操纵和完整性约束三个要素
掌握并能够熟练使用 SQL 语言对数据库中的数据进行访问和操纵
了解程序式 SQL 的原理和使用
1
数据库系统-设计与应用
2.1 关系模型
内容提要
现实世界的事物(包括信息)如果要进入计算机,必须对这些事物或信息进行模拟和抽象,建
立适当的数据模型。本节将从模型开始讨论,引出当前数据库系统普遍采用的关系模型。本节主要
包含如下内容:
模型和数据模型的基本概念
关系模型的概念和术语
关系模型的三个基本要素
2
数据库系统-设计与应用
模型与数据模型
模型(Model)是现实世界中具体事物(即实体)特征的模拟和抽象。在现实生活中,模型,
特别是具体模型,我们并不陌生,如汽车模型、飞机模型、建筑模型沙盘等等。看到这些模型,我
们就能够联想到生活中这些真实的事物或者这些事物将来的真实场景。我们能够根据模型联想到事
物的真实状况,并不是因为模型完全表示了真实事物,而是因为模型抓住了它所模拟事物的主要特
征。因此,模型的建立并不是随意的,而是由模型用途和要求决定的。例如,楼房的模型有很多种,
在城市或住宅小区规划中,我们平常所看到的模型属于外观立体效果图,这种模型主要抽象了城市
或小区楼房的外观特征,根据该模型,我们能够联想到将来这些楼房的大致形状,例如,楼房高度、
大小以及形状等。在楼房施工过程中,施工人员所使用的是这些楼房的建筑施工图,它比我们看到
的外观效果图要复杂得多。仅仅根据外观效果图模型,施工人员不可能建造出我们想象的真实楼房,
因为楼房的施工需要楼房更多的细节特征,甚至还有材质特征。
此外,模型并不是仅仅对实体的静态特征的模拟和抽象,根据需要,模型也能够对实体的动态
特征进行模拟和抽象。例如,有的汽车模型能够模拟汽车的运动,一些航模能够模拟飞机的飞行和
控制。
数据模型(Data Model,DM)是模型的一种,它是对实体的数据特征的模拟和抽象。既然模
型不仅能够表示实体的静态特征,而且能够表示其动态特征。那么,数据模型不仅要反映数据本身
的内容,而且还要反映数据之间的联系,甚至反映数据的操作特征和约束特征。由于计算机不能直
接处理现实世界中的具体事物,所以现实世界中的具体事物要进入计算机,必须用计算机能够处理
的数据进行表示。而且当这些数据进入计算机之后,还应采用合适的方法和手段对其进行管理。本
书前面已经讨论了计算机中数据管理的不同方法和手段,其中,数据库方法具有诸多优点,已成为
当前应用最为广泛的方法。在数据库方法中,数据必须以 DBMS 能够表示和处理的模型存入数据库,
不同类型的 DBMS 所采用的数据模型也各不相同,本书将主要讨论被各 DBMS 广泛使用的关系模型。
根据以上对数据模型的论述,在建模过程中,数据模型应满足三个方面的基本要求:一是能够
根据要求比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。要求一种数
据模型同时很好地满足这三个方面的要求是比较困难的,因此,通常是在数据库系统中,针对不同
的使用对象和应用目的,采用不同的数据模型。例如,针对人这个使用对象,数据模型应要求便于
人理解,而针对计算机这个对象,数据模型应要求便于计算机实现。在数据库系统中,根据数据模
型不同的应用目的,可以将模型分为概念模型、逻辑模型和物理模型,本书后面在数据库设计内容
中,将详细讨论其中的概念模型设计与逻辑模型设计。
为了把现实世界中的具体事物抽象并转化为某一 DBMS 支持的数据模型,我们常常首先将现实
世界抽象为信息世界,然后将信息世界转化为机器世界。或者说,我们首先把现实世界中的客观对
象抽象为某一种信息结构,它不依赖于具体的计算机系统,也不是某一个 DBMS 能够直接支持的数
据模型,但是这种信息结构便于人的理解和交互,称作概念模型;然后再把这种概念模型转化为计
算机上某一 DBMS 能够支持的数据模型。这一过程如图 2.1 所示。
3
数据库系统-设计与应用
图 2.1 数据抽象过程
从以上数据抽象过程可以看出,概念模型是数据库系统的核心和基础,它把现实世界和计算机
世界连接了起来,它既能够为人所容易理解,又能够转化为数据库系统所支持的数据模型。
数据模型的组成要素
严格来说,数据模型是一个综合概念,它描述了模型中的数据、数据之间的关系和对数据的操
作,以及对数据的完整性约束。也就是说,数据模型包含了三个方面的内容:数据结构、数据操作
和完整性约束。通常也把这三个内容称作数据模型的三个基本要素。因此,考察一个数据模型,也
应该从数据模型的这三个要素进行考察。
1)数据结构
数据结构是所研究的对象类型的集合,用以描述数据的静态特征,包括对数据的结构和数据间
联系的描述。数据结构是刻画一个数据模型性质最重要的方面。因此在数据库系统中,我们通常按
照数据模型的数据结构来对其命名,目前常见的数据模型有层次模型、网状模型以及关系模型,这
些数据模型的数据结构分别称为层次结构、网状结构和关系结构。
2)数据操作
数据操作是一组定义在数据上的操作(包括操作的含义、操作符、运算规则及其语言等),以
及有关的操作规则,它描述了数据的动态特征。对数据库来说,数据操作规定了数据库中各种对象
的实例可以做什么和怎么做。数据库中常用的数据操作类型有:检索、更新(包括插入、删除、修
改)两大类。就一般模型而言,也有相应的模型操作,比如对遥控电动汽车模型,应该具有加速、减
速和转弯等操作。
3)完整性约束
完整性约束是给定数据模型中数据及其联系所具有的制约和依存规则的集合,用以限定数据模
型的状态以及状态变化,以保证数据的正确、有效和相容。完整性约束的主要目的,是使数据模型
与它所描述的客观世界更加符合,保证数据模型更加真实、有效地反映客观世界;在对数据模型进
4
数据库系统-设计与应用
行操作,使数据模型状态发生变化时,限定数据模型状态值在客观世界的状态范围内。
数据模型除了明确定义其数据结构和数据操作之外,还应该反映和规定本数据模型必须遵守的
基本的、通用的完整性约束条件。例如,在关系模型中,任何关系必须满足实体完整性和参照完整
性两个约束条件。就一般模型而言,也有针对模型的约束条件,比如,上面提到的遥控电动汽车模
型,其加速应该有最大限制,转弯应该有最大转向约束限制等。
此外,数据模型还应该提供定义完整性约束条件的机制,用以反映具体应用所涉及的数据必须
遵守的特定语义约束条件。例如,在学校的学生管理系统中,可能需要规定学生入学年龄不得超过
30 岁,累计不及格课程不得超过 40 学分等。数据模型应该提供一种机制,让用户能够对具体应用中
的数据进行特定的约束,以更加准确地反映具体应用的客观事实。
数据库中常用的数据模型
到目前为止,数据库领域中曾经被使用的数据模型有下列四种:
层次模型(Hierarchical Model)
网状模型(Network Model)
关系模型(Relational Model)
面向对象模型(Object Oriented Model)
其中,层次模型和网状模型又统称为非关系模型。
层次模型是数据库系统中最早出现的数据模型,它采用树形结构来表示各类数据之间的联系。
现实世界中许多客观事物之间的联系本来就呈现出一种自然的层次关系,如行政机构、家族关系等,
因此,层次模型能够很好地表示现实世界中具有层次结构关系的客观对象。但是,现实世界中的客
观对象除了表现出层次关系之外,更多的是非层次关系的,如教师和学生之间的联系就是非层次的,
一个教师可以给多个学生授课,一个学生也可以接受多个教师的辅导。对于这种客观对象之间表现
出的多对多的联系,层次模型表示比较复杂,因此,产生了网状模型,它能够克服层次模型表示非
层次关系的弱点。网状模型虽然能够更为直接地描述现实世界,具有较高的存取效率,但是网状模
型结构比较复杂,而且随着应用环境的扩大,数据库的结构变得越来越复杂,更加不利于用户掌握。
层次数据库系统的典型代表是 IBM 公司的 IMS(Information Management System)数据库管理
系统,它于 1968 年被推出,曾经得到广泛的使用。网状模型的典型代表是 DBTG(Data Base Task
Group)系统,它对网状数据库系统的研制和发展起到了重大影响。
基于非关系模型的数据管理系统在 20 世纪 70 年代至 80 年代初被使用,当时在 DBMS 产品中占
据了主导地位,现在已经逐渐被基于关系模型的 DBMS 所取代。在数据库应用较早的部分行业和领
域中,由于早期开发的应用系统都是基于层次数据库或网状数据库,可能至今还在延续使用,除此
之外,基于层次或网状的数据库系统已不多见。
自 20 世纪 80 年代以来,面向对象的方法和技术在计算机各个领域,特别是程序设计语言和信
息系统设计领域产生了深远影响,这也促进了数据库中面向对象数据模型的研究和发展,并产生了
对象关系数据库管理系统和面向对象的数据库管理系统。
由于本书主要针对当前应用较为广泛的基于关系模型的数据库系统的设计与应用,因此,对于
5