什么是传递函数依赖介绍
传递函数依赖属于关系模式R(U),传递函数依赖在关系模式 R(U)中,设 X,Y,Z 是 U 的不同的属性子集,如果 X 确定 Y、Y 确定 Z,且有 X 不包含 Y,Y 不确定 X,(X∪Y)∩Z=空集合,则称 Z 传递函数依赖于X。
传递函数依赖定义1
在关系模式R (U) 中, 如果X→Y, Y→Z, Z不是Y的子集, Y不函数决定X, 则称Z对X传递函数依赖 (Transitive Functional Dependency) 。该定义指明传递函数依赖包含2种情况:
(1) Y⊆X成立, 这种情况传递函数依赖蜕变为部分函数依赖, 即Z部分函数依赖于X, 部分函数依赖是特殊的传递函数依赖。
例证1:设关系模式R (U, F) , U={ Sno, Sna, Cno, G }, 其中 Sno:学号, Sna:姓名, Cno:课号, G:成绩, F={ (Sno Cno) →G, Sno→Sna }。
(Sno Cno)→ Sno
Sno→ Sna
Sno不函数决定(Sno Cno)
Sna不是Sno的子集
【Sna传递函数依赖于(Sno Cno)】
但由于Sno ⊆ (Sno Cno) , 所以Sna 对 (Sno Cno) 的传递函数依赖蜕变成了部分函数依赖。
例证2:若R∈3NF, 则R∈2NF 所以可以分下面4种情况进行讨论。
(1) 当 (A, B) 为 (0, 0) 时, 这与定义1的情况 (2) 相同, 是普通意义上的真正的传递函数依赖。
(2) 当 (A, B) 为 (1, 1) 时, 则Z ⊆ X成立, X→Z是平凡函数依赖。
(3) 当 (A, B) 为 (1, 0) 时, 这与定义1的情况 (1) 相同, Z部分函数依赖于X。
(4) 当 (A, B) 为 (0, 1) 时, 依据分解规则X对Z直接决定。
所以定义4实际上把平凡函数依赖、部分函数依赖和X对Z直接决定都定义为传递函数依赖, 使传递函数依赖没有任何的特殊性, 尤其把平凡函数依赖和X对Z直接决定都概括为传递函数依赖不够严谨, 所以定义4同样不严谨。