需要归一化理论解释

Normalization Theory Explanation needed

我正在查看与复合主键的关系的具体示例。基于它的功能依赖,我知道它在 1NF 中。在将其规范化为 3NF 时,我遇到了一种我尚未遇到的情况。我遵循了所有部分依赖和传递依赖的步骤,但规范化为 3NF 的最后一步要求您创建一个包含主键和依赖于它的所有非主属性的关系。

在我的具体情况下,我有主键,但没有完整的功能依赖性。我是否制作了一个仅包含复合主键的 table?还是我根本不做?

我没有混淆复合键和主键。请参阅下面的评论,了解为什么我认为我的问题与那个问题不同

FD(函数依赖)与 1NF 无关,无论 you are using. So it's not clear what you're trying to say about 1NF. A relation by definition has a value for each attribute of each tuple. A thing like a relation with something like a "list of values" for some part like an attribute of some part like a tuple is not a relation so CKs (candidate keys) & FDs do not apply. If you define a "1NF relation" as one without certain data types (because of some fuzzy application-dependent received wisdom about "atomicity", or in Codd's sense of having no relation-valued attributes) 中的哪一个,那么满意度不取决于 FD 是否坚持该数据类型的设计。 (此外,如果这种 "non-1NF" "non-atomic" 属性设计的 "normalized" "atomic" 属性版本满足 FD,则原始版本具有特定的 约束 ,但它不是 FD 约束。)

非部分 FD 已满。在通往 2NF 和 3NF 的道路上唯一重要的部分 FD 是 CK 上 non-prime 属性的部分 FD。当这些消失时,你就有了 2NF。 (从 "followed the steps for all partial dependencies and transitive dependencies" 听起来你的计划是分解为 2NF,然后分解为 3NF。)部分 FD 只是在需要 2NF 的 3NF 定义中没有提到。此外,3NF 的定义和将关系放入 3NF 的通用算法只是不使用部分 FD。

也可以有其他部分FD。他们只是无关紧要。特别地,所有在适当的超键上的属性的 FD 都是部分的。只需遵循确定关系是什么范式的定义,并遵循将关系转化为范式的算法。这适用于所有定义和算法。

PS 你不应该先把一个关系放到 2NF 中再把它放到 3NF 中。这可以排除原件的一些好的 3NF 分解被发现。使用 3NF 算法。 (通常用于 3NF 的分解实际上会在稍强的 EKNF(基本键范式)中生成分解)。

拥有一个由复合键组成且没有其他属性的关系是完全合法的。这不仅在理论上有效,而且在现实世界中也会发生。

在这种情况下,该关系只是断言复合键所标识的某物的存在。数据的用户将使用它来测试是否存在,而不是用于与非键属性的关系通常用于的同类查找。