第4章 数据库设计基础[视频讲解]

1数据库的基本概念:数据库,数据库管理系统,数据库系统。

2数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。

3关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。

4数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略

4.1 数据库系统的基本概念

视频二维码(扫码观看)

一、数据、数据库、数据库管理系统

1数据

数据(Data)实际上就是描述事物的符号记录。

计算机中的数据分为临时性(Transient)数据和持久性(Persistent)数据。

在数据库系统中需要对数据进行集中、统一的管理,以达到数据被多个应用程序共享的目标。数据库中一个数据包括数据的类型(Type)和值(Value)。

2数据库

数据库(Data Base,DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。

数据库中的数据具有“集成”“共享”之特点,亦即是数据库集中了各种应用的数据,进行统一的构造与存储,而使它们可被不同应用程序所使用。

3数据库管理系统

数据库管理系统(Data Base Management System,DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。数据库管理系统是数据库系统的核心。

【考题】数据库系统的核心是(  )。

A.数据库

B.数据库管理系统

C.数据库管理员

D.数据模型

【答案】B

【解析】数据库管理系统是数据库系统的核心,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

数据库管理系统有如下几方面的具体功能:

数据模式定义

数据存取的物理构建

为数据模式的物理存取及构建提供有效的存取方法与手段。

数据操纵

提供查询、插入、修改以及删除数据的功能。还具有做简单运算及统计的能力,可以与某些过程性语言结合,使其具有强大的过程性操作能力。

数据的完整性、安全性定义与检查

数据库中的数据具有内在语义上的关联性与一致性,它们构成了数据的完整性,数据的完整性是保证数据库中数据正确的必要条件。

数据共享可能会引发数据的非法使用,因此必须要对数据正确使用作出必要的规定,并在使用时做检查,这就是数据的安全性。

数据库的并发控制与故障恢复

数据库是一个集成、共享的数据集合体,它能为多个应用程序服务,所以就存在着多个应用程序对数据库的并发操作。

数据的服务

数据库管理系统提供对数据库中数据的多种服务功能,如数据拷贝、转存、重组、性能监测、分析等。

为完成以上六个功能,数据库管理系统一般提供相应的数据语言(Data Language),它们是:

数据定义语言(Data Definition Language,DDL)。该语言负责数据的模式定义与数据的物理存取构建。

数据操纵语言(Data Manipulation Language,DML)。该语言负责数据的操纵,包括查询及增、删、改等操作。

数据控制语言(Data Control Language,DCL)。该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能,包括系统初启程序、文件读写与维护程序、存取路径管理程序、缓冲区管理程序、安全性控制程序、完整性检查程序、并发控制程序、事务管理程序、运行日志管理程序、数据库恢复程序等。

上述数据语言按其使用方式具有两种结构形式:交互式命令语言和宿主型语言。

结构化查询语言SQL(Structured Query Language),不仅具有丰富的查询功能,还兼具数据定义和数据控制功能,是集DDL、DML和DCL于一体的关系数据库语言。

SQL语言也可以嵌入到其他高级语言中使用。SQL语言简洁,易学易用,数据统计方便直观,具有极大的灵活性和强大的功能。

数据库管理系统还有为用户提供服务的服务性(Utility)程序,包括数据初始装入程序、数据转存程序、性能监测程序、数据库再组织程序、数据转换程序、通信程序等。

目前流行的DBMS均为关系数据库系统,比如Oracle、Sybase的PowerBuilder及IBM的DB2、微软的SQL Server及MySQL等,它们均为严格意义上的DBMS系统。另外,有一些小型的数据库,如Access等,它们只具备数据库管理系统的一些简单功能。

【考题】数据库系统中完成查询操作使用的语言是(  )。

A.数据控制语言

B.数据定义语言

C.数据操纵语言

D.数据巡查语言

【答案】C

【解析】数据操纵语言(DML):负责数据的操纵,包括查询及增、删、改等操作;数据定义语言(DDL):负责数据的模式定义与数据的物理存取构建;数据控制语言(DCL):负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。数据库管理系统一般提供相应的数据语言不包括数据巡查语言。

4数据库管理员

由于数据库的共享性,因此对数据库的规划、设计、维护、监视等需要有专人管理,称他们为数据库管理员(Database Administrator,DBA)。其主要工作如下:

(1)数据库设计(Database Design)。

(2)数据库维护。

(3)改善系统性能,提高系统效率。当效率下降时,DBA需采取适当的措施,如进行数据库的重组、重构等。

5数据库系统

数据库系统(Database System,DBS)由如下几部分组成:数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)。

硬件平台包括:计算机,网络,数据库系统今后将以建立在网络上为主,而其结构形式又以客户/服务器(C/S)方式与浏览器/服务器(B/S)方式为主。

软件平台包括:操作系统,数据库系统开发工具(VB、VC……),接口软件(JDBC、ODBC……)

6数据库应用系统(Database Application System,DBAS)

数据库应用系统包括数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。

数据库应用系统的7个部分以一定的逻辑层次结构方式组成一个有机的整体。

如果不计数据库管理员(人员)并将应用软件与应用界面记成应用系统,则数据库应用系统的结构如图4-1所示。

图4-1 数据库系统的软硬件层次结构图

下面以一个用户读取某数据记录为例,展示在数据库系统中访问数据的具体执行过程。

图4-2 数据库系统访问数据的步骤

对其各个步骤简单说明如下:

用户程序中有一条读数据库记录的DML语句,当计算机执行到该语句时,即向DBMS发出读取相应记录的命令。

DBMS接到该命令后,首先访问该用户对应的子模式,检查该操作是否在合法授权范围内及欲读记录的正确性、有效性,若不合法则拒绝执行,并向应用程序状态返回区发出回答状态信息;反之执行下一步。

DBMS读取模式描述并从子模式映像到全局模式,从而确定所需的逻辑记录类型。

DBMS从逻辑模式映像到存储模式,从而确定读入哪些物理记录以及具体的地址信息。

DBMS向操作系统发出从指定地址读取记录的命令。

操作系统执行读命令,按指定地址从数据库中把记录读入系统缓冲区,并在操作结束后向DBMS作出回答。

DBMS按照模式将读入系统缓冲区中的内容映像成用户要求读取的逻辑记录。

DBMS将导出的逻辑记录送入用户工作区,并将操作执行情况的状态信息返回给用户。

DBMS将已执行的操作载入运行日志。

应用程序根据返回的状态信息决定是否利用该数据进行操作等。

二、数据库系统的发展

数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。

人工管理阶段是在20世纪50年代中期以前,主要用于科学计算,硬件无磁盘,直接存取,软件没有操作系统。

文件系统阶段是在20世纪50年代后期到20世纪60年代中期。

数据库系统阶段是在20世纪60年代之后。

表4-1 数据管理三个阶段的比较

分布式数据库技术是大数据时代云计算技术的基础,是数据的基本存储方式;在大量应用中对数据库管理系统提出了高可靠性、高性能、高可伸缩性(Scalability)和高安全性等“四高”要求

未来的数据库系统应支持数据管理、对象管理和知识管理,应该具有面向对象的基本特征。

在关于数据库的诸多新技术中,面向对象数据库系统、知识库系统、关系数据库系统的扩充这三种是比较重要的。

三、数据库系统的基本特点

1数据的集成性

2数据的高共享性与低冗余性

3数据独立性

4数据统一管理与控制

四、数据库系统的内部结构体系

数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式与外部级模式,二级映射则分别是概念级到内部级的映射以及外部级到概念级的映射。

图4-3 三级模式、两种映射关系图

1数据库系统的三级模式

(1)概念模式

主要描述数据的概念记录类型以及它们间的关系,它还包括一些数据间的语义约束。

(2)外模式

外模式也称子模式或用户模式。它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。

(3)内模式

内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。

模式的三个级别层次反映了模式的三个不同环境以及它们的不同要求,其中内模式处于最底层,它反映了数据在计算机物理结构中的实际存储形式,概念模式处于中层,它反映了设计者的数据全局逻辑要求,而外模式处于最外层,它反映了用户对数据的要求。

2数据库系统的两级映射

两级映射建立了模式间的联系与转换。

(1)概念模式到内模式的映射

该映射给出了概念模式中数据的全局逻辑结构到数据的物理存储结构间的对应关系。

(2)外模式到概念模式的映射

概念模式是一个全局模式而外模式是用户的局部模式。一个概念模式中可以定义多个外模式,而每个外模式是概念模式的一个基本视图。

【考题】在关系数据库中,用户所见的数据模式是数据库的(  )。

A.概念模式

B.外模式

C.内模式

D.物理模式

【答案】B

【解析】外模式(External Schema)也称子模式(Subschema)或用户模式(User’s Schema)。它是用户的数据视图,也就是用户所见到的数据模式。

4.2 数据模型

视频二维码(扫码观看)

一、数据模型的基本概念

数据是现实世界符号的抽象,而数据模型则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。

数据模型按不同的应用层次分为三种类型:概念数据模型、逻辑数据模型、物理数据模型。

概念数据模型简称概念模型,它是一种面向客观世界、面向用户的模型;它与具体的数据库管理系统无关,与具体的计算机平台无关。目前,较为有名的概念模型有E-R模型、扩充的E-R模型、面向对象模型及谓词模型等。

逻辑数据模型又称数据模型,它是一种面向数据库系统的模型,该模型着重于在数据库系统一级的实现。如层次模型、网状模型、关系模型、面向对象模型等。

物理数据模型又称物理模型,它是一种面向计算机物理表示的模型,此模型给出了数据模型在计算机上物理结构的表示。

【考题】下面属于数据库逻辑模型的是(  )。

A.关系模型

B.谓词模型

C.物理模型

D.实体-联系模型

【答案】A

【解析】逻辑数据模型又称数据模型,它是一种面向数据库系统的模型,该模型着重于在数据库系统一级的实现。如层次模型、网状模型、关系模型、面向对象模型等。

二、E-R模型

该模型将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们间的两种基本连接关系,并且可以用一种图非常直观地表示出来。

1E-R模型的基本概念

(1)实体

现实世界中的事物可以抽象成为实体,凡是有共性的实体可组成一个集合称为实体集。

(2)属性

属性描述了实体的特征,一个实体可有多个属性。一个属性的取值范围称为该属性的值域或值集。

(3)联系

事物间的关联称为联系。

两个实体集间的联系可以有下面几种:

一对一的联系,简记为1:1;

一对多或多对一联系,简记为1:M(1:m)或M:1(m:1);

多对多联系,简记为M:N或m:n。

2E-R模型三个基本概念之间的连接关系

(1)实体集(联系)与属性间的连接关系

属性有属性域,每个实体可取属性域内的值。一个实体的所有属性取值组成了一个值集叫元组(Tuple)。

联系也可以有属性,联系和它的所有属性构成了联系的一个完整描述。如有教师与学生两个实体集间的教与学的联系,该联系尚可附有属性“教室号”。

表4-2 人事档案简表

人事档案实体由编号、姓名、性别、年龄、籍贯、政治面貌等属性组成。相同型的实体构成了实体集。表中的每一行是一个实体,它们均有相同的型,因此表内诸实体构成了一个实体集。

(2)实体(集)与联系

实体集间可通过联系建立连接关系,一般而言,实体集间无法建立直接关系,它只能通过联系才能建立起连接关系。

3E-R模型的图示法

E-R模型可以用一种非常直观的图的形式表示,这种图称为E-R图。

(1)实体集表示法

在E-R图中用矩形表示实体集,在矩形内写上该实体集的名字。如实体集学生(student)、课程(course)。

图4-4 实体集表示法

(2)属性表示法

在E-R图中用椭圆形表示属性,在椭圆形内写上该属性的名称。如学生有属性:学号、姓名及年龄。

图4-5 属性表示法图

(3)联系表示法

在E-R图中用菱形(内写上联系名)表示联系。如学生与课程间的联系SC。

图4-6 联系表示法

(4)实体集(联系)与属性间的连接关系

属性依附于实体集,因此,它们之间有连接关系。在E-R图中这种关系可用连接这两个图形间的无向线段表示(一般情况下可用直线)。

图4-7 实体集的属性间的连接

联系也可以有属性,因此也可用无向线段表示。如联系sc可与学生的课程成绩属性G建立连接。

图4-8 联系与属性间的连接

(5)实体集与联系间的连接关系

在E-R图中实体集与联系间的连接关系可用连接这两个图形间的无向线段表示。如实体集student与联系SC间有连接关系,实体集course与联系SC间也有连接关系,因此它们之间可用无向线段相连。

图4-9 实体集与联系间的连接关系

有时为了进一步刻画实体间的函数关系,还可在线段边上注明其对应函数关系,如1:1,1:n,n:m等,如student与course间有多对多联系。

图4-10 实体集间的联系表示图

实体集与联系间的连接可以有多种,上面所举例子均是两个实体集间联系叫二元联系,也可以是多个实体集间联系,叫多元联系。如工厂、产品与用户间的联系FPU是一种三元联系。

图4-11 多个实体集间联系的连接方法

一个实体集内部可以有联系。如某公司职工(employee)间上、下级管理(manage)的联系。

实体集间可有多种联系。如教师(T)与学生(S)之间可以有教学(E)联系也可有管理(M)联系。

图4-12 实体集间多种联系

【例1】由前面所述的实体集student,course以及附属于它们的属性和它们间的联系SC以及附属于SC的属性G构成了一个学生课程联系的概念模型,可用图4-13的E-R图表示。

图4-13 E-R图的一个实例

三、层次模型

层次模型(Hierarchical Model)的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构,它们自顶向下、层次分明。

优点:层次模型的数据结构比较简单,操作简单;对于实体间联系是固定的、且预先定义好的应用系统,层次模型有较高的性能;同时,层次模型还可以提供良好的完整性支持。

缺点:不适合于表示非层次性的联系;对于插入和删除操作的限制比较多;此外,查询子女结点必须通过双亲结点。

图4-14 学校行政机构图的简化E-R图(略去属性)

四、网状模型

从图论观点看,网状模型是一个不加任何条件限制的无向图。网状模型将通用的网络拓扑结构分成一些基本结构。一般采用的分解方法是将一个网络分成若干个二级树,即只有两个层次的树。

优点:网状模型明显优于层次模型,效率更高、更为成熟。

缺点:在使用时涉及系统内部的物理因素较多,用户操作使用并不方便,其数据模式与系统实现也均不甚理想。

图4-15 一个简化的教学关系E-R图

在网状模型的DBTG(Data Base Task Group)标准中,基本结构简单二级树叫系,系的基本数据单位是记录,它相当于E-R模型中的实体(集)。

图4-16 一个系的实例

五、关系模型

1关系的数据结构

关系模型采用二维表来表示,简称表。二维表由表框架及表的元组组成。以下是二维表的一个实例:

表4-3 二维表的一个实例

二维表一般满足下面7个性质:

二维表中元组个数是有限的——元组个数有限性。

二维表中元组均不相同——元组的唯一性。

二维表中元组的次序可以任意交换——元组的次序无关性。

二维表中元组的分量是不可分割的基本数据项——元组分量的原子性。

二维表中属性名各不相同——属性名唯一性。

二维表中属性与次序无关,可任意交换——属性的次序无关性。

二维表属性的分量具有与该属性相同的值域——分量值域的同一性。

二维表的几个概念:

键或码:在二维表中能唯一标识元组的最小属性集称为该表的键或码。

候选码或候选键:二维表中可能有若干个键,它们称为候选码或候选键。

主键:从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码,一般也简称键或码。表中一定要有主键。

外键或外码:表A中的某属性集是某表B的键,则称该属性集为A的外键或外码。

【考题】设有表示客户、产品及购买的三张表,其中客户(客户号,姓名,性别,年龄,地址),产品(产品号,产品名,规格,进价,出厂时间),购买(客户号,产品号,价格,时间),其中表客户和产品的关键字为客户号和产品号,则关系表购买的关键字(键或码)为(  )。

A.产品号

B.客户号

C.客户号,产品号

D.客户号,产品号,价格

【答案】C

【解析】在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。在客户表中,每个客户号对应的信息是唯一的;在产品表中,每个产品号对应的信息也是唯一的;通过购买表中的客户号可以查找到客户表中该客户的全部信息,通过购买表中的产品号可以查找到产品表中该产品的全部信息,即满足二维表中键或码的定义。选项C正确。

2关系操纵

关系模型的数据操纵即是建立在关系上的数据操纵,一般有查询、增加、删除及修改操作。

(1)数据查询(一个关系内或多个关系间的查询)

用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。

一个关系内查询:基本过程是先定位后操作。定位包括纵向定位(列)与横向定位(行选)两部分。

多个关系间的查询:基本过程是第一步,将多个关系合并成一个关系;第二步,对合并后的一个关系作定位;第三步,操作。其中第二步与第三步为对一个关系的查询。

(2)数据删除

数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。只需要横向定位而无需纵向定位,定位后即执行删除操作。

(3)数据插入

数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。

(4)数据修改

数据修改是在一个关系中修改指定的元组与属性。数据修改不是一个基本操作,它可以分解为删除需修改的元组与插入修改后的元组两个更基本的操作。

这四种操作可以分解成六种基本操作,称为关系模型的基本操作:

关系的属性指定;

关系的元组选择;

两个关系合并;

一个或多个关系的查询;

关系中元组的插入;

关系中元组的删除。

3数据约束

数据约束包括实体完整性约束、参照完整性约束以及用户定义的完整性约束,其中前两种完整性约束由关系数据库系统自动支持。

(1)实体完整性约束

该约束要求关系的主键中属性值不能为空值,因为主键是唯一决定元组的,如为空值则其唯一性就成为不可能的了。

(2)参照完整性约束

该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。

(3)用户定义的完整性约束

这是针对具体数据环境与应用环境由用户具体设置的约束,它反映了具体应用中数据的语义要求。

4.3 关系代数

视频二维码(扫码观看)

关系数据库系统的特点之一是它建立在数学理论的基础之上,有很多数学理论可以表示关系模型的数据操作,其中最为著名的是关系代数(Relational Algebra)与关系演算(Relational Calculus)。

1关系模型的基本操作

关系是由若干个不同的元组所组成,因此关系可视为元组的集合。

关系模型有插入、删除、修改和查询四种操作,包括属性指定、元组的选择、关系的合并、关系的查询、元组的插入、元组的删除六种基本操作。

2关系模型的基本运算

(1)插入

设有关系R需插入若干元组,要插入的元组组成关系R′,则插入可用集合并运算表示为:R∪R′。

(2)删除

设有关系R需删除一些元组,要删除的元组组成关系R′,则删除可用集合差运算表示为:R-R′。

(3)修改

修改关系R内的元组内容可用下面的方法实现

设需修改的元组构成关系R′,则先做删除得:R-R′。

设修改后的元组构成关系R″,此时将其插入即得到结果:(R-R′)∪R″。

(4)查询

用于查询的三个操作无法用传统的集合运算表示,需要引入一些新的运算。

投影(Projection)运算

投影运算是一个一元运算,一个关系通过投影运算(并由该运算给出所指定的属性)后仍为一个关系R′。

R′是这样一个关系,它是R中投影运算所指出的那些域的列所组成的关系。

设R有n个域:A1,A2,…,An,则在R上对域的投影可表示成为下面的一元运算:

选择(Selection)运算

选择运算也是一个一元运算,关系R通过选择运算后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组所组成。设关系的逻辑条件为F,则R满足F的选择运算可写成为:σF(R)。

逻辑条件F是一个逻辑表达式,它由下面的规则组成。

它可以具有αθβ的形式,其中α,β是域(变量)或常量,但α,β又不能同为常量,θ是比较符,它可以是<,>,≤,≥,=及≠。αθβ叫基本逻辑条件。

由若干个基本逻辑条件经逻辑运算得到,逻辑运算为∧(并且)、∨(或者)及~(否)构成,称为复合逻辑条件。

笛卡儿积(Cartesian Product)运算

对于两个关系的合并操作可以用笛卡儿积表示。设有n元关系R及m元关系S,它们分别有p、q个元组,则关系R与S经笛卡儿积记为R×S,该关系是一个n+m元关系,元组个数是p×q,由R与S的有序组组合而成。

【例2】两个关系R、S的实例以及R与S的笛卡儿积T=R×S。

表4-4 关系R、S及T=R×S

视频二维码(扫码观看)

3关系代数中的扩充运算

常用的扩充运算有交、除、连接及自然连接等。

(1)交(Intersection)运算

关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S。

【例3】两个关系R与S及它们经交运算后得到的关系T。

表4-5 关系R、S及R∩S

交运算可由基本运算推导而得:R∩S=R-(R-S)。

(2)除(Division)运算

如果将笛卡儿积运算看作乘运算的话,那么除运算就是它的逆运算。当关系T=R×S时,则可将除运算写成为:T÷R=S或T/R=S,S称为T除以R的商(Quotient)。

除运算需要满足以下条件:关系T能被关系R除的充分必要条件是:T中的域包含R中的所有属性,T中有一些域不在R中。

商S的组成:S的域由T中那些不出现在R中的域所组成,对于S中任一有序组,由它与关系R中每个有序组所构成的有序组均出现在关系T中。

在除运算中S的域由T中那些不出现在R中的域所组成,对于S中任一有序组,由它与关系R中每个有序组所构成的有序组均出现在关系T中。

【例4】给出关系R及三组S,对不同的S给出了经除法运算后的商R/S,从中可以清楚地看出除法的含义及商的内容。

关系R及第一组S:

经除法运算后的商T=R/S:

关系R及第二组S:

经除法运算后的商T=R/S:

关系R及第三组S:

经除法运算后的商T=R/S:

除法运算不是基本运算,它可以由基本运算推导而出。设关系R有域A1,A2,…,An,关系S有域Ans1,Ans2,…,An,此时有:

【例5】设关系R给出了学生修读课程的情况关系S给出了所有课程号,分别如表4-6(a)、(b)所示。试找出修读所有课程的学生号。

解:修读所有课程的学生号可用T=R/S表示,结果如表4-6(c)所示。

表4-6 学生修读课程的除法运算

(3)连接(Join)与自然连接(Natural Join)运算

连接运算又可称为θ-连接运算,这是一种二元运算,通过它可以将两个关系合并成一个大关系。

设有关系R、S以及比较式iθj,其中i为R中的域,j为S中的域,θ为比较符(<、>、=),连接运算的含义定义:

【例6】关系R、S分别如表4-7(a)、(b)所示,则为表4-7(c)所示的关系,而为如表4-7(d)所示的关系。

表4-7(a) 关系R

表4-7(b) 关系S

表4-7(c) 关系

表4-7(d) 关系

【说明】在连接运算运算中如果θ为“=”,就称此连接为等值连接,否则称为不等值连接;如θ为“<”时称为小于连接;如θ为“>”时称为大于连接。

自然连接运算:自然连接是θ-连接运算的特例,自然连接不仅符合连接运算要求,还需要满足:两关系间要有公共域并且要通过公共域的相等值进行连接。

具体描述为:设有关系R、S,R有域A1,A2,…,An,S有域B1,B2,…,Bm,并且,Ai1,Ai2,…,Aij与B1,B2,…,Bj分别为相同域,此时它们自然连接可记为:自然R⋈S连接的含义可用下式表示:

【例7】设关系R、S如表4-8(a)、(b)所示,则T=R⋈S如表4-8(c)所示。

表4-8 关系R

表4-8 关系S

表4-8 关系T=R⋈S

【考题】设有关系R、S和T如下:

则由关系R和S得到关系T的操作是(  )。

A.交

B.并

C.笛卡儿积

D.自然连接

【答案】C

【解析】显然关系T=R×S,由笛卡尔积表示两个关系的合并操作,故选项C正确。

4关系代数的应用实例

【例8】建立一个学生选课的关系数据库,它由下面三个关系模式组成:

(1)学生信息表S(S#,Sn,Sd,Sa)

学号、学生姓名、学生系别、学生年龄

(2)课程表C(C#,Cn,P#)

课程号、课程名、预修课程号

(3)学生选课关系表SC(S#,C#,G)

学号、课程号、成绩

完成下列操作:

检索学生所有情况:S

检索学生年龄大于等于20岁的学生姓名:πSn(σSa20(S))

检索预修课号为C2的课程的课程号:πC#(σP#C2(C))

检索课程号为C,且成绩为A的所有学生姓名:

【注意】这是一个涉及两个关系的检索,此时需用连接运算。

检索S1所修读的所有课程名及其预修课号:

检索年龄为23岁的学生所修读的课程名:

检索至少修读S5所修读的一门课的学生姓名

这个例子比较复杂,需作一些分析。将问题分以下三步解决:

第1步:取得S5修读的课程号,它可以表示为:R=πC#(σS#S5(SC));

第2步:取得至少修读为S5修读的一门课的学号:W=πS#(SC⋈R);

第3步:最后结果为:πSn(R⋈W)。

分别将R、W代入后即得检索要求之表达式:

【考题】大学生学籍管理系统中有关系模式S(S#,Sn,Sg,Sd,Sa),其中属性S#,Sn,Sg,Sd,Sa分别是学生学号、姓名、性别、系别和年龄,关系的关键字是S#。检索全部大于20岁男生的姓名的表达式为(  )。

A.πSn(σSgSa20(S))

B.σSg(S)

C.πS#(σSg(S))

D.πSn(σSgSa20(S))

【答案】A

【解析】检索要求年龄大于20岁,首先排除选项B、C,又逻辑运算符“∧”表示逻辑关系“并且”、逻辑运算符“∨”表示逻辑关系“或者”,又可排除选项D,即选项A正确。

4.4 数据库设计与管理

视频二维码(扫码观看)

一、数据库设计概述

数据库设计即是在一定平台制约下,根据信息需求与处理需求设计出性能良好的数据模式。

数据库设计的两种方法:

1.面向数据的方法(Data-Oriented Approach):是以信息需求为主,兼顾处理需求。

2.面向过程的方法(Process-Oriented Approach):是以处理需求为主,兼顾信息需求。

由于数据在系统中稳定性高,数据已成为系统的核心,因此面向数据的设计方法已成为主流方法。

数据库设计目前一般采用生命周期(Life Cycle)法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。

在数据库设计中以数据结构与模型的设计为主线,通过需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段四个阶段完成。

图4-17 数据库设计的四个阶段

【考题】数据库设计的四个阶段是需求分析、概念设计、逻辑设计和(  )。

A.编码设计

B.测试阶段

C.运行阶段

D.物理设计

【答案】D

【解析】数据库设计目前一般采用生命周期(Life Cycle)法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构与模型的设计为主线,如下图所示:

二、数据库设计的需求分析

需求分析阶段的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅按当前应用需求来设计数据库。

调查的重点是“数据”和“处理”,通过调查要从中获得每个用户对数据库的如下要求:

信息要求。

处理要求。

安全性和完整性的要求。

分析和表达用户的需求,经常采用的方法有结构化分析方法和面向对象的方法。

在实际开展需求分析工作时有两点需要特别注意:

第一,在需求分析阶段一个重要而困难的任务是收集将来应用所涉及的数据。

第二,必须强调用户的参与,这是数据库应用系统设计的特点。

三、数据库概念设计

1数据库概念设计概述

数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。

数据库概念设计的方法有以下两种:

(1)集中式模式设计法

这是一种统一的模式设计方法,它根据需求由一个统一机构或人员设计一个综合的全局模式。

(2)视图集成设计法

这种方法是将一个单位分解成若干个部分,先对每个部分作局部模式设计,建立各个部分的视图,然后以各视图为基础进行集成。目前此种方法使用较多。

2数据库概念设计的过程

使用E-R模型与视图集成法进行设计时,需要按以下步骤进行:首先选择局部应用,再进行局部视图设计,最后对局部视图进行集成得到概念模式。

(1)选择局部应用

根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,让这组图中每一部分对应一个局部应用,以这一层次的数据流图为出发点,设计分E-R图。

(2)视图设计

视图设计一般有三种设计次序,它们是:

自顶向下。这种方法是先从抽象级别高且普遍性强的对象开始逐步细化、具体化与特殊化

由底向上。这种设计方法是先从具体的对象开始,逐步抽象,普遍化与一般化,最后形成一个完整的视图设计。

由内向外。这种设计方法是先从最基本与最明显的对象着手逐步扩充至非基本、不明显的其他对象,如学生视图可从最基本的学生开始逐步扩展至学生所读的课程等其他对象。

在进行设计时,实体与属性是相对而言的。同一事物,在一种应用环境中作为“属性”,在另一种应用环境中就必须作为“实体”。但是,在给定的应用环境中,属性必须是不可分的数据项,属性不能与其他实体发生联系,联系只发生在实体之间。

【例9】学籍管理局部应用中主要涉及的实体包括学生、宿舍、档案材料、班级、班主任。这些实体之间的联系有:

一个宿舍可以住多个学生,一个学生只能住在一个宿舍中,因此宿舍与学生之问是1:N的联系。

一个班有若干名学生,一个学生只能属于一个班级,因此班级与学生之间也是1:N的联系。

班主任与学生之间是1:N的联系。

学生和他的档案材料之间是1:1的联系。

班级与班主任之间都是1:1的联系。

省略了实体的属性后学籍管理的E-R图如图4-18所示。

图4-18 学籍管理局部E-R图

对应于各实体的属性分别为:

学生:{学号,姓名,出生日期,所在系,何时入学,平均成绩}

档案材料:{档案号,…}

班级:{班级号,学生人数}

班主任:{职工号,姓名,性别,是否为优秀班主任}

宿舍:{宿舍编号,地址,人数}

教室:{教室编号,地址,容量}

其中有下画线的属性为实体的码。

【例10】课程管理局部视图的设计:在这一视图中共有五个实体,分别是学生、课程、教室、教师及教科书,描述这些实体的属性分别为:

学生:{学号,姓名,年龄,性别,入学时间}

课程:{课程号,课程名,学时数}

选修:{学号,课程号,成绩}

教科书:{书号,书名,ISBN,作者,出版时间,关键字}

教室:{教室编号,地址,容量}

省略了实体的属性后课程管理的E-R图如图4-19所示。

图4-19 课程管理局部E-R图

【考题】一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员间的联系是(  )。

A.多对多

B.一对一

C.多对一

D.一对多

【答案】D

【解析】一个运动队有多个运动员,一个队员只属于一个运动队,即一个运动员对应一个运动队,一个运动队对应多个运动员,故实体运动队和队员间的联系是一对多。

(3)视图集成

视图集成的实质是将所有的局部视图统一与合并成一个完整的数据模式。在进行视图集成时,最重要的工作便是解决局部设计中的冲突。常见冲突有下列几种:

命名冲突。命名冲突有同名异义和同义异名两种。

概念冲突。同一概念在一处为实体而在另一处为属性或联系。

域冲突。相同的属性在不同视图中有不同的域,如学号在某视图中的域为字符串而在另一个视图中可为整数,有些属性采用不同度量单位也属于冲突。

约束冲突。不同的视图可能有不同的约束。

视图经过合并生成的是初步E-R图,其中可能存在冗余的数据和冗余的实体间联系。因此必须进行进一步验证,确保它能够满足下列条件:

整体概念结构内部必须具有一致性,即不能存在互相矛盾的表达;

整体概念结构能准确地反映原来的每个视图结构,包括属性、实体及实体间的联系;

整体概念结构能满足需求分析阶段所确定的所有要求;

整体概念结构最终还应该提交给用户,征求用户和有关人员的意见,进行评审、修改和优化,然后把它确定下来,作为数据库的概念结构,作为进一步设计数据库的依据。

【例11】完成学籍管理局部视图与课程管理局部视图的集成。

第一步:消除冲突

班主任也属于教师,学籍管理中的班主任实体与课程管理中的教师实体属于异名同义,可以统一称为教师。

将班主任改为教师后,教师与学生之间呈现两种不同类型的联系:指导联系和教学联系。由于指导联系实际上可以包含在教学联系之中,因此可以将这两种联系综合为教学联系。

调整学生实体属性组成及次序,调整结果可为:学生:{学号,姓名,出生日期,年龄,所在系,年级,平均成绩}

第二步:消除冗余

学生实体中的年龄可以由出生日期推算出来,属于冗余数据。学生:{学号,姓名,出生日期,所在系,年级,平均成绩}

教室实体与班级实体之间的上课联系可以由教室与课程之间的开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系三者推导出来,因此属于冗余联系。

学生实体中的平均成绩可以从选修联系中的成绩属性中推算出来。

集成这两个子E-R图后的学生管理子系统的E-R图如下图所示。

图4-20 学生管理子系统的E-R图

视频二维码(扫码观看)

四、数据库逻辑设计

数据库的逻辑设计主要工作是将E-R图转换成指定RDBMS中的关系模式。

1从E-R图向关系模式转换

表4-9 E-R模型与关系间的比较表

E-R图转换成关系模式时会遇到的转换问题

(1)命名与属性域的处理

关系模式中的命名可以用E-R图中原有命名,也可另行命名,但是应尽量避免重名,RDBMS一般只支持有限种数据类型而E-R中的属性域则不受此限制,如出现有RDBMS不支持的数据类型时则要进行类型转换。

(2)非原子属性处理

E-R图中允许出现非原子属性,但在关系模式中一般不允许出现非原子属性,非原子属性主要有集合型和元组型。

(3)联系的转换

在一般情况下联系可用关系表示,但是在有些情况下联系可归并到相关联的实体中。

【例12】学生实体有学号、学生姓名及选读课程。

前两个为原子属性而后一个为集合型非原子属性,因为一个学生可选读若干课程,设有学生S1307,王承志,他修读Database,Operating System及Computer Network三门课,此时可将其纵向展开用关系形式如表4-10所示。

表4-10 学生实体

2逻辑模式规范化及调整、实现

(1)规范化

关系数据库设计的关键是关系数据库模式的设计,即确定构造几个关系模式及每一模式各自包含的属性,将相互关联的模式组成合适的关系模型。

设计不良的关系模式会有数据冗余、插入异常、删除异常及修改异常等问题。

【考题】将E-R图转换为关系模式时,E-R图中的实体一般转化为(  )。

A.属性

B.关系

C.键

D.域

【答案】B

【解析】数据库的逻辑设计主要工作是将E-R图转换成指定RDBMS中的关系模式,选项B正确。E-R模型与关系间的转换如下表所示:

【例13】求以下E-R图,在实体student中再加入属性Dc(系主任)。为这一扩展后的E-R图设计了关系模式SC(S#,Sn,Sd,Dc,Sa,C#,Cn,P#,G)。从语义分析和关系表的属性可知表的关键字是复合关键字(S#,C#)。

下表表示本例关系的一个实例:

表4-11 不当学生选课表关系SC

以上关系中存在如下的问题:

数据冗余:表中每个学生相关的信息会多次出现,选几门课就会出现几次。

插入异常:如果有学生当前没有选课,则该学生无法插入到表中。

删除异常:如果一门课只有一个学生选修,则删除学生会同时删掉课程。

修改异常:如果某学生改名,则该学生的所有记录都要逐一修改,一旦某一记录漏改,就会造成数据的不一致

解决这一问题的方法是对关系通过分解进行规范化,解决函数依赖。函数依赖就是一个属性集依赖于别的属性集,或一个属性集决定别的属性集。

范式:设计关系数据库时,符合不同的规范要求,这些规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

第一范式模式(1NF):对于关系模式,若其中的每个属性都已不能再分为简单项,则它属于第一范式。

第二范式模式(2NF):R符合第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称其为第二范式模式。

第二范式消除了非主属性对主键的部分依赖。

对上面的模式SC,主键为复合键(S#,C#),但显然有S#→Sd、S#→Sa、S#→Dc,以及C#→Cn、C#→P#等,存在非主属性对主属性的部分依赖。对上述模式进行如下的分解,就可以消除对非主属性的部分依赖:

S1(S#,Sn,Sd,Dc,Sa)

C(C#,Cn,P#)

SC1(S#,C#,G)

此时就把原来的关系SC分解成了第二范式。

第三范式模式(3NF):R是第二范式,并非每个非主属性都不传递依赖于R的候选键。

在关系模式中,如果Y→X,X→A,且X不决定Y和A不属于X,那么Y→A是传递依赖。

规范方法:把传递依赖于主属性的属性放到另外一个关系中,消除传递依赖。

S1中把属性Dc放到另外一个表中,得到下面的关系:

S2(S#,Sn,Sd,Dc,Sa)

D(Sd,De)

C(C#,Cn,P#)

SC1(S#,C#,G)

该关系即是第三范式。

(2)RDBMS

对逻辑模式进行调整以满足RDBMS的性能、存储空间等要求,同时对模式做适应RDBMS限制条件的修改,它们包括如下内容:

调整性能以减少连接运算;

调整关系大小,使每个关系数量保持在合理水平,从而可以提高存取效率;

尽量采用快照(snapshot),因在应用中经常仅需某固定时刻的值,此时可用快照将某时刻值固定,并定期更换,此种方式可以显著提高查询速度。

3关系视图设计(外模式设计)

逻辑设计的另一个重要内容是关系视图的设计。关系视图是在关系模式基础上所设计的直接面向操作用户的视图,关系视图的作用大致有如下几点:

(1)提供数据逻辑独立性:使应用程序不受逻辑模式变化的影响;

(2)能适应用户对数据的不同需求;

(3)有一定数据保密功能。

五、数据库的物理设计

数据库物理设计的主要目标是对数据库内部物理结构作调整并选择合理的存取路径,以提高数据库访问速度及有效利用存储空间。在现代关系数据库中已大量屏蔽了内部物理结构,因此留给用户参与物理设计的余地并不多,一般的RDBMS中留给用户参与物理设计的内容大致有如下几种:索引设计、集簇设计和分区设计。

六、数据库管理

数据库是一种共享资源,它需要维护与管理,这种工作称为数据库管理(Database Administration),而实施此项管理的人则称为数据库管理员(DBA)。

数据库管理一般包含如下一些内容:

1数据库的建立

数据库的建立包括数据模式的建立及数据加载。

(1)数据模式建立。

数据模式由DBA负责建立,定义数据库名,定义表及相应属性,定义主关键字、索引、用户访问权限,申请空间资源,定义分区、定义视图等。

(2)数据加载。

2数据库的调整

在数据库建立并经一段时间运行后往往会产生一些不适应的情况,此时需要对其作调整,数据库的调整一般由DBA完成,调整包括下面一些内容:

(1)调整关系模式与视图使之更能适应用户的需求;

(2)调整索引与集簇使数据库性能与效率更佳;

(3)调整分区、数据库缓冲区大小以及并发度使数据库物理性能更好。

3数据库的重组

数据库在经过一定时间运行后,其性能会逐步下降,下降的原因主要是由于不断的修改、删除与插入所造成的。

对数据库进行重新整理,重新调整存储空间,此种工作叫数据库重组。

4数据库安全性控制与完整性控制

数据库是一个单位的重要资源,它的安全性是极端重要的,DBA应采取措施保证数据不受非法盗用与破坏。此外,为保证数据的正确性,使录入库内的数据均能保持正确,需要有数据库的完整性控制。

5数据库的故障校复

一旦数据库中的数据遭受破坏,需要及时进行恢复,RDBMS一般都提供此种功能,并由DBA负责执行故障恢复功能。

6数据库监控

DBA需随时观察数据库的动态变化,并在发生错误、故障或产生不适应情况时随时采取措施,如数据库死锁、对数据库的误操作等;同时还需监视数据库的性能变化,在必要时对数据库作调整。