数据库原理与应用(SQL Server)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-19 07:16:43

点击下载

作者:赵明渊

出版社:电子工业出版社

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

数据库原理与应用(SQL Server)

数据库原理与应用(SQL Server)试读:

前言

数据库技术作为现代计算环境中数据管理的基础技术,发展非常快速,已被广泛应用到各行各业的数据处理系统中,而作为数据管理新技术的大数据已成为行业热点和产业发展的新增长点。

本书以功能强大的关系数据库管理系统SQL Server 2014作为平台,以商店销售数据库作为主线,全面系统地介绍了数据库原理、数据库系统和数据管理新技术。数据库原理部分包括数据库概述、关系数据库、关系数据库规范化理论和数据库设计;数据库系统部分包括SQL Server数据库基础、创建数据库和创建表、数据定义语言和数据操纵语言、数据查询语言、索引和视图、数据完整性、数据库程序设计、数据库编程技术、事务和锁、系统安全管理、备份和恢复、基于Visual C#和 SQL Server数据库的学生管理系统的开发;数据管理新技术部分包括大数据和云计算。

本书的特点如下:(1)理论与实践相结合。将理论和实际应用有机结合起来,以数据库原理作为基础,以SQL Server 2014作为平台,有利于学生对数据库的基本概念、原理、方法和技术有较深刻的理解,培养学生掌握数据库应用、开发的基本知识和技术。(2)技术新颖。介绍了云计算、大数据、云数据库、NoSQL数据库等内容。(3)在数据库设计和学生管理系统开发等章节,可作为教学和实训的内容,培养学生设计、开发一个简单数据库应用系统的能力。

本书可作为大学本科、高职高专及培训班课程的教学用书,也可供计算机应用人员参考。

本书由赵明渊主编,参加本书编写的有成和平、胡宇、文思群、李华春、张凤荔、周亮宇、赵凯文、李文君、程小菊、邓铠凌、王成均。对本书提供帮助的同志,在此表示感谢!

本书免费提供习题答案、教学课件、所有实例的源代码,读者可到华信教育资源网(http://www.hxedu.com.cn)注册后进行下载。

由于编者水平有限,书中难免有错误和不妥之处,恳请读者批评指正。作者

第1章 数据库概述

数据库技术是数据管理的有效技术,其作为信息系统的核心和基础,有着越来越广泛的应用。数据库管理系统是一个系统软件,用于科学地组织和存储数据、高效地获取和维护数据。数据库系统是在计算机系统中引入数据库之后组成的系统,它用来组织和存取大量数据。在本章中,介绍数据库、数据库管理系统、数据库系统、数据库系统结构、数据模型等内容,它是学习以后各章的基础。

1.1 数据库系统概述

下面介绍数据库的一些基本概念,并强调数据库管理系统是数据库系统的核心组成部分。

1.1.1 数据库

1.数据

数据(Data)是事物的符号表示,数据可以是数字、文字、图像、声音等。一个学生记录数据如下所示:

2.数据库

数据库(DataBase)是以特定的组织结构存放在计算机的存储介质中的相互关联的数据集合。

数据库具有以下特征:(1)是相互关联的数据集合,不是杂乱无章的数据集合。(2)数据存储在计算机的存储介质中。(3)数据结构比较复杂,有专门理论支持。

数据库包含了以下含义:(4)提高了数据和程序的独立性,有专门的语言支持。(5)建立数据库的目的是为应用服务。

1.1.2 数据库管理系统

数据库管理系统(DataBase Management System, DBMS)是位于用户和操作系统之间的一个数据管理软件,它是在操作系统支持下的系统软件,是数据库应用系统的核心组成部分,它的主要功能如下:(1)数据定义功能:提供数据定义语言,定义数据库和数据库对象。(2)数据操纵功能:提供数据操纵语言,对数据库中的数据进行查询、插入、修改、删除等操作。(3)数据控制功能:提供数据控制语言,进行数据控制,即提供数据的安全性、完整性、并发控制等功能。(4)数据库建立维护功能:包括数据库初始数据的装入、转储、恢复和系统性能监视、分析等功能。

1.1.3 数据库系统

数据库系统(DataBase System, DBS)是由数据库、操作系统、数据库管理系统、应用程序、用户、数据库管理员组成的用于存储、管理、处理和维护数据的系统,数据库系统是数据库应用系统的简称,如图1.1所示。图1.1 数据库系统的组成

数据库系统分为客户-服务器模式(C/S)和三层客户-服务器(B/S)模式。

1.C/S模式

应用程序直接与用户打交道,数据库管理系统不直接与用户打交道,因此,应用程序称为前台,数据库管理系统称为后台。因为应用程序向数据库管理系统提出服务请求,所以称为客户程序(Client),而数据库管理系统向应用程序提供服务,所以称为服务器程序(Server),上述操作数据库的模式称为客户-服务器模式(C/S),如图1.2所示。图1.2 C/S模式

2.B/S模式

基于Web的数据库应用采用三层客户-服务器模式(B/S),第一层为浏览器,第二层为Web服务器,第三层为数据库服务器,如图1.3所示。图1.3 B/S模式

1.2 数据管理技术的发展

数据管理是指对数据进行分类、组织、编码、存储、检索和维护等工作,数据管理技术的发展经历了人工管理阶段、文件系统阶段、数据库系统阶段,现在正在向更高一级的数据库系统发展。

1.人工管理阶段

20世纪50年代中期以前,人工管理阶段的数据是面向应用程序的,一个数据集只能对应一个程序,应用程序与数据之间的关系如图1.4所示。图1.4 人工管理阶段应用程序与数据之间的关系

人工管理阶段的特点如下:(1)数据不保存。只是在计算某一课题时将数据输入,用完即撤走。(2)数据不共享。数据面向应用程序,一个数据集只能对应一个程序,即使多个不同程序用到相同的数据,也得各自定义。(3)数据和程序不具有独立性。数据的逻辑结构和物理结构发生改变,必须修改相应的应用程序,即要修改数据必须修改程序。(4)没有软件系统对数据进行统一管理。

2.文件系统阶段

20世纪50年代后期到60年代中期,计算机不仅用于科学计算,也开始用于数据管理。数据处理的方式不仅有批处理,还有联机实时处理。应用程序和数据之间的关系如图1.5所示。图1.5 文件系统阶段应用程序与数据之间的关系

文件系统阶段数据管理的特点如下:(1)数据可长期保存。数据以文件的形式长期保存。(2)数据共享性差,冗余度大。在文件系统中,一个文件基本对应一个应用程序,当不同应用程序具有相同的数据时,也必须各自建立文件,而不能共享数据,数据冗余度大。(3)数据独立性差。当数据的逻辑结构改变时,必须修改相应的应用程序,数据依赖于应用程序,独立性差。(4)由文件系统对数据进行管理。由专门的软件——文件系统进行数据管理。文件系统把数据组织成相互独立的数据文件,可按文件名访问,按记录存取。应用程序与数据之间有一定的独立性。

3.数据库系统阶段

20世纪60年代后期开始,数据管理对象的规模越来越大,应用越来越广泛,数据量快速增加。为了实现数据的统一管理,解决多用户、多应用共享数据的需求,数据库技术应运而生,出现了统一管理数据的专门软件——数据库管理系统。

数据库系统阶段应用程序和数据之间的关系如图1.6所示。图1.6 数据库系统阶段应用程序与数据之间的关系

数据库系统与文件系统相比较,具有以下主要特点:(1)数据结构化。(2)数据的共享度高,冗余度小。(3)有较高的数据独立性。(4)由数据库管理系统对数据进行管理。

在数据库系统中,数据库管理系统作为用户与数据库的接口,提供了数据库定义、数据库运行、数据库维护和数据安全性、完整性等控制功能。

1.3 数据库系统结构

从数据库管理系统内部系统结构看,数据库系统通常采用三级模式结构。

数据模式是数据库中全体数据的结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。模式是相对稳定的,而实例是相对变动的。模式反映的是数据的结构及其关系,而实例反映的是数据库某一时刻的状态。

模型与模式的区别在于:模型用图形来表示,直观清晰,但计算机无法识别,需要使用一种语言(如由DBMS提供的DDL)来进行描述。模式则是对模型的描述。

1.3.1 数据库系统的三级模式结构

模式(Schema)是指对数据的逻辑结构或物理结构、数据特征、数据约束的定义和描述,它是对数据的一种抽象,模式反映数据的本质、核心或类型等方面。

数据库系统的标准结构是三级模式结构,它包括外模式、模式和内模式,如图 1.7所示。图1.7 数据库系统的三级模式结构

1.外模式

外模式(External Schema)又称子模式或用户模式,位于三级模式的最外层,对应于用户级。它是某个或某几个用户所看到的数据视图,是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集,一个数据库可以有多个外模式,同一外模式也可以为某一用户的多个应用系统所用,但一个应用程序只能使用一个外模式,它是由外模式描述语言(外模式DDL)来描述和定义的。

2.模式

模式(Schema)又称概念模式,也称逻辑模式,位于三级模式的中间层,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一观点构造的全局逻辑结构,是所有用户的公共数据视图(全局视图)。一个数据库只有一个模式,它是由模式描述语言(模式DDL)来描述和定义的。

3.内模式

内模式(Internal Schema)又称存储模式,位于三级模式的底层,对应于物理级。它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式,它是由内模式描述语言(内模式DDL)来描述和定义的。

1.3.2 数据库的二级映射功能和数据独立性

为了能够在内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两级映射:外模式/模式映射,模式/内模式映射。

1.外模式/模式映射

模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。数据库系统都有一个外模式/模式映射,它定义了该外模式与模式之间的对应关系。

当模式改变时,由数据库管理员对各个外模式/模式映射做相应改变,可以使外模式保持不变。

应用程序是依据数据的外模式编写的,保证了数据与程序的逻辑独立性,简称数据逻辑独立性。

2.模式/内模式映射

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

在数据库的三级模式结构中,数据库模式即全局逻辑结构是数据库的中心与关键,它独立于数据库的其他层次。

数据库的内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图即外模式,也独立于具体的存储设备。

数据库的外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于内模式和存储设备。

数据库的二级映射保证了数据库外模式的稳定性,从而根本上保证了应用程序的稳定性,使得数据库系统具有较高的数据与程序的独立性。数据库的三级模式与二级映射使得数据的定义和描述可以从应用程序中分离出去。

1.3.3 数据库管理系统的工作过程

数据库管理系统控制的数据操作过程基于数据库系统的三级模式结构与二级映射功能,下面通过读取一个用户记录的过程反映数据库管理系统的工作过程,如图1.8所示。图1.8 应用程序从数据库中读取一个用户记录的过程(1)应用程序A向DBMS发出从数据库中读用户记录的命令。(2)DBMS对该命令进行语法检查、语义检查,并调用应用程序A 对应的外模式,检查A的存取权限,决定是否执行该命令。如果拒绝执行,则转(10)向用户返回错误信息。(3)在决定执行该命令后,DBMS调用模式,依据外模式/模式映射的定义,确定应读入模式中的哪些记录。(4)DBMS调用内模式,依据模式/内模式映射的定义,决定应从哪个文件、用什么存取方式、读入哪个或哪些物理记录。(5)DBMS向操作系统(OS)发出执行读取所需物理记录的命令。(6)操作系统执行从物理文件中读数据的有关操作。(7)操作系统将数据从数据库的存储区送至系统缓冲区。(8)DBMS 依据内模式/模式、模式/外模式映射的定义(仅为模式/内模式、外模式/模式映射的反方向,并不是另一种新映射),导出应用程序A所要读取的用户记录格式。(9)DBMS将用户记录从系统缓冲区传送到应用程序A的用户工作区。(10)DBMS向应用程序A返回命令执行情况的状态信息。

以上为DBMS读一个用户记录的过程,DBMS向数据库写一个用户记录的过程与此类似,只是过程基本相反而已。由DBMS控制的用户记录的存取操作,就是由很多读或写的基本过程组合完成的。

1.4 数据模型

模型是对现实世界中某个对象特征的模拟和抽象,数据模型(Data Model)是对现实世界数据特征的抽象,它用来描述数据、组织数据和对数据进行操作。数据模型是数据库系统的核心和基础。

1.4.1 两类数据模型

数据模型需要满足三方面的要求:能比较真实地模拟现实世界,容易为人所理解,便于在计算机上实现。

在开发设计数据库应用系统时需要使用不同的数据模型,它们是概念模型、逻辑模型、物理模型。根据模型应用的不同目的,按不同的层次可将它们分为两类,第一类是概念模型,第二类是逻辑模型、物理模型。

第一类中的概念模型,按用户的观点对数据和信息建模,是对现实世界的第一层抽象,又称信息模型。它通过各种概念来描述现实世界的事物以及事物之间的联系,主要用于数据库设计。

第二类中的逻辑模型,按计算机的观点对数据建模,是概念模型的数据化,是事物及事物之间联系的数据描述,提供了表示和组织数据的方法。主要的逻辑模型有层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型和半结构化数据模型等。

第二类中的物理模型,是对数据底层的抽象,它描述数据在系统内部的表示方式和存取方法,如数据在磁盘上的存储方式和存取方法。它是面向计算机系统的,由数据库管理系统具体实现。

为了把现实世界具体的事物抽象、组织为某一个数据库管理系统支持的数据模型,需要经历一个逐级抽象的过程,将现实世界抽象为信息世界,然后将信息世界转换为机器世界。即首先将现实世界的客观对象抽象为某一种信息结构,这种信息结构不依赖于具体计算机系统,不是某一个数据库管理系统支持的数据模型,而是概念级的模型,然后,将概念模型转换为计算机上某一个数据库管理系统支持的数据模型,如图1.9所示。图1.9 现实世界客观事物的抽象过程

从概念模型到逻辑模型的转换由数据库设计人员完成,从逻辑模型到物理模型的转换主要由数据库管理系统完成。

1.4.2 概念模型

概念模型(Conceptual Model)是现实世界到机器世界的一个中间层次。

概念模型又称信息模型,它按用户的观点对数据和信息进行建模,是描述现实世界的概念化结构,它独立于数据库逻辑结构和具体的DBMS。

1.概念模型的基本概念

概念模型有以下基本概念:(1)实体(Entity):客观存在并可相互区别的事物称为实体。实体用矩形框表示,框内为实体名。实体可以是具体的人、事、物或抽象的概念,例如,在学生成绩管理系统中,“学生”就是一个实体。(2)属性(Attribute):实体所具有的某一特性称为属性。属性采用椭圆框表示,框内为属性名,并用无向边与其相应实体连接。例如,在学生成绩管理系统中,学生的特性有学号、姓名、性别、出生日期、专业、总学分,它们就是学生实体的6个属性。(3)码(Key):能唯一标识实体的最小属性集,又称为键或关键字。例如,学号是学生实体的码。(4)实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。例如,学生(学号, 姓名, 性别, 出生日期, 专业, 总学分)就是一个实体型。(5)实体集(Entity Set):同型实体的集合称为实体集,例如,全体学生记录就是一个实体集。(6)联系(Relationship):实体之间的联系,可分为两个实体集之间的联系、多个实体集之间的联系、单个实体集内的联系。

两个实体集之间的联系包括一对一的联系、一对多的联系、多对多的联系。

● 一对一的联系(1∶1)

如果实体A中的每个实例在实体B中至多有一个(也可以没有)实例与之关联,反之亦然,则称实体A与实体B具有一对一联系,记作:1∶1。

例如,一个班只有一个正班长,而一个正班长只属于一个班,班级与正班长两个实体间具有一对一的联系。

● 一对多的联系(1∶n)

如果实体A与实体B之间存在联系,并且对于实体A中的一个实例,实体B中有多个实例与之对应;而对实体B中的任意一个实例,在实体A中都只有一个实例与之对应,则称实体A到实体B的联系是一对多的,记为1∶n。

例如,一个班可有若干学生,一个学生只能属于一个班,班级与学生两个实体间具有一对多的联系。

● 多对多的联系(m∶n)

如果实体A与实体B之间存在联系,并且对于实体A中的一个实例,实体B中有多个实例与之对应;而对实体B中的一个实例,在实体A中也有多个实例与之对应,则称实体A到实体B的联系是多对多的,记为m∶n。

例如,一个学生可选多门课程,一门课程可被多个学生选修,学生与课程两个实体间具有多对多的联系。

2.概念模型的表示方法

概念模型较常用的表示方法是实体-联系模型(Entity-Relationship Model, E-R模型)。

在E-R模型中:(1)实体采用矩形框表示,把实体名写在矩形框内。(2)属性采用椭圆框表示,把属性名写在椭圆框内,并用无向边将其与相应的实体框相连。(3)联系采用菱形框表示,联系名写在菱形框中,用无向边将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,例如1∶1、1∶n 或 m∶n。如果联系也具有属性,则将属性框与菱形框也用无向边连上。【例1.1】 画出学生成绩管理系统中的学生实体图和课程实体图。

学生实体有学号、姓名、性别、出生日期、专业、总学分等6个属性,课程实体有课程号、课程名、学分、教师号等4个属性,它们的实体图如图1.10所示。图1.10 学生成绩管理系统中的学生实体图和课程实体图【例1.2】 画出学生成绩管理系统的E-R模型。

学生成绩管理系统有学生、课程两个实体,它们之间的联系是选课,学生选修一门课程后都有一个成绩,一个学生可选多门课程,一门课程可被多个学生选修,学生成绩管理系统的E-R模型如图1.11所示。图1.11 学生成绩管理系统的E-R模型【例1.3】 画出商店销售管理系统中的员工、订单、商品、部门实体图。

员工、订单、商品、部门实体如下:

员工:员工号、姓名、性别、出生日期、地址、工资。

订单:订单号、客户号、销售日期、总金额。

商品:商品号、商品名称、商品类型代码、单价、库存量、未到货商品数量。

部门:部门号、部门名称。

它们的实体图如图1.12和图1.13所示。图1.12 商店销售管理系统中的员工实体图和订单实体图图1.13 商店销售管理系统中的商品实体图和部门实体图【例1.4】 画出商店销售管理系统的E-R模型。

商店销售管理系统中的实体存在如下联系:(1)一个部门拥有多个员工,一个员工只属于一个部门。(2)一个员工可开出多个订单,一个订单只能由一个员工开出。(3)一个订单可订购多类商品,一类商品可有多个订单。

商店销售管理系统的E-R模型如图1.14所示。图1.14 商店销售管理系统的E-R模型

1.4.3 数据模型组成要素

数据模型是严格定义的一组概念的集合,一般由数据结构、数据操作、数据完整性约束三部分组成。

1.数据结构

数据结构用于描述系统的静态特性,是所研究的对象类型的集合。数据模型按其数据结构分为层次模型、网状模型和关系模型等。数据结构研究的对象是数据库的组成部分,包括两类:一类是与数据类型、内容、性质有关的对象,例如关系模型中的域、属性等,另一类是与数据之间联系有关的对象,例如关系模型中反映联系的关系等。

2.数据操作

数据操作用于描述系统的动态特性,是指对数据库中各种对象及对象的实例允许执行的操作的集合,包括对象的创建、修改和删除,对对象实例的检索、插入、删除、修改及其他有关操作等。

3.数据完整性约束

数据完整性约束是一组完整性约束规则的集合,完整性约束规则是给定数据模型中数据及其联系所具有的制约和依存的规则。

数据模型三要素在数据库中都是严格定义的一组概念的集合。在关系数据库中,数据结构是表结构定义及其他数据库对象定义的命令集,数据操作是数据库管理系统提供的数据操作(操作命令、语法规定、参数说明等)命令集,数据完整性约束是各关系表约束的定义及操作约束规则等的集合。

1.4.4 常用的数据模型

常用的数据模型有层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等,下面介绍层次模型、网状模型和关系模型。

1.层次模型

层次模型采用树状层次结构组织数据,树状结构的每个节点表示一个记录类型,记录类型之间的联系是一对多的联系。层次模型有且仅有一个根节点,位于树状结构顶部,其他节点有且仅有一个父节点。某大学按层次模型组织数据的示例如图1.15所示。图1.15 层次模型示例

层次模型简单易用,但现实世界很多联系是非层次性的,如多对多的联系等,表达起来比较笨拙且不直观。

2.网状模型

网状模型采用网状结构组织数据,网状结构的每个节点表示一个记录类型,记录类型之间可以有多种联系。按网状模型组织数据的示例如图1.16所示。图1.16 网状模型示例

网状模型可以更直接地描述现实世界,层次模型是网状模型的特例,但网状模型结构复杂,用户不易掌握。

3.关系模型

关系模型采用关系的形式组织数据,一个关系就是一张二维表,二维表由行和列组成。按关系模型组织数据的示例如图1.17所示。图1.17 关系模型示例

关系模型建立在严格的数学概念基础上,数据结构简单清晰,用户易懂易用,关系数据库是目前应用最广泛、最重要的一种数学模型。

1.5 小结

本章主要介绍了以下内容:(1)数据库(DataBase, DB)是长期存放在计算机内的有组织的可共享的数据集合,数据库中的数据按一定的数据模型组织、描述和存储,具有尽可能小的冗余度、较高的数据独立性和易扩张性。

数据库管理系统(DataBase Management System, DBMS)是数据库系统的核心组成部分,它是在操作系统支持下的系统软件,是对数据进行管理的大型系统软件。用户在数据库系统中的一些操作都是由数据库管理系统来实现的。

数据库系统(DataBase System, DBS)是在计算机系统中引入数据库后的系统构成。数据库系统由数据库、操作系统、数据库管理系统、应用程序、用户、数据库管理员(DataBase Administrator, DBA)组成。(2)数据管理技术的发展经历了人工管理阶段、文件系统阶段、数据库系统阶段,现在正在向更高一级的数据库系统发展。(3)数据库系统的标准结构是三级模式结构,它包括外模式、模式和内模式,数据库管理系统在这三级模式之间提供了两级映射:外模式/模式映射,模式/内模式映射。数据库的三级模式与二级映射使得数据的定义和描述可以从应用程序中分离出去。(4)数据模型(Data Model)是现实世界数据特征的抽象,根据模型应用的不同目的,按不同的层次可将它们分为两类,第一类是概念模型,第二类是逻辑模型、物理模型。数据模型是数据库系统的核心和基础。

概念模型(Conceptual Model)又称信息模型,它按用户的观点对数据和信息进行建模,是描述现实世界的概念化结构。它独立于数据库逻辑结构和具体的 DBMS。概念模型较常用的表示方法是实体-联系模型(Entity-Relationship Model, E-R模型)。

数据模型一般由数据结构、数据操作、数据完整性约束三部分组成。常用的数据模型有层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。

习题1

一、选择题

1.1 数据库中存储的是________。

A.数据          B.数据以及数据之间的联系

C.数据模型         D.信息

1.2 信息的数据表现形式是________。

A.只能是文字        B.只能是图形

C.只能是声音        D.以上皆可

1.3 数据库具有________、最小的冗余度和较高的程序与数据的独立性等特点。

A.数据结构化        B.程序结构化

C.程序标准化        D.数据模块化

1.4 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)的关系是________。

A.DBMS包括DBS和DB     B.DBS包括DBMS和DB

C.DB包括DBS和DBMS     D.DBS就是 DBMS,也就是DB

1.5 下面不属于数据模型要素的是________。

A.数据结构          B.数据操作

C.数据控制           D.完整性约束

1.6 数据管理技术的发展阶段中,数据库系统阶段与文件系统阶段的根本区别是数据库系统________。

A.数据可共享          B.数据可长期保存

C.由专门软件对数据进行管理    D.采用一定的数据模型组织数据

1.7 数据库三级模式体系结构的划分,有利于保持数据库的________。

A.数据独立性          B.数据安全性

C.结构规范化          D.操作可行性

1.8 在数据库三级模式结构中,内模式有________。

A.3个     B.2个    C.1个    D.任意多个

1.9 一个数据库系统的外模式________。

A.只能有一个          B.可以有多个

C.最多只能有一个        D.至少2个

1.10 要保证数据库的数据独立性,需要修改的是________。

A.模式与内模式        B.模式与外模式

C.三层模式          D.三层模式之间的两层映射

二、填空题

1.13 数据模型由数据结构、数据操作和________组成。

1.14 数据库系统的三级模式包括外模式、模式和________。

1.15 数据库的特性包括共享性、独立性、完整性和________。

三、问答题

1.16 什么是数据库?

1.17 数据库管理系统有哪些功能?

1.18 数据管理技术的发展经历了哪些阶段?各阶段有何特点?

1.19 简述数据库系统的三级模式结构和两级映射。

1.20 什么是关系数据库?简述关系运算。

第2章 关系数据库

关系数据库理论由IBM公司的E. F. Codd首先提出。关系数据库用关系模型来描述和组织数据,是目前应用最广泛的数据库。关系模型的原理、技术和应用是本书的重要内容。本章讲解关系模型的数据结构、关系操作和关系的完整性,以及关系代数、关系演算、SQL简介等内容。

2.1 关系模型

关系数据库系统采用关系模型作为数据的组织方式,关系模型由关系数据结构、关系操作和关系的完整性三部分组成。

2.1.1 关系数据结构

关系模型建立在集合代数的基础上,本节从集合论角度给出关系数据结构的形式化定义。

1.关系(1)域(Domain)

定义2.1 域是一组具有相同数据类型的值的集合。

例如,整数、正整数、实数、大于等于0且小于等于100的正整数、{0,1,2,3,4}等都可以是域。(2)笛卡儿积(Cartesian Product)

定义2.2 设定一组域D, D, …, D,在这组域中可以是相同的12n域。定义D, D, …, D的笛卡儿积为12n

其中,每个元素(d, d, …, d)叫作一个n元组(n-Tuple),简12n称元组(Tuple),元素中的每个值d(i=1,2,…,n)叫作一个分量i(Component)。

如果 D(i=1, 2,…,n)为有限集,其基数(Cardinal Number)为 im(i=1,2,…,n),则D×D×…×D的基数为i12n

笛卡儿积可以表示为一个二维表,表中每行对应一个元组,每列的值来自一个域。【例2.1】 笛卡儿积举例。

给出3个域:D=学号集合stno={161001,161002}1D=姓名集合stname={周浩然,王丽萍}2D=性别集合 stsex={男,女}3

则D, D, D的笛卡儿积为:123

D ×D ×D={(121001,周浩然,男),(121001,周浩然,123女),(121001,王丽萍,男), (121001, 王丽萍, 女), (121002, 周浩然, 男), (121002, 周浩然, 女), (121002, 王丽萍, 男), (121002, 王丽萍, 女)}

其中,(121001, 周浩然, 男), (121001, 周浩然, 女), (121002, 王丽萍, 男)等都是元组,121001, 121002, 周浩然, 王丽萍, 男, 女等都是分量,这个笛卡儿积的基数是2×2×2=8,即共有8个元组,可列成一张二维表,如表2.1所示。表2.1 D, D, D的笛卡儿积123(3)关系(Relation)

定义2.3 笛卡儿积D×D×…×D的子集称为D,D,…,D上的关系,12n12n表示为R(D,D,…,D)12n

这里的R表示关系的名称,n是关系的目或度(Degree)。当n=1时,称该关系为单元关系或一元关系;当n=2时,称该关系为二元关系;当n=m时,称该关系为m元关系。

关系中的每个元素是关系中的元组,通常用t表示。

在一般情况下,D,D,…,D的笛卡儿积是没有实际意义的,只有12n它的某个子集才有实际意义,举例如下。【例2.2】 关系举例。

在例2.1的笛卡儿积中,许多元组是没有意义的,因为一个学号只标识一个学生的姓名,一个学生只有一个性别。表2.1中只有一个子集有意义,可以表示学生关系。将学生关系取名为S,表示为S(stno, stname, stsex),列成二维表如表2.2所示。表2.2 S关系

① 关系的元组、属性和候选码

关系是笛卡儿积的有限子集,所以关系也是一个二维表。

● 元组(Tuple):表的每行对应一个元组。

● 属性(Attribute):表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个唯一的名字,称为属性。

● 候选码(Candidate Key):若关系中某一属性组的值能唯一地标识一个元组,则称该属性组为候选码,又称为候选键。

候选码中的属性称为主属性(Prime Attribute),不包含在任何候选码中的属性称为非主属性(Non-Prime Attribute)或非码属性(Non-Key Attribute)。

在最简单的情况下,候选码只包含一个属性,在最极端的情况下,关系模式的所有属性组成这个关系模式的候选码,称为全码(All-Key)。

● 主码(Primary Key):在一个关系中有多个候选码,从中选定一个作为主码。

② 关系的类型

关系有3种类型:基本关系(又称基本表或基表)、查询表和视图表。

● 基本关系:实际存在的表,是实际存储数据的逻辑表示。

● 查询表:查询结果对应的表。

● 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

③ 关系的性质

关系具有以下性质:

● 列的同质性:每列中的分量是同一类型的数据,来自同一个域。

● 列名唯一性:每列具有不同的属性名,但不同列的值可以来自同一个域。

● 元组相异性:关系中任意两个元组的候选码不能相同。

● 行序的无关性:行的次序可以互换。

● 列序的无关性:列的次序可以互换。

● 分量原子性:分量值是原子的,即每个分量都必须是不可分的数据项。

④ 规范化

关系模型要求关系必须是规范化(Normalization)的,规范化要求关系必须满足一定的规范条件,而在规范条件中,最基本的一条是每个分量必须是不可分的数据项。规范化的关系简称为范式(Normal Form)。

例如,表2.3所示的关系就是不规范的,存在“表中有表”的现象。表2.3 非规范化关系

2.关系模式

在关系数据库中,关系模式是型,关系是值。

关系是元组的集合,关系模式是对关系的描述,所以关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域。

定义2.4 关系模式(Relation Schema)可以形式化地表示为R(U,D,DOM,F)

其中,R是关系名,U是组成该关系的属性名集合,D是属性所来自的域,DOM是属性向域的映射集合,F是属性间的数据依赖关系集合。

关系模式通常可以简记为R(U)

或R(A, A, …, A)12n

其中,R是关系名,A, A, …, A为属性名。12n

关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。

在实际应用中,我们常常把关系模式和关系统称为关系。

3.关系数据库

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

关系数据库的型称为关系数据库模式,是对关系数据库的描述,包括若干域的定义和在这些域上定义的若干关系模式。

关系数据库的值是这些关系模式在某一时刻对应的关系的集合。

2.1.2 关系操作

关系模型给出了关系操作的能力说明,但不对关系数据库管理系统语言给出具体语法要求。本节介绍基本的关系操作和关系操作语言。

1.基本的关系操作

关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。

查询操作是关系操作最重要的部分,可分为选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡儿积等。其中的5种基本操作是并、差、笛卡儿积,选择、投影,其他操作可由基本操作来定义和导出。

关系操作的特点是集合操作方式,即操作的对象与结果都是集合。这种操作方式亦称为一次一集合(set-at-a-time)方式,相应地,非关系模型的数据操作方式则为一次一记录(record-at-a-time)方式。

2.关系操作语言

关系操作语言是数据库管理系统提供的用户接口,是用户用来操作数据库的工具。关系操作语言灵活方便,表达能力强大,可分为关系代数语言、关系演算语言和结构化查询语言三类。(1)关系代数语言

这是用对关系的运算来表达查询要求的语言,如ISBL。(2)关系演算语言

这是用谓词来表达查询要求的语言,又分为元组关系演算语言和域关系演算语言,前者如ALPHA,后者如QBE。(3)结构化查询语言

它介于关系代数和关系运算之间,具有关系代数和关系演算双重特点,如SQL。

以上三种语言,在表达能力上是完全等价的。

关系操作语言是一种高度非过程化语言,存取路径的选择由数据库管理系统的优化机制自动完成。

2.1.3 关系的完整性

关系模型的完整性规则是对关系的某种约束条件。关系的值在不断变化,为了维护数据库中的数据与现实世界的一致性,任何关系在任何时刻都应满足这些约束条件。

关系模型的三种完整性约束为:实体完整性,参照完整性和用户定义完整性。

任何关系数据库都应支持实体完整性和参照完整性,此外,不同关系数据库系统根据实际情况需要一些特殊约束条件形成用户定义完整性。

1.实体完整性(Entity Integrity)

规则2.1实体完整性规则 若属性(一个或一组属性)A是基本关系R的主属性,则A不能取空值。

空值(null value)指“不知道”或“不存在”的值。

例如,在学生关系S(stno, stname, stsex)中,学号stno是这个关系的主码,则stno不能取空值。又如在选课(学号, 课程号, 分数)中,“学号, 课程号”为主码,则“学号”和“课程号”两个属性都不能取空值。

实体完整性规则说明如下:(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一性标识。(4)主码中的属性即主属性不能取空值。

2.参照完整性(Referential Integrity)

在现实世界中,实体之间存在的联系在关系模型中都是用关系来描述的,自然存在关系与关系间的引用。参照完整性一般指多个实体之间的联系,一般用外码实现,举例如下。【例2.3】 学生实体与学院实体可用以下关系表示,其中的主码用下画线标识。

这两个关系存在属性的引用,学生关系引用了学院关系的主码“学院号”,学生关系中的“学院号”必须是确实存在的学院的学院号,即学院关系中有该学院的记录。【例2.4】 学生、课程、学生与课程之间的联系可用以下3个关系表示,其中的主码用下画线标识。

这3个关系存在属性的引用,选课关系引用了学生关系的主码“学号”和课程关系的主码“课程号”,选课关系中“学号”和“课程号”的取值需要参照学生关系中的“学号”取值和课程关系中的“课程号”取值。【例2.5】 学生关系的内部属性之间存在引用关系,其中的主码用下画线标识。

在该关系中,“学号”属性是主码,“班长学号”属性是所在班级班长的学号,它引用了本关系“学号”属性,即“班长学号”必须是确实存在的学生学号。

定义2.5 设F是基本关系R的一个或一组属性,但不是关系R的码,K是基本关系S的主码。如果F与K相对应,则称F是R的外码ss(Foreign Key)。并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。关系R和S不一定是不同的关系。

在例2.3中,学生关系的“学院号”与学院关系的主码“学院号”相对应,所以,“学院号”属性是学生关系的外码,学生关系是参照关系,学院关系是被参照关系。

在例2.4中,选课关系“学号”和学生关系的主码“学号”相对应,选课关系“课程号”和课程关系的主码“课程号”相对应,所以,“学号”属性和“课程号”属性是选课关系的外码,选课关系是参照关系,学生关系和课程关系都是被参照关系。

在例2.5中,“班长学号”属性与本身的主码“学号”属性相对应,所以,“班长学号”属性是学生关系的外码,学生关系既是参照关系,也是被参照关系。

外码不一定要与相应的主码同名,在例2.5中,学生关系的主码名是“学号”,外码名是“班长学号”。但在实际应用中,为了便于识别,当外码与相应的主码属于不同的关系时,往往取相同的名字。

参照完整性规则就是定义外码与主码之间的引用规则。

规则2.2参照完整性规则 若属性(或属性组) F是基本关系R的外码,它与基本关系S的主码K相对应(基本关系R和S不一定是不同s的关系),则对于R中每个元组在F上的值必须:

● 或者取空值(F的每个属性值均为空值);

● 或者等于S中某个元组的主码的值。

在例2.3中,学生关系每个元组的“学院号”属性只能取下面两类值:(1)空值,表示尚未给该学生分配学院;(2)非空值,被参照关系“学院号”中一定存在一个元组,它的主码的值等于该参照关系“学院号”中的外码的值。

3.用户定义完整性(User-defined Integrity)

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

用户定义的完整性数据也称为域完整性或语义完整性,通过这些规则限制数据库只接受符合完整性约束条件的数据值,不接受违反约束条件的数据,从而保证数据库中数据的有效性和可靠性。

按应用语义,属性数据有:(1)类型与长度限制。(2)取值范围限制。

例如,学生关系中“性别”数据只能是男或女,选课关系中“成绩”数据为1到100之间等。

2.2 关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。关系代数是施加于关系上的一组集合代数运算,是基于关系代数的数据操作语言,称为关系代数语言,简称关系代数。

任何一种运算都需要将一定的运算符作用于某运算对象上,得到预期的运算结果,故运算符、运算对象及运算结果是关系代数运算的三要素。关系代数运算的运算对象是关系,运算结果也是关系,用到的运算符包括集合运算符、专门的关系运算符、比较运算符和逻辑运算符等。

关系代数中的操作可以分为两类:(1)传统的集合运算,如并、交、差、笛卡儿积。这类运算将关系看成元组的集合,运算时从行的角度进行。(2)专门的关系运算,如选择、投影、连接、除。这些运算不仅涉及行而且也涉及列。

关系代数使用的运算符如下:(1)传统的集合操作:∪(并)、-(差)、∩ (交)、×(笛卡儿积)。(2)专门的关系操作:σ(选择)、Π(投影)、▷◁(连接)、÷(除)。(3)比较运算符:>(大于)、≥(大于等于)、<(小于)、≤(小于等于)、=(等于)、≠(不等于)。(4)逻辑运算符:∧(与)、∨(或)、¬(非)。

2.2.1 传统的集合运算

传统的集合运算有并、差、交和笛卡儿积运算,它们都是二目运算。

传统的集合运算用于关系运算时,要求参与运算的两个关系必须是相容的,即两个关系的列数相同,且对应的属性列都出自同一个域。

设关系R和关系S具有相同的n目(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量,t∈R表示t是R的一个元组。

以下定义并、差、交和笛卡儿积运算。

1.并(Union)

关系R和关系S的并记为R∪S,即R∪S= {t|t∈R∨t∈S}

其结果仍为n目关系,由属于R或属于S的元组组成。

2.差(Except)

关系R和关系S的差记为R−S,即R−S= {t|t∈R∧t∉S}

其结果仍为n目关系,由属于R且不属于S的所有元组组成。

3.交(Intersection)

关系R和关系S的交为R∩S,即R∩S= {t|t∈R∧t∈S}

其结果仍为n目关系,由既属于R又属于S的元组组成。关系的交可用差来表示,即R∩S=R−(R−S)。

4.笛卡儿积(Cartesian Product)

这里的笛卡儿积是广义笛卡儿积,因为笛卡儿积的元素是元组。

设n目和m目的关系R和S,它们的笛卡儿积是一个(n+m)目的元组集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。

若R有r个元组,S有s个元组,则关系R和关系S的笛卡儿积应当有r×s个元组,记为R×S,即【例2.6】 有两个关系R、S,如图2.1所示,求以下各传统的集合运算结果。(1)R∪S  (2)R−S  (3)R∩S  (4)R×S图2.1 2个关系R、S

解:(1)R∪S由属于R和属于S的所有不重复的元组组成。(2)R−S由属于R且不属于S的所有元组组成。(3)R∩S由既属于R又属于S的元组组成。(4) R×S为R和S的笛卡儿积,共有3×3=9个元组。

传统的集合运算结果如图2.2所示。图2.2 传统的集合运算结果

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载