我有一张表满足以下关系:
R(A, B, C, D, E, F, G, H, I, J, K, L, M, N)
{A, B, C} is the primary key.
{D, E} forms a candidate key.
The following functional dependencies exist among the attributes of the relation:
{A, B} -> {H,I}
{D} -> {F,G}
{J} -> {K,L}
{E} -> {M,N}
我需要将其分解为第二范式,因此我将{AB->HI}, {D->FG}, {E->MN}
分成独立的表格。但{J->KL}
怎么样?我应该如何规范这个?
答案 0 :(得分:1)
当且仅当所有非主要属性在功能上依赖于每个候选键的所有属性,而不仅仅是在任何候选键的属性的子集上时,表才在2nf中。
根据你的评论,你有两个键,{ABC}和{DE}。
在{AB} - &gt; {HI}的情况下,属性H和I依赖于键的一部分。 ({AB}是密钥{ABC}的一部分。)因此,您在{D} - &gt; {FG}和{E} - &gt; {MN}中从R. Ditto投影{HI}是正确的。< / p>
当涉及到J,K和L属性时,你必须提出同样的问题。
您如何看待J,K和L?
答案 1 :(得分:0)
根据您的FD:
我认为你选择的PK / CK并不好。
只有CK / PK = {ABCDEJ}因为关闭{ABCDEJ} = {ABCDEFGHILKLMN}所有属性,因此Prime属性(6)= {A,B,C,D,E,J}
在2NF中,我们不允许部分依赖。 这里部分功能依赖: {A,B} - &gt; {H,I} {D} - &gt; {F,G} {J} - &gt; {K,L} {E} - &gt; {M,N}
因此,在删除这些部分依赖关系之后,您的表将被分解为这样(Removal of Partial Dependency in 2NF):
R1 = {ABHI}
R2 = {DFG}
R3 = {JKL}
R4 = {EMN}
R5 = {ABCDEJ}