第一章数据库概论1.人工管理阶段,文件系统阶段,数据库阶段,高级数据库阶段(对象数据库技术,分布式数据库系统,开放数据库互连技术,xml数据库技术,现代信息集成技术)2.数据描述:概念设计中:实体,实体集,属性,实体标识符;逻辑设计中:字段,记录,文件,关键码;物理设计中:位,字节,字,块,桶,卷;3.概念模型,逻辑模型(层次,网状,关系,对象),外部模型,内部模型;4.三层模式(外模式,逻辑模式,内模式),两级映像(外模式/逻辑模式映像,逻辑模式/内模式映像)5.数据库系统:数据库,硬件,软件,数据库管理员第二章关系模型和关系运算理论1.超键:能唯一标识元组的属性或属性集。
候选键:不含有多余属性的超键主键:用户选作元祖标识的候选键。
外键:是其他模式的主键。
实体完整性规则,参照完整性规则,用户定义的完整性规则关系模式的三层体系结构:关系模式,子模式,存储模式2.关系代数的5个基本操作:并,差,笛卡尔积,投影,选择;关系代数的4个组合操作:交,连接,自然连接,除法。
关系代数的7个扩充操作:改名,广义投影,赋值,外连接,外部并,半连接,聚集操作3.关系代数表达式的启发式优化算法:尽可能早的执行选择操作;尽可能早的执行投影操作;避免直接做笛卡尔积第三章关系数据库语言SQL1.SQL的组成:数据定义语言,数据操纵语言,嵌入式,数据控制语言2.数据定义:数据类型ok,数据库,数据表,索引的创建等ok。
3.数据查询,数据更新ok。
4,视图,嵌入式,动态SQL语句,存储过程。
第四章关系数据库的规范化设计1.定义1:函数依赖:设有关系模式R(U),U为属性集,x、y为U的子集,函数依赖(FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FDX→Y在关系模式R(U)中成立。
定义2:如果X→Y和Y→X同时成立,则可记为X←→Y。
定义3:设F是在关系模式R上成立的函数依赖的集合,X→Y 是一个函数依赖。
如果对于R 的每个满足F的关系r也满足X→Y ,那么称F逻辑蕴涵X→Y,记为F ⊨ X→Y。
定义4:设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F 的闭包(closure),记为F+。
即F+ ={X→Y | 记为F ⊨ X→Y }定义5:对于FD X→Y,如果Y⊆X,那么称X→Y是一个“平凡的FD”,否则称为“非平凡的FD”。
定义6:设关系模式R的属性集是U,X是U的一个子集。
如果X→U在R上成立,那么称X是R的一个超键。
如果X→U在R上成立,但对于X的任一真子集X1都有X1→U不成立,那么称X是R上的一个候选键。
定义7:设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合:X+ ={属性A | X→A 在F+中}定义8:如果关系模式R(U)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集。
定义9:如果函数依赖集G满足下列三个条件,则称G是最小依赖集:①G中每个FD的右边都是单属性;②G中没有冗余的F,即G中不存在这样的函数依赖X→Y,使得G -{X→Y}与G等价;③G中每个FD的左边没有冗余的属性,即G中不存在这样的函数依赖X→Y,X有真子集W使得G -{X→Y}∪{W→Y}与G等价。
定义10:设有关系模式R(U),属性集为U,R1、…、Rk都是U的子集,并且有R1∪R2∪…∪Rk=U。
关系模式R1、…、Rk的集合用ρ表示,ρ={R1,…,Rk}。
用ρ代替R的过程称为关系模式的分解。
定义11:在泛关系模式R分解成数据库模式ρ={R1,…,Rk}时,泛关系r在ρ的每一模式Ri(1≤i≤n)上投影后再连接起来,比原来r中多出来的元组,称为“寄生元组”(Spurious Tuple)。
定义12:设R是一个关系模式,F是R上的一个FD集。
R分解成数据库模式ρ={R1,…,Rk}。
如果对R中满足F的每一个关系r,都有r=πR1(r)⋈πR2(r)⋈… ⋈πRk(r),那么称分解ρ相对于F是“无损连接分解”(lossless join decomposition),简称为“无损分解”,否则称为“损失分解”(lossy decomposition)。
定义13:在无泛关系假设时,对两个关系进行自然连接中被丢失的元组称为悬挂元组。
定义14:设F是属性集U上的FD集,Z是U的子集,F在Z上的投影用πZ(F)表示,定义为πZ(F)={X→Y|X→Y∈F+,且XY⊆ Z}。
定义15:设ρ={R1,…,Rk } 是R的一个分解,F是R上的FD集,如果有∪πRi(F) ⊨ F,那么称分解ρ保持函数依赖集F。
定义16:如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式(first normal form,简记为1NF)的模式。
定义17:对于FD W→A,如果存在X⊂W有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。
定义18:如果A是关系模式R的候选键中属性,那么称A是R的主属性;否则称A是R的非主属性。
定义19:如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。
如果数据库模式中每个关系模式都是2NF,则称数据库模式为2NF 的数据库模式。
定义20:如果X→Y,Y→A,且Y不→X和A不∈Y,那么称X→A是传递依赖(A传递依赖于X)。
定义21:如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R 是第三范式(3NF)的模式。
如果数据库模式中每个关系模式都是3NF,则称其为3NF的数据库模式。
定义22:设F是关系模式R的FD集,如果对F中每个非平凡的FD X→Y,都有X是R的超键,或者Y的每个属性都是主属性,那么称R是3NF的模式。
定义23:如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF 的模式。
如果数据库模式中每个关系模式都是BCNF,则称为BCNF的数据库模式。
定义24:设F是关系模式R的FD集,如果对F中每个非平凡的FD X→Y,都有X是R的超键,那么称R是BCNF的模式。
2.定理1:FD推理规则A1、A2和A3是正确的。
设U是关系模式R的属性集,F是R上成立的只涉及到U中属性的函数依赖集。
FD的推理规则有以下三条:A1(自反性,reflexivity):若Y X U,则X→Y 在R上成立。
A2(增广性,augmentation):若X→Y在R上成立,且Z U,则XZ→YZ 在R上成立。
A3(传递性,transitivity):若X→Y 和Y→Z 在R上成立,则X→Z 在R上成立。
定理2:FD的其他五条推理规则:(1) A4(合并性,union):{X→Y,X→Z }⊨X→YZ。
(2) A5(分解性,decomposition):{X→Y,Z Y }⊨X→Z。
(3) A6(伪传递性):{X→Y,WY→Z }⊨WX→Z。
(4) A7(复合性,composition):{X→Y,W→Z }⊨XW→YZ。
(5) A8:{X→Y,W→Z }⊨X∪(W-Y)→YZ。
定理3:如果A1…An是关系模式R的属性集,那么X→A1…An成立的充分必要条件是X→Ai(i=1,…,n)成立。
定理4:X→Y能用FD推理规则推出的充分必要条件是Y X+。
定理5:FD推理规则{A1,A2,A3}是完备的。
定理6:设ρ={R1,R2 }是关系模式R的一个分解,F是R上成立的FD集,那么分解ρ相对于F是无损分解的充分必要条件是:(R1∩R2)→(R1-R2)或(R1∩R2)→(R2-R1)。
定理7:如果FD X→Y在模式R上成立,且X∩Y=φ,那么R分解成ρ={R-Y,XY }是无损分解。
定理8:如果R是3NF模式,那么R也是2NF模式。
定理9:如果R是BCNF模式,那么R也是3NF模式。
3.算法1:求属性集X相对于FD集F的闭包X+。
设属性集X的闭包为X+,其计算算法如下:X+ := X ;do { old X+ := X+ ;for F中每个FD Y→Z doif Y X+ then X+ := X+∪Z ;} while(X+ != old X+);算法2:计算函数依赖集F的最小依赖集G。
方法:具体过程分三步:①据推理规则的分解性(A5),得到一个与F等价的FD集G,G中每个FD的右边均为单属性。
②在G的每个FD中消除左边冗余的属性。
③在G中消除冗余的FD。
算法3:无损分解的测试①构造一张k行n列的表格,每列对应一个属性Aj,每行对应一个模式Ri。
如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上bij。
②把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的值。
修改方法如下:如果Y值中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中一个bij替换另一个值(尽量把下标ij改成较小的数)。
一直到表格不能修改为止。
(这个过程称为chase过程)③若修改的最后一张表格中有一行是全a,即a1a2…an,那么称ρ相对于F是无损分解,否则称损失分解。
算法4:分解成2NF模式集的算法设关系模式R(U),主键是W,R上还存在FD X→Z,并且Z是非主属性和X⊂W,那么W →Z就是一个局部依赖。
此时应把R分解成两个模式R1(XZ),主键是X;R2(Y),其中Y=U-Z,主键仍是W,外键是X(REFERENCES R1)。
利用外键和主键的连接可以从R1和R2重新得到R。
如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中每一个关系模式都是2NF为止。
算法5:分解成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(REFERENCES R1)。
利用外键和主键相匹配机制,R1和R2通过连接可以重新得到R。
如果R1和R2还不是3NF,则重复上述过程,一直到数据库模式中每一个关系模式都是3NF为止。
算法6:无损分解成BCNF模式集。
对于关系模式R的分解ρ(初始时ρ={R}),如果ρ中有一个关系模式Ri相对于πRi(F)不是BCNF。
据定义4.24可知,Ri中存在一个非平凡FD X→Y,有X不包含超键。
此时把Ri分解成XY和Ri-Y两个模式。
重复上述过程,一直到ρ中每一个模式都是BCNF。
算法7:无损分解且保持依赖地分解成3NF模式集。