数据库系统基础学习知识原理教学方案计划教育教程练习情况总结复习资料重要资料.doc
-
资源ID:2607336
资源大小:145.02KB
全文页数:25页
- 资源格式: DOC
下载积分:8金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
数据库系统基础学习知识原理教学方案计划教育教程练习情况总结复习资料重要资料.doc
-数据库系统原理教程第1章 绪论1.1、引言1、数据:数据是描述事物的符号记录。数据与其语义是不可分的。数据的形式本身并不能完全表达其内容,需要经过语义解释。2、数据库(database,简称DB):长期存储在计算机内、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享。3、数据库管理系统(database management system,简称DBMS):是位于用户与操作系统之间的一层数据管理软件。数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制。数据库管理系统使用户能方便地定义数据和操纵数据,并能够保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。4、数据库系统(database system,简称DBS):指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统、应用系统、数据库管理员和用户构成。5、数据库管理员(database administrator,简称DBA):完成数据库的建立、使用和维护等工作的专业人员。6、数据管理:指如何对数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。随着计算机硬件和软件的发展,数据管理经历了人工管理、文件系统和数据库系统三个发展阶段。7、人工管理数据的特点:(1)数据不保存。(2)数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作。(3)数据不共享。(4)数据不具有独立性,数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改。8、文件系统管理数据的特点:(1)数据可以长期保存。(2)由专门的软件即文件系统进行数据管理,程序和数据之间由软件提供的存取方法进行转换,应用程序与数据之间有了一定的独立性。(3)数据共享性差。(4)数据独立性低。不具有弹性的无结构的数据集。文件记录之间没有联系。9、数据库系统管理数据的特点:(1)数据结构化。(2)数据的共享性好,冗余度低。(3)数据独立性高。(4)数据由DBMS统一管理和控制。10、数据的不一致性:指同一数据不同拷贝的值不一样。11、数据的逻辑独立性:数据库系统的一个映像功能是数据的总体逻辑结构与某类应用所涉及的局部逻辑结构之间的映像功能。这一映像功能保证了当数据的总体逻辑结构改变时,通过对映像的相应改变可以保持数据的局部逻辑结构不变,由于应用程序是依赖数据的局部逻辑结构编写的,所以应用程序不必修改。12、数据的物理独立性:数据库系统的另一个映像功能是数据的存储结构与逻辑结构之间的映像或转换功能。这一映像功能保证了当数据的存储结构改变时,通过对映像的相应改变可以保持数据的逻辑结构不变,从而应用程序也不必改变。13、除了管理功能外,DBMS还提供以下功能:(1)数据的安全性。(2)数据的完整性。(3)并发控制。(4)数据库恢复。14、数据库技术的研究领域:(1)数据库管理系统软件的研制。(2)数据库设计。(3)数据库理论。1.2、数据模型1、数据模型:是严格定义的概念的集合。这些概念必须能够精确地描述系统的静态特性、动态特性和完整性约束条件。通常由数据结构、数据操作和完整性约束三个要素组成。2、数据结构:所研究的对象类型的集合。这些对象是数据库的组成成分,包括与数据类型、内容、性质有关的对象和与数据之间联系有关的对象。3、数据操作:指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。4、数据的约束条件:是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保障数据的正确、有效和相容。5、信息世界涉及的概念:实体、属性、码、域、实体型、实体集、联系。6、两个实体型之间的联系分为:1:1联系、1:n联系、m:n联系。7、ER图:提供了表示实体型、属性和联系的方法。8、常用数据模型:层次模型、网状模型、关系模型。层次模型和网状模型统称为非关系模型。9、基本层次联系:指两个记录以及它们之间的一对多(包括一对一)的联系。10、层次模型:用树形结构表示各类实体以及实体间的联系。优点:模型简单、实体间联系固定、提供良好的完整性支持。缺点:表示多对多联系时很笨拙、对插入删除操作限制较多、查询子节点必须通过父节点、层次命令趋于程序化。11、邻接法:按照层次树前序遍历的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序。12、链接法:用指引元反映数据之间的层次联系,每个记录设两类指引元,分别指向最左边的子节点和最近的兄弟节点,这种链接方法称为子女兄弟链接法;按树的前序穿越顺序链接各记录值,这种链接方法称为层次序列链接法。13、网状数据模型:是一种比层次模型更具普遍性的结构,去掉了层次模型的两个限制,允许多个结点没有双亲结点,允许结点有多个双亲结点,允许两个结点之间有多种关系,允许插入双亲不明确的子女结点,允许只删除双亲结点值,更新只需更新指定记录。优点:能更为直接的描述现实世界、具有良好的性能和存取效率。缺点:其DDL语言极其复杂、数据独立性较差。14、一个关系模型涉及以下概念:关系、元组、属性、主码、域、分量、关系模式、关系名。15、关系数据模型:实体及实体间的联系都用关系表示,它的操纵主要包括查询、插入、删除和更新数据。关系的完整性约束条件包括:实体完整性、参照完整性和用户定义完整性。关系模型优点:建立在严格的数学基础上、概念单一、存取路径对用户透明,具有较好的数据独立性,安全保密性。缺点:由于存取路径对用户透明,查询效率往往不如非关系数据模型。16、网状数据模型的典型代表是DBTG系统。1.3、数据库系统结构1、模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它是数据库系统模式结构的中间层,是数据库数据在逻辑级上的视图。一个数据库只有一个模式。2、外模式:也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集。一个数据库可以有多个外模式。一个应用程序只能使用一个外模式。同一外模式可以被多个应用系统使用。3、内模式:也称存储模式,它是数据物理结构和存储结构的描述,是数据在数据库内部的表示方式。一个数据库只有内模式。4、数据库系统的三级模式结构:是指数据库系统是由外模式、模式和内模式三级构成。5、二级映像功能:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。6、三级模式和两级映像的作用:(1)对于每个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式和模式之间的对应关系。当模式改变时,只需对各个外模式/模式的映像作出相应的改变,可以保持外模式不变,从而应用程序不必修改,保证了数据的逻辑独立性。(2)数据库中只有一个模式和内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变了,只需对模式/内模式映像作出相应的改变,可以使模式保持不变,从而保证了数据的物理独立性。7、数据库系统体系结构包括:(1)单用户数据库系统:是一种早期的最简单的数据库系统。在单用户系统中,整个数据库系统,包括应用程序、DBMS、数据,都装在一台计算机上,由一个用户独占,不同机器之间不能共享数据。(2)主从式结构的数据库系统:是指一个主机带多个终端的多用户结构。在这种结构中,数据库系统,包括应用程序、DBMS、数据,都集中存放在主机上,所有处理任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源。(3)分布式结构的数据库系统:指数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。数据存放、管理、维护困难。(4)客户/服务器结构的数据库系统:将DBMS和应用功能分开,网络中某些结点上的计算机专门用于执行DBMS功能,称为数据库服务器,其他结点上的计算机安装DBMS的外围应用开发工具,支持用户的应用,称为客户机。分为集中和分布两种。1.4、数据库管理系统1、DBMS的功能主要包括:(1)数据定义,数据定义包括定义各种模式、映射、约束条件。(2)数据操纵,数据操纵包括对数据库数据的检索、插入、修改和删除等基本操作。(3)数据库运行管理,包括对数据库进行并发控制、安全性检查、完整性约束条件检查、数据库内部维护等等。(4)数据组织、存储和管理,DBMS负责分门别类地组织、存储和管理各种数据,确定文件结构。(5)数据库的建立和维护,建立数据库包括数据库初始数据的输入和数据转换等,数据库维护包括数据库的转储、恢复、重构、监视等。(6)数据通信接口,DBMS提供与其他软件系统进行通信的功能。2、DBMS通常由4部分组成:(1)数据定义语言及其翻译处理程序,DDL供用户定义数据库的模式、存储模式、外模式、各级模式之间的映射、有关的约束条件等。(2)数据操纵语言及其编译程序,DML实现对数据库的检索、插入、修改、删除等基本操作。(3)数据库运行控制程序,DBMS提供一些系统运行控制程序负责数据库运行过程中的控制与管理。(4)实用程序,DBMS提供一些实用程序,包括数据初始装入程序、数据转储程序等。3、实现DBMS的方法:(1)N方案:DBMS模块被用户进程按子程序调用,DBMS与应用程序融合在一起,N个用户的系统中只有N个进程。(2)2N方案:每个用户进程均有一个影子进程为之服务,系统中还有若干后台进程。由于系统中进程总数接近于用户数的2倍,所以称为2N方案。(3)M+N方案:是2N方案的一种改进,在N个用户进程的系统中,有M个DBMS进程为之服务(M<N)。(4)N+1方案:整个DBMS仅使用一个进程,多个数据库用户向其发消息以申请数据库服务,这些消息挂在DBMS进程的消息队列中。1.5、数据库工程与应用1、数据库设计:包含两方面的内容,一是结构(数据)设计,也就是设计数据库框架或数据库结构;二是行为(处理)设计,即设计应用程序、事务处理等。2、数据库设计方法:在规范设计法中,数据库设计的核心与关键是逻辑数据库设计和物理数据库设计。逻辑数据库设计是根据用户要求和特定数据库管理系统的具体特点,以数据库设计理论为依据,设计数据库的全局逻辑结构和每个用户的局部逻辑结构。物理数据库设计是在逻辑结构确定之后,设计数据库的存储结构以及其他实现细节。3、数据库设计步骤:(1)需求分析,进行数据库设计首先必须准确了解与分析用户需求。(2)概念结构设计,以一种独立于数据库管理系统的逻辑描述方法来描述数据库的逻辑结构。(3)逻辑结构设计,将抽象的概念结构转换为所选用的DBMS支持的数据模型,并对其进行优化。(4)数据库物理设计,为逻辑数据模型选取一个最适合应用环境的物理结构。(5)数据库实施,建立数据库、编制与调试应用程序、组织数据入库、试运行。(6)数据库运行和维护,不断对数据库进行评价、调整与修改。4、数据库设计过程中需注意的问题:要充分调动用户积极性、充分考虑到系统的可扩充性、系统的可扩充性最终都是有一定限度的。5、DBA的主要职责:设计与定义数据库系统、帮助最终用户使用数据库系统、监督与控制数据库系统的使用和运行、改进和重组数据库系统,调优数据库系统的性能、转储与恢复数据库、重构数据库。第2章 关系数据库2.1、关系数据库概概述1、关系数据库:关系数据库系统是支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。2、关系数据结构:关系模型的数据结构非常单一,在用户看来,关系模型中数据的逻辑结构是一张扁平的二维的表。关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种联系。3、关系操作:采用集合操作方式,即操作的对象和结果都是集合。4、关系代数:用对关系的运算来表达查询要求的方式。5、关系演算:用谓词来表达查询要求的方式。2.2、关系数据结构1、域:一组具有相同数据类型的值的集合。2、候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其真子集不行,则称该属性组为候选码。3、主码:若一个关系有多个候选码,则选定其中一个为主码。4、主属性:候选码的诸属性称为主属性。5、非码属性:不包含在任何候选码中的属性,也称为非主属性。6、全码:关系模式的所有属性组是这个关系模式的候选码,称为全码。7、关系的三种类型:基本表、查询表、视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示。查询表是查询结果对应的表。视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。8、基本关系的六条性质:(1)每一列中的分量是同一类型的数据,来自同一个域。(2)不同的列可以出自同一个域,称其中的每一列为一个属性,属性名不能重复。(3)列的顺序无所谓。(4)行的顺序无所谓。(5)任意两个元组不能完全相同。(6)每一个分量必须是不可再分的数据项。9、关系模式:关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映像关系。2.3、关系的完整性1、关系的完整性:是对关系的某种约束条件。关系模型中可以有三种完整性约束:实体完整性、参照完整性、用户定义完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性,应该由关系系统自动支持。(1)实体完整性:一个基本关系通常对应现实世界的一个实体集。若属性A是基本关系R的主属性,则属性A不能取空值。(2)参照完整性:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码,并称基本关系R为参照关系,基本关系S为被参照关系。关系R与S不一定是不同的关系。此时,F取空值或等于S中某个元组的主码值。(3)用户定义的完整性:是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。2.4、关系代数1、并:设关系R和关系S具有相同的n个属性,且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成。2、差:设关系R和关系S具有相同的n个属性,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的元组组成。3、交:设关系R和关系S具有相同的n个属性,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成。4、广义笛卡尔积:两个分别为n个属性和m个属性的关系R和S的广义笛卡尔积是一个n+m列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R与S的广义笛卡尔积有k1*k2个元组。5、选择:又称限制,它是在关系R中选择满足给定条件的诸元组。选择是从行的角度进行的运算。6、投影:关系R上的投影是从R中选择出若干属性列组成新的关系。投影是从列的角度进行的运算。7、连接:它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。连接是从行和列的角度进行的运算。8、等值连接:连接运算中的连接运算符为“=”,从关系R与S的笛卡尔积中选取A,B属性值相等的元组。9、自然连接:一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。10、除:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上的投影的集合。除操作是同时从行和列的角度进行的运算。2.5、关系演算1、定额检索:ALPHA中,指定检索出元组的个数,方法是在W后括号中加上定额数量。2、元组变量:主要用于1、简化关系名。2、操作条件中使用量词时必须用元组变量。3、集函数:关系演算中提供了COUNT,TOTAL,MAX,MIN,AVG等集函数。4、域关系演算语言QBE:QBE是query by example的简称,其最突出的特点是它的操作方式。它是一种高度非过程化的基于屏幕表格的查询语言,用户通过终端屏幕编辑程序以填写表格的方式构造查询请求,而查询结果也是以表格形式显示,因此非常的直观,易学易用。2.6、关系数据库管理系统1、E.F.CODD对关系系统分类:(1)表式系统,这类系统仅支持关系数据结构,不支持集合级的操作。表式系统实际上不能算关系系统。倒排表列系统就属于这一类。(2)最小关系系统,满足关系数据库和支持选择、投影和自然连接运算。许多微机关系系统如FoxPro就属于这一类。(3)关系完备系统,这类系统支持关系数据结构和所有的关系代数操作。DB2、ORACLE就属于这一类。(4)全关系系统,这类系统支持关系模型的所有特征,特别是数据结构中域的概念,实体完整性和参照完整性。目前没有系统是全关系系统。第3章 关系数据库标准语言SQL3.1、SQL概述1、结构化查询语言:structured query language,简称SQL,是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制4个方面,是一个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言。2、SQL的主要特点:(1)综合统一。SQL语言集DDL、DML、DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期的全部活动,为数据库应用系统开发提供了良好的环境。(2)高度非过程化。SQL使用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。(3)面向集合的操作方式。SQL语言采用集合操作方式,查找、插入、删除、更新操作的对象和结果都是集合。(4)以同一种语法结构提供两种使用方式。SQL语言既是自含式语言,又是嵌入式语言,为用户提供了极大的灵活性和方便性。(5)语言简洁,易学易用。SQL语言语法简单,接近英语,易学易用。3.2、数据定义1、关系数据库:由模式、内模式、外模式组成,即关系数据库的基本对象是表、视图、索引。2、聚簇索引:是指索引项的顺序与表中记录的物理顺序一致的索引组织。用户可以在最常查询的列上建立聚簇索引以提高查询效率。一个基本表只能建立一个聚簇索引。经常更新的列不适合建立聚簇索引。3.3、查询1、单表查询:是指仅涉及一个数据库表的查询,比如选择一个表中的某些列值。2、全表查询:指无条件地把表中的全部信息都查询出来。3、ESCAPE:表示为换码字符,这样匹配字符串紧跟在后面的字符不再具有通配符的含义,而是取其本身含义。4、连接查询:一个查询同时涉及两个以上的表。连接查询是关系数据库中最主要的查询,主要包括等值连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件查询。5、卡氏积连接:是不带连接谓词的连接。两个表的卡氏积连接是两表中元组的交叉乘积,结果往往很大。6、自身连接:一个表与其自己进行连接。7、外连接:左外连接(连接符在连接运算符的右边)、右外连接(连接符在连接运算符的左边)。8、复合条件查询:WHERE子句中有多个条件的连接操作。9、查询块:一个SELECT-FROM-WHERE语句称为一个查询块。10、嵌套子查询:将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询。3.4、数据更新1、DELETE与DROP的区别:DELETE删除的是表中的元组,没有删除数据字典中表的定义;DROP删除了表的所有元组及其定义。3.5、视图1、视图:视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表。视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。视图一经定义就可以和基本表一样被查询、被删除,也可以在视图上定义新的视图。2、虚拟列:由于视图中并不实际存储数据,所以定义视图时可以根据应用的需要,设置一些派生属性列,称它们为虚拟列。3、分组视图:带有集函数和GROUP BY子句的查询视图。4、视图的消解:DBMS在执行视图的查询时,首先进行有效性检查,检查查询涉及的表、视图是否存在,如果存在,则从数据字典中取出查询涉及的视图的定义,把定义中的子查询和用户对视图的查询结合起来,转换为对基本表查询,然后再执行这个经过修正的查询。将对视图的查询转换为对基本表的查询的过程称为视图的消解。5、视图的用途:视图能到来许多好处:(1)视图能够简化用户的操作。视图机制使用户可以将注意力集中在他所关心的数据上。(2)视图使用户能以多种角度看待同一数据。视图机制能使不同的用户以不同的方式看待同一数据。(3)视图对重构数据库提供了一定程度的逻辑独立性。逻辑结构改变后,修改视图即可,不必修改应用程序。(4)视图能够对机密数据提供安全保护。对不同的用户定义不同的视图,使机密数据不出现在不应该出现的视图上。3.6、数据控制1、数据控制:也称数据保护,包括数据的安全性控制、完整性控制、并发控制和恢复。数据的完整性是指数据库中的数据的正确性与相容性。并发控制是指当多个用户并发地对数据库进行操作时,对他们加以控制、协调,以保证并发操作正确实行,并保证数据库的一致性。恢复是指当发生各种类型的故障,使数据库处于不一致状态时,将数据库恢复到一致状态的功能。安全性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏。3.7、嵌入式SQL1、数据库工作单元与源程序工作单元之间的通信包括:(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程。(2)主语言向SQL语句提供参数。(3)将SQL语句查询数据库的结果交主语言进一步处理。2、嵌入式SQL:将SQL语言嵌入到某种高级语言中,如C、COBOL等,利用高级语言的过程性结构弥补SQL语言在实现复杂应用方面的不足,在这种方式下使用的SQL语言称为嵌入式SQL,而嵌入SQL的高级语言称为宿主语言。3、SQLCA:SQL语句执行后,系统要反馈给应用程序若干信息,主要包括描述系统当前工作状态和运行环境的各种数据,这些信息将送到SQL通信区SQLCA中。应用程序从SQLCA中读取这些状态信息,据此决定接下来执行的语句。4、主变量:嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据。把在SQL语句中使用的主语言程序变量称为主变量。5、指示变量:是一个整形变量,用来指示所指主变量的值或条件。一个主变量可以附带一个任选的指示变量。6、游标:系统为用户开设的一个数据库缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。7、使用游标的步骤:以游标机制作为桥梁,将多条记录一次一条送至宿主程序处理,从而把对集合的操作转换为对单个记录的处理。使用游标的步骤是:(1)说明游标,用DECLARE语句为一条SELECT语句定义游标。(2)打开游标,用OPEN语句将上面定义的游标打开。(3)推进游标指针并取当前记录,用FETCH语句把游标推进。(4)关闭游标,用COLSE语句关闭游标,释放缓冲区。8、静态SQL语句:语句中主变量的个数与数据类型在预编译时都是确定的,只有主变量的值是程序运行过程中动态输入的。9、动态SQL语句:允许用户在程序运行时临时组装SQL语句,主要有三种形式:语句可变,允许用户在程序运行时临时输入完整的SQL语句;条件可变,对于查询语句,条件子句有一定的可变性;数据库对象、查询条件均可变。第4章 关系数据库设计理论4.1、数据依赖1、数据依赖:是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。最重要的有函数依赖(FD),多值依赖(MVD)。4.2、范式1、1NF:如果一个关系模式R的所有属性都是不可分的基本数据项,则R满足1NF。在任何一个关系数据库系统中,1NF是对关系模式的一个最起码的要求。不满足1NF的数据库模式不能称之为关系数据库。1NF存在的问题包括:插入异常、删除异常、数据冗余度大、修改复杂。2、2NF:若关系模式R满足1NF,并且每一个非主属性都完全函数依赖于R的码,则R满足2NF。2NF就是不允许关系模式的属性之间有这样的函数依赖x->y,其中x是码的真子集,y是非主属性。2NF存在的问题包括:插入异常、删除异常、数据冗余度大、修改复杂。3、3NF:如果关系模式R<U,F>中不存在候选码X、属性组Y以及非主属性Z使得X决定Y,Y决定Z和Y不决定X成立,则R满足3NF。3NF存在的问题包括:插入异常、删除异常、数据冗余度大、修改复杂。4、BCNF:在关系模式R中,如果每一个决定属性集都包含候选码,则R为BCNF。BCNF是修正的3NF。BCNF关系模式具有如下性质:(1)所有非主属性都完全函数依赖于每个候选码。(2)所有主属性都完全函数依赖于每个不包含它的候选码。(3)没有任何属性完全函数依赖于非码的任何一组属性。5、多值依赖:设R(U)是一个属性集U上的关系模式,X,Y和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z无关。多值依赖具有下列性质:对称性、传递性、函数依赖是多值依赖的特殊情况、多值依赖的有效性与属性集的范围有关等等。6、4NF:关系模式R<U,F>满足1NF,如果对于R的每个非平凡多值依赖X->->Y,X都含有候选码,则R满足4NF。4NF就是限制关系模式的属性之间不允许有非平凡函数依赖的多值依赖。4.3、关系模式的规范化1、关系模式的规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。2、关系模式规范化的步骤:(1)对1NF关系进行投影,消除原关系中非主属性对码的部分函数依赖,得到一组2NF关系。(2)对2NF关系进行投影,消除原关系中非主属性对码的传递函数依赖,得到一组3NF关系。(3)对3NF关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖,得到一组BCNF关系。(4)对BCNF关系进行投影,消除原关系中非平凡且非函数依赖的多值依赖,得到一组4NF关系。(5)对4NF关系进行投影,消除原关系中不是由候选码所蕴含的连接依赖,得到一组5NF关系。3、无损连接性:关系模式R被分解为若干个关系模式R1、R2、R3等等,若由分解所得的关系模式自然连接的结果与R相等,则称关系模式R的这个分解是具有无损连接性的。只有具有无损连接性的分解才能够保证不丢失信息。4、保持函数依赖:对R<U,F>,若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖F1所逻辑蕴涵,则称关系模式R的这个分解是保持函数依赖的。第5章 数据库保护5.1、安全性1、数据库的安全性:指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。数据库安全性控制的一般方法:(1)用户标识和鉴定,由系统提供一定的方式让用户标识自己的名字或身份。系统内部记录所有合法用户的标识,每次用户要求进入系统时,由系统将用户提供的身份标识与系统内部记录的合法用户标识进行核对,通过鉴定后提供机器使用权。(2)存取控制,为了保证用户只能访问他有权存取的数据,必须预先对每个用户定义存取权限。对于通过鉴定获得上机权的用户,系统根据他的存取权限定义他的各种操作请求进行控制,确保他只执行合法操作。(3)定义视图,在关系系统中,为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。(4)审计,使用一个专用文件或数据库,系统自动将用户对数据库的所有操作记录在上面,利用审计追踪的信息,就能重现导致数据库现有状况的一系列事件,以找出非法存取数据的人。(5)数据加密,对于高度敏感的数据,可以利用数据加密技术,以密码形式存储和传输数据。5.2、完整性1、完整性:指数据的正确性和相容性。完整性是防止合法用户使用数据库时向数据库中加入不合语义的数据。2、完整性约束条件:完整性约束条件是完整性控制机制的核心。完整性约束条件作用的对象可以有列级、元组级和关系级三种粒度。完整性约束条件涉及的这三类对象,其状态可以是静态的,也可以是动态的。完整性约束条件可以分为六类:(1)静态列级约束,就是对一个列的取值域的说明。(2)静态元组约束,就是规定组成一个元组的各个列之间的约束关系。(3)静态关系约束,常见静态关系约束有实体完整性、参照完整性、用户定义完整性、统计约束。(4)动态列级约束,是修改列定义或列值时应满足的约束条件。(5)动态元组约束,是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。(6)动态关系约束,就是加在关系变化前后状态上的限制条件。3、DBMS的完整性控制机制的三个方面的功能:(1)定义功能,即提供定义完整性约束条件的机制。(2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件。(3)如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。检查是否违背完整性约束的时机通常是一条语句执行完后立即检查,这类约束为立即执行的约束。在某些情况下,完整性检查需要延迟到整个事务执行结束后再进行,这类约束称为延迟执行的约束。4、实现DBMS参照完整性时需要考虑:(1)外码是否可以接受空值,外码是否能够取空值是依赖于应用环境的语义的。(2)删除被参照关系的元组时的考虑,有时需要删除被参照关系的某个元组,而参照关系又有若干元组的外码值与被删除的被参照关系的主码值相对应。这时可能采取的操作包括级联删除、受限删除、置空值删除。(3)修改被参照关系中主码的考虑,有时要修改被参照关系中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的主码值。这时可能采取的操作包括:级联修改、受限修改、置空值修改。5、触发器:一类靠事件驱动的特殊过程,一旦由某个用户定义,任何用户对该数据库的增删改操作均由服务器自动激活相应的触发子,在核心层进行集中的完整性控制。定义数据库触发器的语句是CREATE TRIGGER。5.3、并发控制1、回滚:即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,回滚到事务开始时的状态。2、事务:是数据库的逻辑工作单位,它是用户定义的一组操作序列。事务具有4个属性:原子性、一致性、隔离性和持续性。原子性是指一个事务是一个不可分割的工作单位,事务中的操作要么都做要么都不做。一致性是指事务必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性是指一个事务的执行不能被其他事务干扰。持续性是指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。2、并发操作带来的数据不一致性:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读、读脏数据。(1)丢失修改,指事务1与事务2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。(2)不可重复读,指事务1读取数据后,事务2执行更新(修改、删除、插入)操作,使事务1无法再现前一次读取结果,分别导致事务1发现数据(改变、消失、新增)。(3)读“脏”数据,是指事务1修改某一数据,并将其写回磁盘,事务2读取同一数据后,事务1由于某种原因被撤销,这时事务1已修改过的数据恢复原值,事务2读到的数据就与数据库中的不一致,不是正确的数据,又称为脏数据。产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。3、可串行化:几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这种并行调度策略为可串行化的调度。可串行是并行事务正确性的唯一准则。4、封锁:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。基本的封锁类型有排它锁(X锁)和共享锁(S锁)。排它锁又称为写锁。若事务T对数据对象加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。共享锁又称为读锁。若事务T对数据对象A加上S锁,则其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。5、封锁的粒度:封锁对象的大小。封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越大,系统中能够被封锁的对象就越少,并发度也就越小,但同时系统开销也越小;相反,封锁的粒度越小,并发度越高,但系统开销也就越大。6、封锁协议:在运用X锁和S锁这两种基本封锁,对一定粒度的数据对象加锁时,还需要约定一些规则,例如何时申请X锁或S锁、持锁时间、何时释放等,我们称这些规则为封锁协议。7、三级封锁协议:(1)一级封锁协议,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束和非正常结束。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。(2)二级封锁协议,在一级封锁协议的基础上,事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。二级封锁协议除了防止修改丢失,还可以进一步防止读“脏”数据。(3)三级封锁协议,在一级封锁协议的基础上,加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。三级封锁协议防止丢失修改、读“脏”数据、不可重复读。8、两段锁协议:它是为了保证并行调度可串行性而提供的封锁协议。两段锁协议规定,在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁,而且在释放一个封锁之后,事务不再获得任何其他封锁。所谓“两段”锁的含义是,事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段,第二阶段是释放封锁,也称为收缩阶段。9、死锁的预防:防止死锁的发生,其实就是要破坏死锁产生的条件,预防死锁通常有两种办法。(1)一次封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。一次封锁发虽然能有效地防止死锁的发生,但也存在问题。第一,一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。第二,数据库中数据是不断变化的,原来不要求封锁的数据,在执行过程中可能会变成封锁对象,所以很难事先确定每个事务所要封锁的数据对象,只能采取扩大封锁范围,将事务在执行过程中可能要封锁的数据对象全部加锁,这就进一步降低了并发度。(2)顺序封锁法顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。顺序封锁法同样可以有效地防止死锁,但也同样存在问题。第一,数据库系统中可封锁的数