0. 超码/候选码/主码/主属性/非主属性
超码=码=键: 能够唯一标识一条记录的属性或属性集
候选码: 能够唯一标识一条记录的最小属性集。他们的任意真子集都不能成为超码。
主码:从候选码里人为选取的最小属性集。
主属性: 候选码的并集。
非主属性:不包含在候选码里的属性。除了主属性的其他属性。
1. 第一范式(1NF)
如果一个关系模式R中的每个属性A的域值都是原子的,即属性值是不可再分的,则关系模式R属于第一范式
2. 函数依赖 ( Functional dependency)
给定r(R)的一个实例 ,α 与β包含于R中 ,满足函数依赖 α ->β 的条件是:对实例中的所有元组对t1和t2,若t1[α ] = t2[β] , 则有t2[α ] = t2[β] 。 ( β 依赖于 α )
例题1:答案(C)
例题2 :
答案: F= { employee_ID , date -> turnover_per_day ,
employee_ID ->depaertment_name ,
department_name -> manager }
部份依赖:若 AB->C , 则A->C , B->C 。
完全依赖:若 AB->C ,但AB单独得不出C。
传递依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
平凡依赖:若Y 包含于 X 中,X -> Y 为平凡依赖。
例题3:
设A,B,C,都是R(U)的属性 , 则 A->A , ABC->A , ABC->BC都是平凡依赖。
A->B,AB->C 是非平凡依赖
3. BCNF范式与第三范式
BCNF性质:不存在属性(主属性和非主属性)对候选码的传递和部份依赖。 BCNF必满足3NF。
具有函数依赖集F的关系模式R若满足BCNF范式,对F+ ,中所有形如x->y 的 函数依赖,以下至少有一项成立:
- x->y是平凡的函数依赖(y包含于x中)
- x是模式R的一个超码
3NF性质:不存在非主属性对候选码的部分和传递依赖。3NF必满足2NF。
具有函数依赖集F的关系模式R若满足3NF范式,对F+ ,中所有形如x->y 的 函数依赖,以下至少有一项成立:
- x->y是平凡的函数依赖(y包含于x中)
- x是模式R的一个超码
- y-x 的每个属性都包含于R的一个候选码中
4. 函数依赖理论(属性集的闭包/无损分解/保持依赖)
属性集闭包的求解算法如下:令 α 是一个属性集,函数依赖F下的 α 是属性集闭包 通过以下求得
候选码的求解:所谓候选码即能决定整个关系的,我们通过找未出现在依赖右边的 和两侧均未出现的元素即可求得。候选码的属性集闭包等于所有的属性。
无损分解:将一个关系模式分解成若干个关系模式后,通过自然连接或投影等运算仍能还原到原来的关系模式。如果R1 ∩ R2是R1或R2的超码,则R上的分解(R1,R2)是无损分解(充分条件)。
保持依赖:如果 F 上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(充分条件)。
还有一种验证保持依赖的方法是:对 F 中的每一个 α ->β 做下面的算法
如果result 包含 β 的所有属性,则函数依赖 α ->β 保持。分解之后的保持依赖的当且仅当上述过程中 F 的所有依赖都保持。