我看到的部分依赖性的所有例子都只有一个属性作为主键。
A,B,C -> D,E,F
A,B-> D (composite PK)
我可以说“A,B-> D”是部分依赖“A,B,C - > D,E,F”吗?
答案 0 :(得分:1)
我可以推断,你问的是分解是否会涉及具有复合PK的新表,因为到目前为止你只看到了单个属性键的例子。
是。我们的想法是,如果您可以通过主键的一个部分(无论是单个属性还是多个)唯一地确定一个或多个非主要属性,那么您应该为此创建一个单独的表。
因此,如果A,B -> D
,则创建另一个{A, B, D}
表,并从较大的表中删除重复。
This link显示删除此冗余后单个表被分为两个,尽管它也使用单个属性作为键。不过,你可以通过最初查看表格并将其划分后得到这个想法。
答案 1 :(得分:0)
TL; DR 你的头衔问题是FD格式错误,你的第一句话是FD格式错误,你要求说的是不正确的FD。 (请通过正确使用术语来重新解释您的问题以理解FD。请将您的句子之间的联系清楚并解释您的示例。)
我们说FD(功能依赖)X - > Y保持或Y在功能上依赖于X或者X在功能上确定Y或者Y在功能上由X确定。我们经常将“功能性”排除在外。我们说X - >当X的一些较小/适当的子集也确定Y时,Y是部分的。术语“部分”出现是因为Y仅依赖于X的部分。非部分的FD是满的。请注意,CKs(候选键)不参与。
A,B,C -> D,E,F A,B-> D (composite PK)
标准化涉及CK。它涉及PK(主键)的唯一方法是有一个与标准化无关的传统,选择一个CK称为“PK”。当然,如果只有一个CK,那么它是PK的唯一选择,我们可以称之为PK。
我假设A-F是某个关系值或变量的唯一属性。如果这两个FD(以及那些在其关闭而没有其他FD)中持有,那么{A,B} 不一个CK。 {A,B,C}是唯一的CK。
我可以说“A,B-> D”是部分依赖“A,B,C - > D,E,F”吗?
从来没有FD“是”不同的FD。也许你的意思是“是的部分FD ”。但是说FD“是某些FD的部分FD”是没有意义的。我不知道你的“我可以说”是否意味着“这是真的吗”还是“说得有意义”。但这样说是没有意义的。我不知道你想问什么。
但是有些事情是真的:
{A,B,C} - > {D,E,F}不是部分的,因为{A,B,C}的较小/适当子集不确定{D,E,F}。 {A,B} - > {D}不是部分因为{A,B}没有较小/适当的子集确定{D}。但{A,B,C} - > {D}是部分的,因为{A,B,C}的较小/适当的子集{A,B}确定{D}。
当没有非素数属性部分依赖于CK时,关系是2NF。即所有非素数属性在功能上完全依赖于每个CK。由于非素数属性{D}部分依赖于CK {A,B,C},因此该关系值或变量不在2NF中。
在2NF中,部分依赖可以有复合主键吗?
这也没有意义。部分FD不“具有”PK或CK。我不知道你想问什么。也许你的意思是“决定性”而不是“PK”。
我看到的部分依赖性的所有例子都只有一个属性作为主键。
这也没有意义,因为依赖关系不会“拥有”PK或CK。也许你想说的是,你所看到的部分FD的所有例子都是只有一个属性作为CK的关系。也许你试图说你看到的部分FD的所有例子都只有一个属性作为决定因素。
部分FD可以具有单属性决定因素的唯一时间是{}是其子集决定因素。即{J} - > Y是部分然后{} - > Y.这是每个元组中Y子行值相同的时候。所以你可能从未想过部分依赖而不是有一个复合决定因素。 (所以你可能没有意味着“PK”的“决定因素”。)
(我也不能将这三个引用相互连接或你的例子。)