函数依赖
- 函数依赖:X→Y的意义是对于X属性的相同的值,对应的Y的值一定是相同的,即X如果确定,一定可以通过X确定出Y
- 传递函数依赖:X→Y,Y→Z,且Y与Z不含于X,Z不含于Y,并且Y无法→X,则称Z传递依赖于X
- 候选键:能够决定R模式中的其他的所有关系,如果候选键多个,则可以选择一个为主码;含于任意候选键中的属性,称为主属性
- 闭包F+:F中的函数依赖所能推出的所有的函数依赖关系的集合
- 覆盖:F+=G+
- 属性闭包X+f:能够由X推出来的元素构成的集合(包括X)
规范形式
- 1NF:R中的属性值不能再分属性值
- 2NF:非主属性要求完全依赖于候选键,不可以部分依赖
- 3NF:候选键与非主属性之间不存在传递依赖
- BCNF:F中的袭来关系中存在左边不含有候选键的依赖
模式分解
模式分解即把一个关系R,分解成多个Ri,分解的过程中,要考虑分解的无损连接性以及保持依赖性两个问题
无损连接的检验算法
无损连接的定义在于将R关系分解成的n个小关系自然连接后如果仍与R保持一致则保证了无损连接
- 基本判断方法:将关系R(ABCDEF)中的每一个属性作为列项,将ρ=R{R1,R2,R3,....} 作为横项,F为函数依赖集合{A→B,B→C.....},针对于R1、R2中含有的属性项均标记为a,不含有的标记为b,形成初始化的列表,针对于A→B,A中属性值相同的行,B中的属性值也要要求相同。当将表修改完毕后,出现一行全部是a的项,则成为了无损连接,否则为有损链接。
特殊判定方法将R分解成R1、R2两个模式时的检验方法:如果R1与R2的交集能够决定R2——R1或者R1——R2时,则可以判断其是无损连接
保持依赖分解的检验算法
ρ=R{R1,R2,R3,....},Ri所产生的函数依赖的∪产生的G覆盖F,即G+=F+,则可以说明分解保持依赖分解
分解为BCNF范式
通过观察F,将含有候选键的关系组成Ri,其余的单独组成Ri无损连接分解BCNF:从R中不断地将不满足BCNF模式的关系拿出来单独形成一个Ri,知道剩余的模式是BCNF为止
分解成3NF范式
F中的每一个依赖单独构成一个模式,而后考虑能够合并- 保持依赖分解3NF:先对依赖集F进行一个极小化处理,将F中未能出现的属性放在一起构成一个关系模式Ri,其余的单独成为一个模式,若X决定Y,X决定Z,则{XYZ}构成一个模式
既保持依赖,又无损连接:上述算法产生的模式中,存在一个模式含有候选键,则可以在保持依赖的基础上保持无损连接