数据库规范化-4NF

时间:2019-01-26 12:56:16

标签: database database-normalization functional-dependencies bcnf

我具有以下关系,我需要将其归一化为4NF

Relation

首先,我尝试找到所有保留的FD和MVD。

AB ->> C (MVD)
C -> D (FD)  
D -> E (FD)
ABC -> F (FD)

接下来,使用这些依赖关系,我设法找到了候选键:ABC。 让我知道我到目前为止所做的是否正确。另外,在4NF中具有多值依赖关系可以吗?像AB ->> CABC -> F一样?

谢谢。

1 个答案:

答案 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),

具有六个属性的表的五个关系!