我具有以下关系,我需要将其归一化为4NF
。
首先,我尝试找到所有保留的FD和MVD。
AB ->> C (MVD)
C -> D (FD)
D -> E (FD)
ABC -> F (FD)
接下来,使用这些依赖关系,我设法找到了候选键:ABC
。
让我知道我到目前为止所做的是否正确。另外,在4NF中具有多值依赖关系可以吗?像AB ->> C
和ABC -> F
一样?
谢谢。
答案 0 :(得分:0)
通常,依赖项描述了对数据的重要约束,例如,功能依赖项X → A
意味着X
的某个值唯一地确定A
的某个值(即,每个每当我们在元组中找到某个特定值X
时,我们总是会找到相同的值A
。此类约束不能通过表的(几)行来推断,其中数据的含义是未知的。
充其量,我们可以推断出该表的 specific 实例中保存的一组可能功能依赖项,希望(但没有任何特殊原因)那些功能性依赖项依赖关系将保留在表的每个实例上,这是我们可以“标准化”关系的唯一条件(而不仅仅是找到存储该表的特定实例的非冗余方式)。
例如,在您的情况下,由于表中的行很少,因此可以将许多功能依赖项视为包含在其中,例如至少以下内容:
F → AB
E → AD
D → AE
C → ADE
B → A
EF → ABCD
DF → ABCE
CF → ABDE
CB → ADEF
(虽然ABC → F
可以从CB → ADEF
派生,而AB →→ C
不成立)。
如果我们要对该实例应用规范化算法(例如3NF的综合算法),我们将以过多的子方案分解该关系:
R1(AB), R2(BCF), R3(CD), R4(ADE), R5(CEF),
具有六个属性的表的五个关系!