我刚刚阅读了@PerformanceDBA的论据,例如:6NF和E-A-V。我很感兴趣我以前曾对6NF表示怀疑,因为它表示“只是”在表上粘贴了一些时间戳列。

我一直使用数据字典,不需要说服使用它或生成SQL代码。因此,我希望得到一个需要使用字典(或目录)来生成代码的答案。

因此,我想知道6NF如何处理一个的简单示例。物品,说明和价格表。价格随时间变化。

因此,无论如何,Items表转换为6NF后会是什么样?什么是“桌子爆炸”?发生在这里吗?

如果该示例不适用于如此简单的表,请随时添加必要的内容以阐明要点。

最佳答案

简而言之,6NF表示每个关系都由一个候选键加上一个(键或非键)其他属性组成。以您的示例为例,如果一个“项目”由ProductCode标识,其他属性为Description和Price,则6NF模式将由两个关系组成(*表示每个关系中的键):

ItemDesc {ProductCode*, Description}
ItemPrice {ProductCode*, Price}

这可能是一种非常灵活的方法,因为它可以最大程度地减少依赖性。但是,这也是它的主要缺点,尤其是在SQL数据库中。 SQL使得很难或不可能强制执行许多多表约束。使用上述模式,在大多数情况下,将不可能执行每个产品必须始终具有描述和价格的业务规则。同样,您可能无法强制执行某些应应用的复合键(因为它们的属性可能会拆分到多个表中)。

因此,在考虑6NF时,您必须权衡哪些依赖关系和完整性规则对您很重要。在许多情况下,您可能会发现坚持5NF并进行更进一步的标准化可能更为实用和有用。

关于normalization - 想以一个例子来理解6NF,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4824714/

10-10 03:44