第一章 数据库系统基本概念
要求、目标:
了解和掌握数据管理技术的发展阶段,数据描述的术语,数据抽象的四个级别,数据库管理系统的功能,数据库系统的组成。
一、 数据管理技术的发展
1. 分为四个阶段:人工管理阶段、文件系统阶段、数据库阶段和高级数据库阶段。
2. 数据库阶段数据管理的特点:
1) 采用数据模型表示复杂的数据结构。
2) 有较高的数据独立性。
3) 数据库系统为用户提供了方便的用户接口。
4) 提供四方面的数据控制功能:数据库的恢复、数据库的并发控制、数据的完整性、数据安全性。
5) 增加了系统的灵活性。
3. 数据库(DB):是长期存储在计算机内、有组织的、统一管理的相关数据的集合。
4. 数据库管理系统(DBMS):是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。
5. 数据库系统(DBS):是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。
二、 数据描述
1. 分为三个阶段:概念设计、逻辑设计和物理设计。
2. 概念设计中的术语:
1) 实体:客观存在,可以相互区别的事物称为实体。
2) 实体集:性质相同的同类实体的集合。
3) 属性:实体有很多特性,每一个特性称为属性。
4) 实体标识符(关键码或键):能惟一标识实体的属性或属性集。
以上概念均有类型和值之分。
3. 逻辑设计中的术语:
1) 字段(数据项):标记实体属性的命名单位称为字段或数据项。
2) 记录:字段的有序集合。
3) 文件:同一类记录的集合。
4) 关键码:能惟一标识文件中每个记录的字段或字段集。
以上概念均有类型和值之分。
4. 概念设计和逻辑设计中术语的对应关系:
概念设计 逻辑设计
实体 — 记录
属性 — 字段(数据项)
实体集 — 文件
实体标识符— 关键码
5. 实体之间联系的元数:与一个联系有关的实体集个数。常用二元联系。二元联系的类型有三种:一对一联系、一对多联系、多对多联系。
6. 一对一联系:如果实体集E1中每个实体至多和实体集E2中的一个实体有联系,反之亦然,那么实体集E1和E2的联系称为“一对一联系”,记为“1:1”。
7. 一对多联系:如果实体集E1中每个实体与实体集E2中任意个(零个或多个)实体间有联系,而E2中每个实体至多和E1中一个实体有联系,那么称E1对E2的联系是“一对多联系”,记为“1:N”。
8. 多对多联系:如果实体集E1中每个实体可以与实体集E2中任意个(零个或多个)实体间有联系,反之亦然,那么称E1和E2的联系是“多对多联系”,记为“M:N”。
三、 数据抽象的级别
1. 数据模型:描述数据库的结构和定义,对现实世界的数据进行抽象。
2. 从现实世界的信息到数据库存储的数据以及用户使用的数据是一个逐步抽象过程,根据数据抽象的级别定义了四种模型:概念模型、逻辑模型、外部模型和内部模型。
3. 概念模型:表达用户需求观点的数据全局逻辑结构的模型。
4. 逻辑模型:表达计算机实现观点的DB全局逻辑结构的模型。
5. 外部模型:表达用户使用观点的DB局部逻辑结构的模型。
6. 内部模型:表达DB物理结构的模型。
7. 数据抽象的过程、即数据库设计的过程具体步骤:
1) 根据用户需求,设计数据库的概念模型;
2) 根据转换规则,把概念模型转换成数据库的逻辑模型;
3) 根据用户的业务特点,设计不同的外部模型,给程序员使用;
4) 数据库实现时,要根据逻辑模型设计其内部模型。
通常分为概念设计、逻辑设计(2和3步)和物理设计三个阶段。
8. 常用的概念模型是实体联系(ER)模型,ER模型主要用ER图来表示。
9. 逻辑模型的分类:层次模型、网状模型、关系模型等。
10. 层次模型:用树型(层次)结构表示实体及实体间联系的数据模型。
11. 1969年,美国IBM公司的IMS系统是典型的层次模型系统。
12. 网状模型:用有向图结构表示实体及实体间联系的数据模型。
13. 1969年,CODASYL组织提出DBTG报告中的数据模型是网状模型的主要代表。
14. 关系模型:是由若干个关系模式组成的集合。关系模式即记录类型,它的实例称为关系,每个关系实际上是一张二维表格。
15. 1970年,美国IBM公司的E.F.Codd连续发表论文,提出关系模型,奠定了关系数据库的理论基础。关系数据库是目前的主流数据库。
16. 外部模型中的模式称为视图。
17. 三级模式:
从用户(或应用程序)到数据库之间,DB的数据结构描述有三个层次:
1)外模式:用户与数据库系统的接口,是用户用到的那部分数据的描述。外模式由若干个记录类型组成。
2)逻辑模式:是数据库中全部数据的整体逻辑结构的描述。
3)内模式:是数据库在物理存储方面的描述。
注意:外模式是逻辑模式的子集。
18. 两级映像:
1)外模式/逻辑模式映像:存在于外模式和逻辑模式之间,用于定义外模式和逻辑模式之间的对应性。
2)逻辑模式/内模式映像:存在于逻辑模式和内模式之间,用于定义逻辑模式和内模式之间的对应性。
19. 数据库系统的三级模式、两级映像结构使数据库系统达到了高度的数据独立性。
20. 数据独立性:是指应用程序与数据库的数据结构之间相互独立,在修改数据结构时,尽可能不修改应用程序。分为逻辑数据独立性和物理数据独立性。
21. 逻辑数据独立性:如果数据库的逻辑模式要修改,那么只要对外模式/逻辑模式映像作相应的修改,可以使外模式和应用程序尽可能保持不变。这样就认为数据库达到了逻辑数据独立性。
22. 物理数据独立性:如果数据库的内模式要修改,即数据库的物理结构有所变化,那么只要对逻辑模式/内模式映像作相应的修改,可以使逻辑模式尽可能保持不变。也就是对内模式的修改尽量不影响逻辑模式,当然对外模式和应用程序的影响更小,这样就认为数据库达到了物理数据独立性。
四、 数据库管理系统(DBMS)
1.DBMS的主要功能:数据库的定义功能(DBMS提供DDL定义数据库的三级模式、两级映像等)、数据库的操纵功能(DBMS提供DML实现对数据的操作,基本的数据操作有检索和更新两类)、数据库的保护功能、数据库的维护功能、数据字典。
五、 数据库系统(DBS)
1.DBS的组成:是数据库、硬件、软件和数据库管理员的集合体。
2.软件包括DBMS、OS、各种主语言和应用开发支撑软件等程序。其中,DBMS是DBS的核心软件,要在OS支持下才能工作。
3.数据库管理员(DBA):是控制数据整体结构的一组人员,负责DBS的正常运行,承担创建、监控和维护数据库结构的责任。
第二章 数据库设计和ER模型
要求、目标:
了解和掌握数据库应用系统设计的全过程,掌握ER模型和关系模型的基本概念,掌握概念设计中ER模型的设计方法,掌握逻辑设计中ER模型向关系模型转换的方法。
一、数据库系统生存期
1.数据库系统生存期:数据库应用系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间。
2.数据库系统生存期分七个阶段:规划、需求分析、概念设计、逻辑设计、物理设计、实现、运行维护。
3.规划阶段三个步骤:系统调查、可行性分析、确定数据库系统总目标。
4.需求分析阶段:主要任务是系统分析员和用户双方共同收集数据库系统所需要的信息内容和用户对处理的需求,并以需求说明书的形式确定下来。
5.概念设计阶段:产生反映用户单位信息需求的概念模型。与硬件和DBMS无关。
6.逻辑设计阶段:将概念模型转换成DBMS能处理的逻辑模型。外模型也将在此阶段完成。
7.物理设计阶段:对于给定的基本数据模型选取一个最适合应用环境的物理结构的过程。数据库的物理结构主要指数据库的存储记录格式、存储记录安排和存取方法。
8.数据库的实现:包括定义数据库结构、数据装载、编制与调试应用程序、数据库试运行。
二、ER模型的基本概念
1. ER模型的基本元素是:实体、联系和属性。
2. 实体:是一个数据对象,指应用中可以区别的客观存在的事物。
实体集:是指同一类实体构成的集合。
实体类型:是对实体集中实体的定义。
一般将实体、实体集、实体类型统称为实体。
3. 联系:表示一个或多个实体之间的关联关系。
联系集:是指同一类联系构成的集合。
联系类型:是对联系集中联系的定义。
一般将联系、联系集、联系类型统称为联系。
4. 同一个实体集内部实体之间的联系,称为一元联系;两个不同实体集实体之间的联系,称为二元联系,以此类推。
5. 属性:实体的某一特性称为属性。在一个实体中,能够惟一标识实体的属性或属性集称为实体标识符。
6. ER模型中,方框表示实体、菱形框表示联系、椭圆形框表示属性、实体与联系、实体与其属性、联系与其属性之间用直线连接。实体标识符下画横线。联系的类型要在直线上标注。注意:联系也有可能存在属性,但联系本身没有标识符。
例:假设一个学生可选多门课程,而一门课程又有多个学生选修,一个教师可讲多门课程,一门课程至多只有一个教师讲授。ER图如下:
7. 概念设计三个步骤:设计局部ER模型、设计全局ER模型和全局ER模型的优化。
三、关系模型的基本概念
1.关系模型的定义:用二维表格表示实体集,用关键码表示实体之间联系的数据模型。
2.在关系模型中,字段称为属性,字段值称为属性值,记录类型称为关系模式。记录称为元组,元组的集合称为关系或实例。有时习惯称关系为表或表格,元组为行,属性为列。关系中属性个数称为元数,元组个数称为基数。
3.关键码(简称键):由一个或多个属性组成。
4.超键:在关系中能惟一标识元组的属性集称为关系模式的超键。
5.候选键:不含有多余属性的超键。
6.主键:用户选作元组标识的候选键。一般如不加说明,键是指主键。
7.外键:如果模式R中属性集K是其他模式的主键,那么K在模式R中称为外键。
8.值域:关系中每一个属性都有一个取值范围,称为属性的值域。每一个属性对应一个值域,不同的属性可对应于同一值域。
9.关系的定义:关系是一个属性数目相同的元组的集合。
10.关系的性质:关系是一种规范化了的二维表格。
1)关系中每一个属性值都是不可分解的;
2)关系中不允许出现重复元组;
3)关系没有行序;
4)元组中的属性在理论上也是无序的,但使用时按习惯考虑列的顺序。
11.关系数据库中的数据与更新操作必须遵循三类完整性规则:实体完整性规则、参照完整性规则、用户定义的完整性规则。
12.实体完整性规则:要求关系中元组在组成主键的属性上不能有空值。
13.参照完整性规则:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2关系中,K的取值只允许两种可能,或者为空值,或者等于R1关系中某个主键值。这条规则的实质是“不允许引用不存在的实体”。其中,R1称为参照关系;R2称为依赖关系。
注意:这条规则在具体使用时,有三点变通:
1)外键和相应的主键可以不同名,只要定义在相同值域上即可;
2)R1和R2可以是同一个关系模式,此时表示了同一个关系中不同元组之间的联系;
3)外键值是否允许空,应视具体问题而定。
14.用户定义的完整性规则:用户针对具体的数据约束,设置的完整性规则,由系统来检验实施。
四、ER模型到关系模型的转换
1.ER图转换成关系模式集的算法:
1)实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键。
2)联系类型的转换:主要掌握二元联系类型的转换。
a) 若实体间联系是1:1,可以在两个实体类型转换成的关系模式中任意一个关系模式的属性中加入另一个关系模式的键(作为外键)和联系类型的属性。
b) 若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键(作为外键)和联系类型的属性。
c) 若实体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键(作为外键)加上联系类型的属性,而键为两端实体键的组合。
例:下面是教学管理的一个可能的ER图。图中,有三个实体类型:系、教师和课程;有四个联系类型:主管、聘用、开设和任教。根据转换算法,把该图转换成关系模式集的步骤如下:
第一步:把三个实体类型转换成三个关系模式(注意关系模式的表示方法):
系(系编号,系名,电话)
教师(教工号,姓名,性别,职称)
课程(课程号,课程名,学分)
第二步:对于1:1联系,可以在“系”模式中加入教工号(教工号为外键)。
对于1:N联系“聘用”,可以在“教师”模式中加入系编号和聘期两个属性(系编号为外键);
对于1:N联系“开设”,可以在“课程”模式中加入系编号(系编号为外键)。这样第一步得到的三个模式改变成如下形式(注意:外键通常使用波浪线表示):
系(系编号,系名,电话,主管人的教工号)
教师(教工号,姓名,性别,职称,系编号,聘期)
课程(课程号,课程名,学分,系编号)
第三步:对于M:N联系“任教”,则生成一个新的关系模式:
任教(教工号,课程号,教材)
这样,转换成的四个关系模式如下:
系(系编号,系名,电话,主管人的教工号)
教师(教工号,姓名,性别,职称,系编号,聘期)
课程(课程号,课程名,学分,系编号)
任教(教工号,课程号,教材)
2.采用ER模型的逻辑设计步骤
1)导出初始关系模式集:把概念设计的结果(即全局ER模型)转换成初始关系模式集。
2)规范化处理
3)模式评价
4)模式修正
5)设计外模式
第三章 关系模式设计理论
要求、目标:
了解关系数据库规范化理论及其在数据库设计中的作用,重点是函数依赖和范式,要求掌握这些概念并能运用它们来进行模式分解。
一、关系模式的设计准则
1.数据冗余:同一个数据在系统中多次重复出现。
2.关系模式设计不当引起的异常问题:数据冗余、操作异常(包括修改异常、插入异常和删除异常)
3.关系模式的非形式化设计准则
1)关系模式的设计应尽可能只包含有直接联系的属性,不要包含有间接联系的属性。也就是,每个关系模式应只对应于一个实体类型或一个联系类型。
2)关系模式的设计应尽可能使得相应关系中不出现插入异常、删除和修改等操作异常现象。
3)关系模式的设计应尽可能使得相应关系中避免放置经常为空值的属性。
4)关系模式的设计应尽可能使得关系的等值连接在主键和外键的属性上进行,并且保证以后不会生成额外的元组。
4.习惯使用的一些符号:
1)英文字母表首部的大写字母“A,B,C,…”表示单个的属性。
2)英文字母表尾部的大写字母“…,U,V,W,X,Y,Z”表示属性集。
3)大写字母R表示关系模式,小写字母r表示其关系。
4)关系模式的简化表示方法:R(A,B,C,…)或R(ABC…)
5)属性集X和Y的并集简写为XY。
二、函数依赖
1.函数依赖(FD)的定义:设有关系模式R(U),X和Y是属性集U的子集,函数依赖是形成X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FD X→Y在关系模式R(U)中成立。
说明: 1)t[X]表示元组t在属性集X上的值,其余类同。
2)X→Y读作“X函数决定Y”或“Y函数依赖于X”。
3)FD是对关系模式R的一切可能的关系r定义的。对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,即有一个X值就有一个Y值与之对应,或者说Y值由X值决定。
例:设关系模式R(ABCD),在R的关系中,属性值间有这样的联系:A值与B值有一对多联系;C值与D值之间有一对一联系。试根据这些规则写出相应的函数依赖。
B→A C→D D→C
2.如果X→Y和Y→X同时成立,则可记为:X↔Y
3.FD的逻辑蕴涵:设F是在关系模式R上成立的函数依赖的集合,X→Y是一个函数依赖。如果对于R的每个满足F的关系r也满足X→Y,那么称F逻辑蕴涵X→Y,记为F|=X→Y。
4.设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包,记为F+。即F+={X→Y | F|=X→Y }
5.FD的推理规则(Armstrong公理)
设U是关系模式R的属性集,F是R上成立的只涉及到U中属性的函数依赖集。
1) 自反性:若YÍXÍU,则X→Y在R上成立。
2) 增广性:若X→Y在R上成立,且ZÍU,则XZ→YZ在R上成立。
3) 传递性:若X→Y和Y→Z在R上成立,则X→Z在R上成立。
6.FD的其他五条推理规则:
1)合并性:{X→Y,X→Z} |= X→YZ
2)分解性:{X→Y,ZÍY } |= X→Z
3)伪传递性:{X→Y,WY→Z } |= WX→Z
4)复合性:{X→Y,W→Z } |= WX→YZ
5){X→Y,W→Z } |= X∪(W-Y)→YZ
7.对于FD X→Y,如果YÍX,那么称X→Y是一个“平凡的FD”,否则称为“非平凡的FD”。通常研究非平凡FD。
例:X→X,X→φ, φ→φ,XY→X都是平凡函数依赖;X→XY则是非平凡函数依赖。
8.函数依赖是关键码概念的推广。
设关系模式R的属性集是U,X是U的一个子集。如果X→U在R上成立,那么称X是R的一个超键。如果X→U在R上成立,但对于R的任一真子集X1都有X1→U不成立,那么称X是R的一个候选键。在关系模式设计理论中,键通常是指候选键。
9.属性集的闭包
10.设F是属性集U上的FD集,X上U的子集,那么(相对于)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合:X+={属性A | F|=X→A}
11.X→Y能用FD推理规则推出的充分必要条件是YÍ X+,从而避开求F+,使问题得到简化。
12.求属性集X相对于FD集F的闭包X+的算法:
X+=X;
do {oldX+:=X+;
for F中每个FD Y→Z do
if YÍ X+ then X+:=X+∪Z;
}while(X+!=oldX+);
例:属性集U为ABCD,FD集为{A→B,B→C,D→B}。求A+、(AD)+和
(BD)+
A+=ABC
(AD)+=ABCD
(BD)+=BCD
13.如果关系模式R(U)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集。
三、关系模式的分解特性
1.关系模式的分解:
设有关系模式R(U),属性集为U,而R1,R2,…,Rk都是U的子集,并且有R1∪R2∪…∪Rk=U。关系模式R1,R2,…,Rk的集合用ρ表示,ρ={R1,R2,…,Rk}。用ρ代替R的过程称为关系模式的分解。这里ρ称为R的一个分解,也称为数据库模式。
一般把上述的R称为泛关系模式,R对应的当前值称为泛关系。数据库模式ρ对应的当前值称为数据库实例,它由数据库模式中的每一个关系模式的当前值组成。我们用σ=<r1,r2,…,rk>表示。
因此,在计算机中数据并不是存储在泛关系r中,而是存储在数据库σ中。
2.σ和r是否等价,即是否表示同样的数据。这个问题用“无损分解”特性表示。
在模式R上有一个FD集F,在ρ的每一个模式Ri上有一个FD集Fi,那么{F1,F2,…,Fk}与F是否等价。这个问题用“保持依赖”特性表示。
四、范式
1.范式:衡量关系模式好坏的标准。
2.数据库设计中最常用的是3NF和BCNF。
3.第一范式(1NF):如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式的模式。满足1NF的关系称为规范化的关系,否则称为非规范化的关系。1NF是关系模式应具备的最起码的条件。
4.局部依赖和完全依赖:对于FD W→A,如果存在XÌW有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。
5.主属性和非主属性:如果A是关系模式R的候选键中的属性,那么称A是R的主属性;否则称A是R的非主属性。
6.第二范式(2NF):如果关系模式是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。
7.分解成2NF模式集的算法:
设关系模式R(U),主键是W,R上还存在FD X→Z,并且Z是非主属性和X
ÌW,那么W→Z就是一个局部依赖。此时应把R分解成两个模式:
R1(XZ),主键是X;
R2(Y),其中Y=U-Z,主键仍是W,外键是X(参照R1)。
如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中的每一个关系模式都是2NF为止。
8.如果X→Y,Y→A,且Y→X和AÍY,那么称X→A是传递依赖(A传递依赖于X)。
9.第三范式(3NF):如果关系模式R是2NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三范式(3NF)的模式。
10.分解成3NF模式集的算法:
设关系模式R(U),主键是W,R上还存在FD X→Z。并且Z是非主属性,ZÍX,X不是候选键,这样W→Z就是一个传递依赖。此时应把R分解成两个模式:
R1(XZ),主键是X;
R2(Y),其中Y=U-Z,主键仍是W,外键是X(参照R1)。
如果R1和R2还不是3NF,则重复上述过程,一直到数据库模式中的每一个关系模式都是3NF为止。
11.如果R是3NF模式,那么R也是2NF模式。如果R是2NF模式,那么R也是1NF模式。
12.BC范式(BCNF):如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。
13.如果R是BCNF模式,那么R也是3NF模式。
14.分解成BCNF模式集的算法能保持无损分解,但不一定能保持FD集。而分解成3NF模式集的算法既能保持无损分解,又能保持FD集。
15.关系模式由1NF分解为2NF,消除了非主属性对键的局部函数依赖;由2NF分解为3NF,消除了非主属性对键的传递函数依赖;而BCNF则消除了每一属性对键的传递函数依赖。
16.关系模式设计理论主要用于数据库的逻辑设计过程中。
第四章 关系运算
要求、目标:
理解关系模型的运算理论,了解关系演算和查询优化,熟练掌握关系代数运算,掌握关系代数表达式的构造方法。
一、简介
1.关系模型的三个组成部分:数据结构、数据操纵和数据完整性规则。
2.数据结构:数据库中全部数据及其相互联系都被组织成“关系”(二维表格)的形式。关系模型基本的数据结构是关系。
3.数据操纵:关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。关系运算分成关系代数和关系演算两类。
4.数据完整性规则:数据库中数据必须满足实体完整性、参照完整性和用户定义的完整性等三类完整性规则。
5.关系数据库的数据操纵语言(DML)的语句分成查询语句和更新语句两大类。查询语句用于描述用户的各种检索要求;更新语句用于描述插入、删除、修改等操作。前者是基础。
6.关系查询语言分两类:关系代数语言(查询操作以集合操作为基础)和关系演算语言(查询操作以谓词演算为基础)
二、关系代数
1.关系代数中的操作可以分为两类:
1)传统的集合操作:并、差、交、笛卡儿积(乘法)、笛卡儿积的逆运算(除法)
2)扩充的关系操作:投影、选择、连接等。
2.关系代数的五个基本操作:并、差、笛卡儿积、投影和选择。
3.并:设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。
4.差:设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S。
5.笛卡儿积:设关系R和S的元数分别为r和s,R和S的笛卡儿积是一个(r+s)元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组。若R有m个元组,S有n个元组,则R×S有m×n个元组。
6.投影:对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。例:π3,1(R) 下标也可以用属性名表示。
7.选择:对关系做水平分割,即选取符合条件的元组。表示为:σF(R)从R中挑选满足公式F为真的元组所构成的集合。
F中有两种成分:
1)运算对象:常数(用引号括起来)、元组分量(属性名或列的序号)
2)运算符:算术比较运算符(<、≤、>、≥、=、≠、也称为θ符)、逻辑运算符(∧、∨、¬)
例:两个关系R和S如下:求R∪S、R-S、R×S、πC,A(R)、σB>’4’(R)。
关系R 关系S
A |
B |
C |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
2 |
4 |
6 |
4 |
5 |
6 |
答案:
A |
B |
C |
1 |
2 |
3 |
7 |
8 |
9 |
R∪S R-S
A |
B |
C |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
2 |
4 |
6 |
R×S πC,A(R)
R.A |
R.B |
R.C |
S.A |
S.B |
S.C |
1 |
2 |
3 |
2 |
4 |
6 |
1 |
2 |
3 |
4 |
5 |
6 |
4 |
5 |
6 |
2 |
4 |
6 |
4 |
5 |
6 |
4 |
5 |
6 |
7 |
8 |
9 |
2 |
4 |
6 |
7 |
8 |
9 |
4 |
5 |
6 |
C |
A |
3 |
1 |
6 |
4 |
9 |
7 |
σB>’4’(R)
A |
B |
C |
4 |
5 |
6 |
7 |
8 |
9 |
8.交:设关系R和S具有相同的关系模式,R和S的交是由属于R又属于S的元组构成的集合,记为R∩S。R∩S=R-(R-S)或R∩S=S-(S-R)
9.连接:从关系R和S的笛卡儿积中选取属性值满足某一θ操作的元组,记为R∞S i和j分别是关系R和S中的第i个和第j个属性名或序号。
连接是由笛卡儿积和选择操作组合而成。
如果θ为“=”,该连接操作称为“等值连接”。
例:已知关系R和S,求R∞S
关系R 关系S
A |
B |
C |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
2 |
9 |
D |
E |
2 |
4 |
5 |
6 |
7 |
8 |
答案:R∞S
A |
B |
C |
D |
E |
1 |
2 |
3 |
2 |
4 |
4 |
5 |
6 |
5 |
6 |
7 |
2 |
9 |
2 |
4 |
10.自然连接:公共属性只出现一次的等值(公共属性值全部相等)连接。
记为:R∞S
一般自然连接使用在R和S有公共属性的情况中。如果两个关系没有公共属性,那么其自然连接就转化为笛卡儿积操作。
例:已知关系R和S,求R∞S
关系R 关系S
A |
B |
C |
2 |
4 |
6 |
3 |
5 |
7 |
7 |
4 |
6 |
5 |
4 |
7 |
B |
C |
D |
5 |
7 |
3 |
4 |
6 |
2 |
5 |
7 |
9 |
5 |
6 |
3 |
答案:
A |
B |
C |
D |
2 |
4 |
6 |
2 |
3 |
5 |
7 |
3 |
3 |
5 |
7 |
9 |
7 |
4 |
6 |
2 |
11.除法:设关系R(X,Y)和关系S(Y,Z),则R÷S定义为:
R(X,Y)÷S(Y,Z)=∏X(R)-∏X((∏X(R)×∏Y(S))-R)
例:关系R是学生选修课程的情况,COURSE表示课程情况,而操作R÷COURSE表示至少选修COURSE中列出课程的学生名单。
R COURSE
S# |
SNAME |
C# |
S1 |
BAO |
C1 |
S1 |
BAO |
C2 |
S1 |
BAO |
C3 |
S1 |
BAO |
C4 |
S2 |
GU |
C1 |
S2 |
GU |
C2 |
S3 |
AN |
C2 |
S4 |
LI |
C4 |
S4 |
LI |
C2 |
C# |
CNAME |
C2 |
OS |
C4 |
MIS |
R÷COURSE
S# |
SNAME |
S1 |
BAO |
S4 |
LI |
12.关系代数表达式:由五个基本操作经过有限次复合的式子称为代数表达式。这种表达式的运算结果仍是一个关系。可以用关系代数表达式表示各种数据查询操作。
例:教学数据库中的四个关系如下:
教师关系T(T#,TNAME,TITLE)
课程关系C(C#,CNAME,T#)
学生关系S(S#,SNAME,AGE,SEX)
选课关系SC(S#,C#,SCORE)
使用关系代数表达式表达下列每个查询语句。
1) 检索学习课程号为C2课程的学生学号与成绩。
πS#,SCORE(σC#=‘C2‘ (SC))或π1,3(σ2=‘C2‘ (SC))
2)检索学习课程号为C2课程的学生学号和姓名。
πS#,SNAME(σC#=‘C2‘ (S∞SC))
3)检索至少选修LIU老师所授课程中一门课程的学生学号与姓名。
πS#,SNAME(σTNAME=‘LIU‘ (S∞SC∞C∞T))
4)检索选修课程号为C2或C4课程的学生学号。
πS#(σC#=‘C2‘ ∨ C#=‘C4‘ (SC))
5)检索至少选修课程号为C2和C4课程的学生学号。
π1(σ1=4 ∧ 2=‘C2‘ ∧ 5=‘C4‘ (SC×SC))
6)检索不学C2课程的学生姓名与年龄。
πSNAME,AGE(S)-πSNAME,AGE(σC#=‘C2‘ (S×SC))
7)检索学习全部课程的学生姓名。
πSNAME(S∞(πS#,C#(SC)÷πC#(C)))
8)检索所学课程包含学号为S3学生所学课程的学生学号。
πS#,C#(SC)÷πC#(σS#=‘S3‘ (SC))
总结:查询语句的关系代数表达式的一般形式是:
π…(σ…(R×S))或π…(σ…(R∞S))
即首先把查询涉及到的关系取来,执行笛卡儿积或自然连接操作得到一张大的表格,然后对大表格执行水平分割(选择操作)和垂直分割(投影操作)。
但这种形式不适用于否定或全部值的查询。这时要用差或除法操作。
13.外连接:如果R和S做自然连接时,把原该舍弃的元组也保留在新关系中,同时在这些元组新增加的属性上填上空值(Null),这种操作称为“外连接”操作。
14.左外连接:如果R和S做自然连接时,只把R中原该舍弃的元组放到新关系中,那么这种操作称为“左外连接”操作。
15.右外连接:如果R和S做自然连接时,只把S中原该舍弃的元组放到新关系中,那么这种操作称为“右外连接”操作。
16.外部并:两个关系R和S做并操作时,如果它们的关系模式不同,构成的新关系的属性由R和S的所有属性组成(公共属性只取一次),新关系的元组由属于R或属于S的元组构成,同时元组在新增加的属性上填上空值,那么这种操作称为“外部并”操作。
三、关系演算
关系演算又可分为元组关系演算和域关系演算,前者以元组为变量,后者以属性(域)为变量。
四、关系代数表达式的优化
1.目的:提高系统效率。
2.三条启发式规则:
1)尽可能早地执行选择操作;
2) 尽可能早地执行投影操作;
3) 避免直接做笛卡儿积,把笛卡儿积操作之前和之后的一连串选择和投影合并起来一起做。
第五章 SQL语言
要求、目标:
SQL语言是关系数据库的标准语言,是本课程的一个重点。本章总的要求是:全面掌握、深刻理解、熟练应用。
要求了解嵌入式SQL和存储过程,掌握SQL定义语句的应用,熟练掌握SQL查询语句、视图、SQL更新语句的应用。
一、SQL简介
1.SQL:结构化查询语言,关系数据库的标准语言。
2.SQL数据库的体系结构
SQL数据库的体系结构基本上也是三级结构,但术语与传统的关系模型术语不同。在SQL中,关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。
SQL数据库的体系结构要点:
1)一个SQL模式是表和约束的集合。
2)一个表由行集构成,一行是列的序列,每列对应一个数据项。
3)表有三种类型:基本表、视图和导出表。
基本表:实际存储在数据库中的表。
视图:由若干基本表或其他视图构成的表的定义。
导出表:执行了查询时产生的表。
4)一个基本表可以跨一个或多个存储文件,一个存储文件也可以存放一个或多个基本表。每个存储文件与外部存储器上一个物理文件对应。
5)用户可以用SQL语句对基本表和视图进行查询等操作。在用户看来,两者一样,都是表。
6) SQL语句可嵌在C、FORTRAN等主语言的程序中使用,也可在交互环境下供终端用户使用。
3.SQL的组成
核心SQL主要有四个部分:
1)数据定义语言,即DDL,用于定义SQL模式、基本表、视图、索引等结构。
2)数据操纵语言,即SQL DML。数据操纵分成数据查询和数据更新两类。而数据更新又分成插入、删除和修改三种操作。
3)嵌入式SQL语言的使用规定
4)数据控制语言,即SQL DCL,这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容。
4.SQL的特点
1)SQL具有十分灵活和强大的查询功能。
2)SQL不是一个应用开发语言,它只提供对数据库的操作功能。但SQL既可作为交互式语言独立使用,也可作为子语言嵌入在主语言中使用,成为应用开发语言的一部分。
3)SQL是国际标准语言,有利于各种数据库之间交换数据,有利于程序的移植,有利于实现高度的数据独立性,有利于实现标准化。
4)SQL完成核心功能只用9个英语动词,语法结构接近英语,容易学习和使用。
第六章 数据库管理
要求、目标:
了解数据库的恢复、数据库的安全性,熟悉事务、数据库的并发控制、数据库的完整性。
一、事务
1.DBMS对DB的监控,称为数据库的管理,也称为数据库的保护。它分为四个方面:数据库的恢复、并发控制、完整性控制和安全性控制。
2.事务:是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。DBS运行的最小逻辑工作单位是“事务”,所有对数据库的操作,都要以事务作为一个整体单位来执行或撤销。
3.一个事务由应用程序中的一组操作序列组成,在程序中,事务以BEGIN TRANSACTION开始,以COMMIT语句或ROLLBACK语句结束。COMMIT语句表示事务执行成功地结束(提交);ROLLBACK语句表示事务执行不成功地结束(应该“回退)。
4.事务的ACID性质:
1)原子性(Atomicity):一个事务对数据库的所有操作,是一个不可分割的工作单元。这些操作要么全部执行,要么什么也不做。
2)一致性(Consistency):一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏。
3)隔离性(Isolation):在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样。
4)持久性(Durability):一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中,不会丢失。
二、数据库的恢复
1.数据库的可恢复性:系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态,DBMS的这种能力称为可恢复性。
2.为保证可恢复性,平时应做好转储和建立日志。日志库记录事务的开始、结束标志,记录事务对数据库的每一次插入、删除和修改前后的值。
3.常见故障分三类:事务故障、系统故障(硬件故障、软件(DBMS、OS或应用程序)错误、掉电等,不破坏数据库)、介质故障。
事务故障和系统故障的恢复由系统自动进行,而介质故障的恢复需要DBA配合执行。系统故障通常称为软故障,介质故障通常称为硬故障。
三、数据库的并发控制
1.并发操作带来的三个问题:丢失更新、读脏数据(把未提交的随后被撤销的数据称为“脏数据”)、不可重复读。采用“封锁”技术解决这些问题。
2.锁:是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,锁描述了该数据项的状态。通常在数据库中每个数据项都有一个锁。
3.锁的主要类型:
1)排他锁(X锁、写锁):如果事务T对某个数据R(可以是数据项、记录、数据集乃至整个数据库)实现了X锁,那么在T对数据R解除封锁之前,不允许其他事务再对该数据加任何类型的锁,这种锁称为“X锁”。
2)共享锁(S锁、读锁):如果事务T对某数据加上S锁后,仍允许其他事务再对该数据加S锁,但在对该数据的所有S锁都解除之前决不允许任何事务对该数据加X锁。
4.封锁的粒度:封锁对象的大小。封锁粒度与系统的并发度成反比。
5.调度:事务的执行次序。如果多个事务依次执行,称为事务的串行调度;如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。
6.可串行化调度:每个事务中,语句的先后顺序在各种调度中始终保持一致。在这个前提下,如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么,这个并发调度称为“可串行化的调度”,否则是“不可串行化的调度。”
四、数据库的完整性
1.数据库的完整性:是指数据的正确性、有效性和相容性,防止错误的数据进入数据库。
1)正确性:是指数据的合法性。
2)有效性:是指数据是否属于所定义的有效范围。
3)相容性:是指表示同一事实的两个数据应相同,不一致就是不相容。
2、SQL中的完整性约束
1)域约束
例:CREATE DOMAIN COLOR CHAR(6) DEFAULT ‘???’
CONSTRAINT VALID_COLORS
CHECK (VALUE IN(‘Red’,‘Yellow’,‘Blue’,‘Green’,‘???’))
定义完后,该域便可作为一种数据类型使用,如用在CREATE TABLE中。
2)基本表约束
主要有三种形式:候选键定义、外键定义和检查约束定义。这些定义都可在前面加CONSTRAINT <约束名>,也可以省略。
候选键的定义:UNIQUE(<列名序列>)或PRIMARY KEY(<列名序列>)
UNIQUE方式:表示值惟一;
PRIMARY KEY:值惟一,并且自动设为非空。一个基本表只能指定一个主键。
检查约束的定义:
例:CHECK(AGE>=18 AND AGE<=20)
3)断言:如果完整性约束牵涉面较广,与多个关系有关,或者与聚合操作有关,应使用断言。
3.触发器:是一个能由系统自动执行对数据库修改的语句。有时也称为主动规则(相对于前面的各种被动约束机制)。
五、数据库的安全性
1.数据库的安全性:是指保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏。
2.SQL中的安全性机制:
提供四个:视图、权限、角色和审计
1)视图:使系统具有三个优点:数据安全性(用来对无权用户屏蔽数据)、逻辑数据独立性和操作简便性。视图不占存储空间。
2)权限:授权语句GRANT、回收语句REVOKE
3)角色:
在SQL中,用户是实际的人或是访问数据库的应用程序。而角色是一组具有相同权限的用户,实际上角色是属于目录一级的概念。
用户和角色之间存在多对多联系,即一个用户可以参与多个角色,一个角色也可授予多个用户。
4)审计:
用于安全性目的的数据库日志,称为审计追踪。
第七章 SQL Server 2000简介及应用
要求、目标:
了解SQL Server 2000,了解企业管理器的功能与操作,了解T-SQL的使用。
一、概述
1.SQL Server 2000是Microsoft公司推出的适用于大型网络环境的关系型数据库管理系统。它支持客户机/服务器体系结构。
2.客户机/服务器体系结构:将数据库防在服务器上,该服务器数据库中的数据可被多个用户同时存取,而用户存取服务器中的数据是通过客户机或服务器端的应用程序获得的。
3.SQL Server 2000的系统数据库:
1)Master数据库:记录了所有系统信息、登录账号、系统配置设置、系统中所有数据库及其系统信息以及存储介质信息。
2)Model数据库:为用户创建数据库提供的模板数据库。
3)Msdb数据库:主要用于存储任务计划信息、事件处理信息、备份恢复信息以及异常SQL Server 2000的报告等。
4)Tempdb数据库:存放所有临时表和临时的存储程序,并且存放目前使用中的表,它是一个全局的资源,临时表和存储程序可供所有用户使用。
4.SQL Server 2000的主要工具
1)查询分析器:使用这个工具,用户可以交互地设计和测试T-SQL语句、批处理和脚本。
2)服务管理器:可以用来启动、暂停和停止SQL Server的主要服务和指示其当前状态。
3)企业管理器:用户管理SQL Server 2000的主要管理工具和图形界面。在企业管理器中可以完成几乎所有的管理工作,如管理登录账号、数据库用户和权限、创建和管理数据库、创建和管理表、视图、存储过程以及用户自定义数据类型等。
二、企业管理器
1.触发器与存储过程的联系和区别
联系:触发器是一种特殊的存储过程。
区别:1)存储过程利用EXEC语句调用执行,触发器为表上的INSERT、UPDATE、DELETE事件所触发而自动执行。
2)触发器不能传递或接受参数。
2.两个临时表
触发器被执行时,系统会创建一个或两个临时表INSERTED和DELETED,这些表在结构上类似于定义触发器的表,用于保存用户操作更改的行的新值和旧值。
3.一个用户要访问SQL Server数据库中的数据,必须经过三个认证过程:
1)身份验证:使用登录账号来标识用户,身份验证只验证用户连接到SQL Server数据库服务器的资格,即验证该用户是否具有连接到数据库服务器的“连接权”。
2)当用户访问数据库时,他必须具有对具体数据库的访问权,即验证用户是否是该数据库的合法用户。
3)当用户操作数据库中的数据或对象时,他必须具有所要进行操作的操作权。
4.SQL Server的两种身份验证模式:Windows身份验证模式和混合验证模式。
三、T-SQL语言
1.T-SQL:Transact-SQL的简称,为扩展SQL。
2.批处理:由一条或多条T-SQL语句构成,前端应用程序会将所有这些语句作为单个代码单元发送给SQL Server。SQL Server将整个批处理作为一个整体加以解析。批处理分隔符为go。
3.SQL脚本文件可包含多个批处理。
第八章 PowerBuilder9.0简介及应用
要求、目标:
了解PB9.0的集成开发环境,了解应用程序的开发步骤,了解PB9.0连接数据库的方法。
一、PowerBuilder9.0集成开发环境
1.PowerBuilder9.0是当前最为流行的数据库前端应用开发和多层应用开发工具之一。
2.PB的主要特点
1)采用面向对象的编程方法和事件驱动的工作原理。
2)支持跨平台开发,具有开放的数据库连接系统。
3.PB9.0的开发空间
有三个层次:1)工作空间2)目标3)库文件
二、PB9.0与数据库的连接
1.连接步骤:
1)建立ODBC数据源;
2)建立数据库描述文件;
3)用Connect命令连接数据库。
第九章 数据库技术的发展
要求、目标:
了解数据库技术发展的前景,了解面向对象的概念建模和开放数据库互连技术。
一、面向对象的概念建模
1.概念建模经历了“ER图—对象联系图—类图”的发展历程。
2.面向对象的数据类型系统:由基本类型、复合类型和引用类型三部分组成。
3.对象联系图:是面向对象数据模型中数据结构的一种重要图例表示方法,由于使用了对象标识的概念,使结构的嵌套和递归成为可能。是描述面向对象数据模型的基本工具。它不仅完整地揭示了数据之间的联系,也把查询的层次观点表现的一清二楚。
4.统一建模语言(UML):面向对象开发的行业标准语言。
二、开放数据库互连(ODBC)
1.API:即应用程序设计接口,是为开发者提供单一的编程接口,这样同一个应用程序就可以访问不同的数据库服务器。
2.ODBC:Microsoft公司的产品,以C/S结构为设计基础。该技术使得应用程序与DBMS之间在逻辑上可以分离,使应用程序具有数据库武官性。ODBC定义了一个API,每个应用程序利用相同的源代码就可访问不同的数据库系统,存取多个数据库中的数据。
ODBC一个最显著的优点是:用它生成的应用程序与数据库或数据库引擎无关。