数据库规范化 - 4NF

问题描述 投票:0回答:1

我有以下关系,我需要将其标准化为4NF

Relation

首先,我试图找到所有的FD和MVD。

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

接下来,使用这些依赖项,我设法找到候选键:ABC。如果我到目前为止所做的事情是正确的,请告诉我。另外,4NF中有多值依赖可以吗?像AB ->> CABC -> F

谢谢。

database database-normalization functional-dependencies bcnf
1个回答
0
投票

一般来说依赖关系描述了对数据的重要约束,例如函数依赖性X → A意味着X的某个值唯一地确定了A的某个值(也就是说,每当我们在元组中找到X的某个值时,我们总会发现A的相同值)。这种类型的约束不能通过表的(少数)行来推断,其中数据的含义是未知的。

在最好的情况下,我们可以在表的特定实例中推断出一组可能的函数依赖关系,希望(但没有任何特殊原因)这些函数依赖关系将保存在表的每个实例上,这是唯一的条件。我们可以“规范化”关系(而不是简单地找到存储该表的特定实例的非冗余方式)。

例如,在您的情况下,由于表中的行很少,因此可以将许多功能依赖性视为保留在其中,例如至少以下内容:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.