一、概念
- 函数依赖
- 设R(U)是属性集合U={A1,A2,…,An}上的一个关系模式,X,Y是U上的两个子集,若对R(U)的任意一个可能关系r,r中不可能有两个元组满足在X中的属性值相等而在Y中的属性值不等,则称函数X决定Y或函数Y依赖于X,记作X->Y
- 直观地说就是看有一个表格的一列,要是全都是不一样的值的话它一定可以决定任意列;要是有相同的值的话,看相同值对应行的那个想要被决定的属性值相不相等。如果相等的话就可以决定那个属性。决定多个属性要多个属性都相同才行w
- 看表格找出函数依赖↑
- 函数依赖的特性
- 非平凡的函数依赖:被决定因素不包含决定因素。如果包含的话就平凡。
- 若X->Y,则责任一两个元组若X上的值相等,则Y上的值必然相等,并且称X位决定因素
- 若X->Y,Y->X,则记作X<->Y
- 部分函数依赖 & 完全函数依赖
- 在R(U)中,如果X->Y并且对于X的人和镇自己X'都有X'!->Y,则称Y完全函数依赖于X,记为X-f->Y;否则称Y部分函数依赖于X,记为X-p->Y
- 部分函数依赖存在非受控冗余
- 传递函数依赖
- R(U)中,若X->Y,Y->Z,且Y不属于X,Z不属于Y,Z不属于X,Y!->X,则称Z传递函数依赖于X。
- 传递函数依赖存在非受控冗余
- 候选键
- 设K为R(U)中的属性或属性集合,若K-f->U,则称K为R(U) 上的候选键(Candidate Key)
- 唯一性 & 最小性
- 可以任选一候选键作为关系R的主键Primary Key
- 包含在任意候选键中的属性称为主属性Prime Attribute,其他属性称为非主属性。
- 超码若K是R的一个候选键,K属于S,则称S为R第一个超码
- 外码
- 若R(U)中的属性或属性组合X并非R的候选键,但X确实另一关系的候选键,则称X为R的外来见(Foreign Key),简称外码。
- 闭包Closure
- 设F是关系模式R(U)中的一个函数依赖集合,被F逻辑蕴含的所有函数依赖集合称为F的闭包Closure,记作F+.
- 若F+=F则说F是一个函数依赖完备集
关于函数依赖的公理定理,相关证明
- Armstrong's Axioms A1~A3
设R(U)是属性及U={A1,A2,…,An}上的一个关系模式,F为R(U)的一组函数依赖,记为R(U,F),则有以下规则成立:
- 自反律Reflecxivity rule:若Y属于X属于U,则X->Y被F逻辑覆盖
- 增广律 若x->y属于F,且Z属于U,则XZ->YZ被F逻辑蕴含
- 传递律 若X->Y属于F,Y->Z属于F,则X->Z被F逻辑蕴含
- 引理
- 合并律:若X->Y且X->Z则X->YZ
- 伪传递律:若X->Y且WY->Z则XW->Z
- 分解率: 若X->Y且Z属于Y,则X->Z
二、关系范式模式分解理论
- 若关系模式R(U)中关系的每个分量都是不可分的数据项(值,原子),则称R(U)属于第一范式,记为:R(U)属于1NF
- 即不能存在多值属性
- 若R(U)属于第一范式,且U中的每一非主属性完全函数依赖于候选键,则称R(U)属于第二范式,记为R(U)属于第二范式
- BCNF
- 判定:F里面都是一下几种东西之一
- 函数依赖的左边都是关系的超码
- 函数依赖都是平凡函数依赖
- BFNF能消除所有基于函数依赖能发现的冗余
- 判定:F里面都是一下几种东西之一