大型数据库管理系统技术、应用与实例分析——基于SQL Server 2005(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2021-03-07 18:35:04

点击下载

作者:孟宪虎

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

大型数据库管理系统技术、应用与实例分析——基于SQL Server 2005(第2版)

大型数据库管理系统技术、应用与实例分析——基于SQL Server 2005(第2版)试读:

前言

本书是普通高等教育“十一五”国家级规划教材。

大型数据库管理系统SQL Server 2005是近年来国内外广泛使用的数据库管理系统,它既支持C/S模式系统,也支持B/S模式系统,是开发管理信息系统常用的主流数据库管理系统之一。国内许多高等学校已陆续开设了这门课程。但是,对于SQL Server 2005,市场上大量的相关书籍有的是围绕实用技术讲解的,有些类似于帮助说明书、专题介绍,而有些偏重于程序设计,有些主要讲解原理。对于专门学习大型数据库管理系统技术的高年级本科生和研究生在有限的时间内学到各种需要的知识点,明显不方便,因此在教学中不得不准备多本相关参考书。

基于上述原因,将大型数据库管理系统的基本原理和在这些原理指导下的数据库管理、技术和程序设计结合起来是本书作者想要得到的结果,也是学生参加工作前急需掌握的一门重要技术。因此,作者基于多年该门课程教学的体会和经验,参考了众多数据库和SQL Server相关书籍及其他资料,编写了这本教材。

本书可作为高等学校计算机应用和信息管理与信息系统等相关专业本科生和研究生的教材,也可作为社会相关从业人员的自学培训教材,对于开发信息管理系统的技术人员具有较高的参考价值。

本书具有以下特色:(1)原理、管理、程序设计并重,使得内容全面,例题丰富,概念清晰,循序渐进,易于学习。(2)分解难点,设计成16个专题,既独立成章,又前后关联,便于教师教学。(3)采用通俗易懂、容易理解的方法叙述复杂的概念,结合实例分析,帮助读者逐步掌握必要的技术知识。(4)采用一个实例贯穿全书,使学生可以通过本书学习,彻底明白如何用SQL Server 2005技术完成数据库应用系统的设计、实现和管理。

本书主要内容包括:数据库基础知识、数据库应用设计、SQL Server 2005安装、配置与管理、SQL Server数据库存储原理和创建、表的结构分析及完整性创建管理、SQL Server查询处理和表数据编辑、T-SQL程序结构、SQL Server事务和并发控制、视图的规划与操作、索引的机理、规划和设计、游标操作和应用、存储过程和用户存储过程设计、触发器原理及使用、用户自定义函数设计、数据库安全及访问控制、数据备份与恢复、数据复制等,每章均配有针对性实验。

本书向使用本书作为教材的教师提供配套电子课件、实例数据库、习题参考答案和教学网站(http://wlkt.zufe.edu.cn/skyclass/SchoolSpace/CourseInfo/CourseIntro.asp?CourseId=349),请登录华信教育资源网(http://www.hxedu.edu.cn)注册下载。

本书第1版于2008年7月出版,经过3年实践教学的检验,结合广大使用本书作为教材的老师和同学提出的建议和意见,我对全书内容进行了整体修订。本次修订引用或参考了第1版的重要内容成果,在此向马雪英老师和邓绪斌老师深表谢意!

本书在编写过程中同时得到了浙江财经学院领导和信息学院领导及全体同事的大力支持,在此向他们和所有帮助和关心本书编写的朋友致以衷心的感谢!

在编写本书的过程中,我们参考了众多相关参考书、资料和SQL Server联机帮助,为了表示尊敬和感谢,在本书的最后我们尽量罗列说明,如有遗漏敬请谅解。

书中难免有许多不足和错误之处,恳请读者批评指正!孟宪虎2011年5月

第1章 数据库基础和数据库设计

数据库是存储在一起集中管理的相关数据的集合。

数据库的系统结构是对数据的三个抽象级别,它们分别是内模式、概念模式和外模式。这个三级结构之间一般差别很大,为了实现这三个抽象级别在内部的联系和转换,数据库管理系统在三级结构之间提供了两个层次的映像:外模式/概念模式映像、概念模式/内模式映像。这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

从最终用户角度来看,数据库系统分为单用户结构、主从式结构、客户-服务器结构和分布式结构。

本章还介绍了数据库的设计。在关系数据库方面,主要简介了规范关系数据库的理论,并给出了一个相应的实例。如果读者对数据库原理比较熟悉,本章内容可以略过。如果读者没有系统地接触过数据库原理,学习本章对后续章节的学习有一定的必要性。

1.1 数据库系统

数据库系统是一个比较宽泛的概念,包括数据库、数据库管理系统,以及使用数据库的用户和支撑数据库管理系统运行的软硬件。我们在此仅对与数据库系统相关的部分概念进行简单介绍,更深入的知识请读者参考相关教材或书籍。1.1.1 数据、信息、数据库

1.数据

数据(Data)是描述事物的符号记录,是数据库中存储的基本对象。数据可以是数值数据,如某个具体数字,也可以是非数值数据,如声音、图像等。虽然数据有多种表现形式,但经过数字化处理后,都可以输入并存储到计算机中,并能成为其处理的符号序列。

2.信息

信息(Information)是具有一定含义的、经过加工的、对决策有价值的数据。所以说信息是有用的数据,数据是信息的表现形式。数据如果不具有知识性和有用性,则不能称为信息。从信息处理角度看,任何事物的属性都是通过数据来表示的,数据经过加工处理后,使其具有知识性并对人类活动产生决策作用,从而形成信息。信息有如下特点:无限性、共享性、创造性。

3.信息与数据的关系

在计算机中,为了存储和处理某些事物,需要抽象出对这些事物感兴趣的特征组成一个记录来描述。例如,在学生档案中,如果人们感兴趣的是学生的姓名、性别、出生年月、籍贯、所在系别、入学日期,就可以这样描述:(李明,男,1985,浙江,计算机系,2004),因此这里的学生记录就是数据。它的含义即所含信息是:李明是个大学生,1985年出生,男,浙江人,2004年考入计算机系。

数据的形式不能完全表达其内容,需要经过解释。数据的解释是指对数据含义的说明,数据的含义又称为数据的语义,也就是数据包含的信息。信息是数据的内涵,数据是信息的符号表示,是载体。数据是符号化的信息,信息是语义化的数据。

4.数据库

数据库(DataBase,DB)是长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,用于满足各种不同的信息需求,并且集中的数据彼此之间有相互的联系,具有较小的冗余度、较高的数据独立性和易扩展性。1.1.2 数据库管理系统

数据库管理系统是位于用户和操作系统之间的一层数据管理软件,它的主要功能包括以下几个方面。

1.数据定义功能

提供数据定义语言DDL,用户通过它可以方便地对数据库中的数据对象进行定义。

2.数据操纵功能

提供数据操纵语言DML,用户可以使用操纵语言实现对数据库的基本操作,如查询、插入、删除和修改等。

3.数据库的运行管理

数据库的建立、运行和维护由数据库管理系统统一管理和控制,以保证数据的安全性、完整性、多用户对数据的并发使用,以及发生故障后的系统恢复。

4.数据库的建立和维护功能

它包括数据库初始数据的输入、转换功能,数据库转储、恢复功能,数据库的重组织功能,以及性能监视、分析功能等。这些功能通常由一些实用程序完成。

1.2 数据库系统结构

1.2.1 数据库系统模式的概念

模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,它仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例(Instance)。同一个模式可以有很多实例。模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新的。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。1.2.2 数据库系统的三级模式结构

数据库系统结构分为三层,即内模式、概念模式(模式)和外模式,如图1-1所示。这个三级结构有时称为“三级模式结构”,最早是在1971年的DBTG报告中提出的,后来收入到1975年的美国ANSI/SPARC报告中。虽然现在DBMS的产品多种多样,并在不同操作系统支持下工作,但是大多数系统在总的体系结构上都具有三级模式的机构特征。图1-1 数据库系统的三级模式结构

从某个角度看到的数据特性称为“数据视图”(Data View)。

■ 外部级最接近用户,是单个用户所能看到的数据特性,单个用户使用的数据视图的描述称为“外模式”。

■ 模式涉及所有用户的数据定义,是全局的数据视图。全局数据视图的描述也称为“概念模式”。

■ 内模式最接近于物理存储设备,涉及实际数据存储的结构。物理存储数据视图的描述称为“内模式”。

1.概念模式(所有用户的公共视图)

一个数据库只有一个概念模式,它以某一种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。

概念模式由许多记录类型的值组成。例如,它可能包括部门记录值的集合、职工记录值的集合、供应商记录值的集合、零件记录值的集合等。模式根本不涉及物理表示和访问的技术,它只定义信息的内容,在模式中不能涉及存储字段表示、存储记录队列、索引、哈希算法、指针或其他存储和访问的细节。这样,模式即可真正实现物理数据的独立性。

定义模式时,不仅定义数据的逻辑结构,还要定义数据之间的联系,定义与数据有关的安全性、完整性要求。

在数据库管理系统(DBMS)中,描述概念模式的数据定义语言称为“模式DDL”(Schema Data Definition Language)。

2.外模式(用户可见的视图)

外模式也称子模式(Subschema)或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某个应用有关的数据的逻辑表示,是用户和数据库系统的接口,是用户用到的那部分数据的描述。一个系统一般有多个外模式。

外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。用户使用数据操纵语言(Data Manipulation Language,DML)语句对数据库进行操作,实际上是对外模式的外部记录进行操作。

描述外模式的数据定义语言称为外模式DDL。有了外模式后,程序员或数据库管理员不必关心概念模式,只与外模式发生联系,按照外模式的结构存储和操纵数据。

外模式又称为“用户模式”或“子模式”,通常是概念模式的逻辑子集。

3.内模式(存储模式)

一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方法。它定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。

注意,内模式和物理层仍然不同。内部记录并不涉及物理记录,也不涉及设备的约束。比内模式更接近物理存储和访问的那些软件机制是操作系统的一部分,即文件系统。

描述内模式的数据定义语言称为内模式DDL。1.2.3 数据库的二级映像功能与数据独立性

数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给数据库管理系统(DBMS)去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储。三级结构之间一般差别很大,为了实现这三个抽象级别的内部联系和转换,DBMS在三级结构之间提供了两个层次的映像:外模式/概念模式映像、概念模式/内模式映像,见图1-1。

这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

1.模式/概念模式映像

用于定义外模式和概念模式之间的对应性,即外部记录和内部记录间的关系。

当模式发生改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变,应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

2.模式/内模式映像

用于定义概念模式和内模式间的对应性,实现两级的数据结构、数据组成等的映像对应关系。

模式/内模式映像定义了数据库全局逻辑结构与存储结构之间的对应关系,当数据库的存储结构改变时,由数据库管理员对模式/内模式映像做相应的改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。1.2.4 数据库系统用户结构

从最终用户角度来看,数据库系统分为单用户结构、主从式结构、客户-服务器结构和分布式结构。

1.单用户数据库系统

单用户数据库系统是一种早期最简单的数据库系统,如图1-2所示。在这种系统中,整个数据库系统(包括应用程序、DBMS、数据)都装在一台计算机上,由一个用户独占,不同计算机之间不能共享数据。

2.主从式结构数据库系统

主从式结构是指一个主机带多个终端的多用户结构,如图1-3所示。在这种结构中,数据库系统(包括应用程序、DBMS、数据)都集中存放在主机上,所有处理任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源。图1-2 单用户数据库系统图1-3 主从式结构数据库系统

3.客户-服务器结构数据库系统

主从式数据库系统中的主机是一个通用计算机,既执行DBMS功能,又执行应用程序。随着工作站功能的增强和广泛使用,人们开始把DBMS功能和应用分开,网络中某个(些)结点上的计算机专门用于执行DBMS功能,称为数据库服务器,简称服务器。其他结点上的计算机安装DBMS的外围应用开发工具,支持用户的应用,称为客户机,这就是客户-服务器结构的数据库系统,如图1-4所示。

在客户-服务器结构中,客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后,只将结果返回给用户(而不是整个数据),从而显著减少了网络上的数据传输量,提高了系统的性能、吞吐量和负载能力。另一方面,客户-服务器结构的数据库往往更加开放。客户与服务器一般都能在多种不同的硬件和软件平台上运行,可以使用不同厂商的数据库应用开发工具,应用程序具有更强的可移植性,同时也可以减少软件维护开销。

4.分布式结构数据库系统

分布式结构是指数据库中的数据在逻辑上是一个整体,但分布在计算机网络的不同结点上。网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用,也可以同时存取和处理多个异地数据库中的数据,执行全局应用,如图1-5所示。它的优点是适应了地理上分散的公司、团体和组织对于数据库应用的需求;不足是数据的分布存放给数据的处理、管理与维护带来困难,当用户需要经常访问远程数据时,系统效率会明显地受到网络交通的制约。图1-4 客户-服务器结构数据库系统图1-5 分布式结构数据库系统

1.3 关系数据库及其设计

1.3.1 关系数据库

在关系数据库中,一个关系就是一张二维表,由行和列组成,如图1-6所示。表中的一行就是一个元组(也称记录),表中的列为一个属性,给每个属性起一个名即为其属性名(也称字段名)。

关系数据库的特点如下。

① 关系中每个字段(属性)不可再分,是数据库中的最基本单位。

② 每一竖列字段是同属性的,每个列的顺序是任意的。图1-6 关系(表)的结构

③ 每一行记录由一个事物的诸字段项构成,记录的顺序可以是任意的。

④ 不允许有相同的字段名,也不允许有相同的记录行。每个关系都有主码关键字(Key)的属性集合,用以唯一地标识关系中的各个记录行。

⑤ 解决实际问题往往需要多个关系,关系和关系是有联系的,这种联系也用关系表示。

在一个给定的应用领域中,所有关系及关系之间联系的关系的集合构成一个关系数据库。1.3.2 关系数据库设计

数据库的设计质量,直接影响数据库管理系统对数据的控制质量。数据库设计是指对于一个给定的应用环境,根据用户的信息要求、处理需求和数据库的支撑环境,利用数据模型和应用程序模拟现实世界中该单位的数据结构和处理活动的过程,是数据设计和数据处理设计的结合。规范化的数据库设计要求数据库内的数据文件的数据组织应获得最大程度的共享、最小的冗余度,消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据达到有效的分离,保证在输入修改数据时数据的一致性和正确性,保证数据与使用数据的应用程序之间的高度独立性。同时在设计时还要将数据和操作数据的行为紧密结合起来,保证数据的完整性约束。

1.需求分析

需求分析阶段的任务是收集数据库所需要的信息内容和数据处理规则,确定建立数据库的目的。在需求分析调研中,必须与用户充分讨论,确定数据库所要进行的数据处理范围、数据处理的流程及数据取值范围的界定。

描述需求分析常用的方法有数据流图、数据字典等。

2.概念结构设计

概念结构设计是对现实世界的一种抽象,即对实际的人、物、事和概念进行人为处理,抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。

为了能够完成上述目标,我们把现实世界中客观存在并可相互区别的事物称为实体(Entity)。比如,一个职工、一个学生、一个部门、学生的一次选课、老师与系的工作关系。

把描述实体的某一特性称为属性(Attribute),一个实体可以由若干属性值来描述。比如,一个学生实体可以由“学号,姓名,性别,年龄,所在系”等属性的属性值(20021001,张三,男,21,计算机系)来描述。

同类实体中的实体彼此之间是可以区别的,能够唯一标示实体的属性集合称做实体的码或关键字。

实体集之间存在各种联系(Relationship),主要有三类:一对一联系(1:1)、一对多联系(1:n)、多对多联系(m:n)。(1)一对一联系(1:1)

对于实体集A中的每一个实体,实体集B中有0个或1个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一的联系。

例如,假设一个班级只能由一个班主任(教师)管理,一个班主任也只能管理一个班,则教师与班级之间具有一对一的联系。(2)一对多联系(1:n)

对于实体集A中的每一个实体,实体集B中有0个或多个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中有0个或1个实体与之联系,则称实体集A与实体集B具有一对多的联系。

例如,一个班级有若干学生,每个学生只在一个班级中学习,则班级与学生之间具有一对多的联系。(3)多对多联系(m:n)

对于实体集A中的每一个实体,实体集B中有0个或多个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中有0个或多个实体与之联系,则称实体集A与实体集B具有多对多的联系。

例如,一门课程同时有若干学生选修,而一个学生同时选修多门课程,则课程与学生之间具有多对多的联系。

描述概念模型的有力工具是E-R模型。

3.逻辑结构设计

关系模型的逻辑结构是一组关系模式的集合。E-R图则是由实体、实体的属性和实体之间的联系3个要素组成的。所以将E-R图转换为关系模型,实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式。这种转换一般遵循如下原则。(1)实体与实体属性的转换

一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。

例如,学生实体可以转换为如下关系模式,其中学号为学生关系的码:

学生(学号,姓名,性别,年龄,所在系)(2)实体间联系的转换

① 一个1:1联系可以转换为一个独立的关系模式,也可以将任意一端关系中的码合并到另一端的关系模式中。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。

如果使用关系模式合并方式,则需要在一个关系模式的属性中加入另一个关系模式的码和联系本身的属性,而原来的码不变。

例如,假设一个班级只能由一个班主任(教师)管理,一个班主任也只能管理一个班,则教师与班级之间具有一对一的联系。将其转换为关系模式有3种方法。

■ 转换成一个独立的关系模式:

管理(职工号,班级号)

■ 将“教师”关系中的码“职工号”与“班级”关系模式合并,在“班级”关系增加“职工号”属性:

班级(班级号,学生人数,职工号)

■ 将“班级”关系中的码“班级号”与“教师”关系模式合并,在“教师”关系增加“班级号”属性:

教师(职工号,姓名,性别,职称,班级号)

推荐使用合并的方法。

② 一个1:n联系可以转换为一个独立的关系模式,也可以将一端关系中的码与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

如果使用关系模式合并方式,则需要在n端关系模式的属性中加入一端关系模式的码和联系本身的属性,而原来的码不变。

例如,假如有一个学生“组成”的联系,即一个学生只能属于一个班级,一个班级可能有多个学生,该联系为1:n联系,将其转换为关系模式有两种方法。

■ 转换成一个独立的关系模式:

组成(学号,班级号)

■ 将其与“学生”关系模式合并,增加“班级号”属性:

学生(学号,姓名,年龄,所在系,班级号)

推荐使用合并的方法。

③ 一个m:n联系转换为一个关系模式。

必须转换为一个独立关系,与该联系相连的各实体的码及联系本身的属性均转换为新关系的属性。而关系的码为各实体码的组合。

例如,假如有一个学生“选修”的联系,即一个学生可以选修多门课程,一门课程可以被多个学生选修,该联系是一个m:n联系,将其转换为如下关系模式:

选修(学号,课程号,成绩)

4.数据库表的优化与规范化

在数据需求分析的基础上,进行概念结构和逻辑结构设计,并将数据信息分割成数个大小适当的数据表。例如,可以得到学生的相关数据信息(如表1-1所示的学生选课表),学生选课数据表包含学号、姓名、所在院系、电话、城市、课程编号、课程名称、成绩等属性。

表1-1是一个未被规范化的数据表,这张表存在大量的数据冗余。如果王东民同学选修了3门课程,则学号、姓名、院系、电话、城市等字段数据需要重复3遍。当王东民从一个城市搬到另一个城市,几乎所有的属于王东民的记录将要一一更正,这样效率很低。如果在更正的过程中发生意外,比如出现死机或掉电等情况,数据不一致的情况就会发生。如果一个学生没有选任何课程,按照完整性约束规则,则他的所有数据将无法输入。如果要取消某个学生的所有课程信息,则要将所有与该同学有关的信息全部去掉。总之,大量的数据冗余不但浪费了存储空间,而且降低了数据查询效率,提高了维护数据一致性的成本。表1-1 学生选课表

关系模型的规范化理论是研究如何将一个不规范的关系模型转化为一个规范的关系模型理论。数据库的规范化设计,要求分析数据需求,去除不符合语义的数据,确定对象的数据结构,并进行性能评价和规范化处理,避免数据重复、更正、删除、插入异常。

规范化理论认为,关系数据库中的每一个关系都要满足一定的规范。根据满足规范的条件不同,可以划分为5个等级,分别称为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF),其中NF是Normal Form的缩写。通常在解决一般性问题时,只要把数据规范到第三范式标准就可以满足需要。(1)第一范式

在一个关系中,消除重复字段,且每个字段都是最小的逻辑存储单位。(2)第二范式

若关系属于第一范式,则关系中每一个非主关键字段都完全依赖于主关键字段,没有部分依赖于主关键字段的部分。

这里的主关键字是指表中的某个属性组,它可以唯一确定记录其他属性的值。如表1-1所示,学生选课数据表的主关键字是由学号和课号共同组成的。属性成绩完全依赖于主关键字,属性姓名、院系、电话、城市等都只依赖于学号,不完全依赖于主关键字,因此学生选课数据表不符合第二范式的要求。

一个有效的解决办法是把信息分为各个独立的主题,例如“学生基本信息表”、“学生选课成绩表”等,保证关系中每个非主关键字都完全依赖于主关键字。(3)第三范式

若关系模式属于第一范式,且关系中所有非主关键字段都只依赖于主关键字段。

第三范式要求去除传递依赖,如表1-2(学生情况表)所示,学生的年龄依赖于身份证号,身份证号又是由学号决定的,因此学生的年龄就传递依赖于主关键字学号。所以表1-2不符合第三范式要求。表1-2 学生情况表

上述问题的解决办法是不要包含可以推导得到的数据或经计算得到的数据。实际年龄可以由身份证号计算得到,年龄和身份证号作为属性同时出现,本质上产生了数据冗余。

有些属性并不能经推导计算得到,但也存在传递依赖,比如电话号码可以通过身份证号传递依赖于主关键字的学号,但有些时候这样是需要的。

5.规范化的大学教学管理数据库

下面给出比较简单的、规范了的大学教学管理数据库。实际中由于涉及不同学校的大量不同管理条款,系统比较复杂。实例中忽略了许多细节,只保留大学的本质内容。(1)学生表

学生表如表1-3所示,其中属性有学号、身份证号、姓名、性别、移动电话、城市、专业、所在院系、累计学分。主键为学号。表1-3 学生表(2)课程表

课程表如表1-4所示,其中属性有课号、课名、教材名称、编著者、出版社、版号、定价。主键为课号。表1-4 课程表(3)教师表

教师表如表1-5所示,其中属性有工号、身份证号、姓名、性别、移动电话、城市、院系、职称、负责人工号。主键为工号,外键是负责人工号,参考本表的工号。表1-5 教师表(4)开课表

开课表如表1-6所示,其中属性有开课号、课号、(教师)工号、开课地点、开课学年、开课学期、开课周数、开课时间、(该课的)学分。主键为开课号,外键一是课号,参照课程表中的属性课号,外键二是工号,参照教师表中的属性工号。表1-6 开课表续表(5)选课表

选课表如表1-7所示,其中属性有学号、开课号、(考试后得到的)成绩。主键为学号和计划编号,外键为计划编号,参考开课计划表中的属性计划编号。表1-7 选课表

6.数据库中表间的联系

只理解每个数据表对于具体问题的解决往往是不够的。要真正理解一个关系数据库的内容,除了理解每个表的内容外,还需要理解各个表间的关系或联系。一个表中的行通常和其他表中的行相关联。不同表中相匹配的值(相同的值)表明相应表间存在联系。考虑学生表、开课表和选课表之间的联系,选课表中每一行表示一个学生选择了某门计划开设的课程。选课表的学号列中的每个值都与学生表中的学号列的某个值相匹配;同样,开课号列中的每个值也都与开课表中的开课号列的某个值相匹配。图1-7描绘了不同的表列值间的匹配关系。

众所周知,一般系统的关系数据库一般都包含很多表,少则10~15个表,多则上百个表。要从这么多的表中提取出有意义的信息,通常需要使用数据匹配的方法把多个表结合到一起。通过学生表.学号列和选课表.学号列上的数据匹配,就可以将学生表和选课表关联到一起。与此类似,通过开课表.课号列和选课表.开课号列上的数据匹配,就可以将开课表和选课表关联到一起。理解表之间的联系,对于提取有价值的数据是非常重要的。1.3.3 关系数据库的完整性

关系完整性是关系数据库必须满足的完整性约束条件,它提供了一种手段来保证当授权用户对数据库修改时不会破坏数据的一致性。因此,完整性约束防止的是对数据的意外破坏,从而降低应用程序的复杂性,提高系统的易用性。图1-7 选课表和学生表、开课表之间的匹配

1.实体完整性约束(PRIMARY)

实体完整性规则是主关键字段中的各属性值不能取空值。

例如,在学生表中,规定PRIMARY KEY=学号,因此学号不能取空值。

2.唯一性约束(UNIQUE)

唯一性约束规则是在约束的字段上不能有相同值出现。

例如,在学生表中,学号是唯一标示每个学生实体的,所以该字段的值就不能出现重复的学号值。又如,在课程表中,学校设置的课程名称一般是不允许有一样的名字的,所以课程表中的课名值就必须唯一。

3.参照完整性约束(FOREIGN)

参照完整性约束规则要求外关键字的值必须来源于被参照关系表的取值或为空值。

外关键字定义为:设F是基本关系R的一个或一组属性,但不是关系R的关键字。如果F与基本关系S的主关键字Ks相对应,则称F是基本关系R的外关键字,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。

例如,选课表中的学号和开课号字段,单独都不是选课表的关键字。但是,学号是学生表的主关键字,开课号是开课表的主关键字。所以选课表中的学号相对学生表就是外关键字,参照完整性约束要求选课表中的学号值必须在学生表的学号中可以找到,否则就只能取空值。同理,选课表中的开课号相对开课表就是外关键字,参照完整性约束要求选课表中的开课号值必须在开课表的开课号中可以找到,否则就只能取空值。

4.检查(CHECK)和默认值(DEFAULT)约束

该类完整性约束是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。

例如,选课表中的成绩字段通过这种约束,其值只能在0~100

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载