【发布时间】:2017-05-23 18:31:27
【问题描述】:
我想知道 3NF 归一化算法的最后一步,它指出:
4) 如果前面步骤中获得的关系中没有一个包含 R 的超键,则添加一个新的关系,其模式是 R 的键。
我的具体问题是,这种关系的语义会发生什么?为什么只有一个关系而不是多个单属性关系(键的每个属性一个)?
我发现在某些示例中,额外的关系是有意义的,但在其他示例中,它似乎“混合”了不相关的属性......
【问题讨论】:
-
如果你有一个 CK 的每个属性的组件,当你加入它们时,你会从每个属性的所有可能的值组合中获得所有可能的元组。通常只有一些元组出现在关系中——那些在保持 CK 的组件中。因此,将 CK 的属性保持在某个组件中是必要且足够的,并且鉴于此,将投影包含在单独的属性上是多余的。但是如果这些CK属性可以被分成所有出现元组组合的子集,你可以分解,但是这不是必需的对于3NF。
-
PS 你需要放弃“具体”&语义&“有意义”&“混合”&恐吓引语&“信息”&“独立”等等,都无可救药的模糊,说什么实际上,您的意思是,就关系和投影/组件和元组和连接等而言。您可能会发现 (characteristic) predicate (of a set) 的概念很有帮助。(来自情况的映射和真值的元组;我们将给定元组放入或排除关联关系主体的标准。)因为如果两个关系加入一个关系,则参数的谓词与结果的谓词。
-
例如:组件不“有意义”或“混合”不相关的属性是什么意思? (原始关系包含其值以某种方式相关的元组 - 比如说,它们是满足 p(A,..) 的 元组。因此,投影出 X,... 的组件包含元组满足 EXISTS X,... p(A,...)--即,其值如此相关的元组。)
标签: database-normalization 3nf