数据库设计 – (De)两个关系的规范化
阅读C.J.Date的数据库系统简介或类似水平的书籍的人不应该对标准化和非规范化的定义有问题.
然而,记忆并不像以前那样,我发现自己经常看一些设计并说它没有正常化,即使我找不到它正在破坏的正常形式. 说明它的实际例子是: 如果我们有关系 r1(A,B,C)和r2(A,D) 使用FD:AB-> C和A-> D. 并且r1表示详细数据,而r2是该数据的汇总(换言之,D的每个实例是r1中的值的函数.在该示例中,根据来自r1的A,使其为值C的小计). 示例实例 r1 = A B C 1 1 10 1 2 20 2 1 10 2 2 25 r2 = A D 1 30 2 35 所以,即使我不能说它打破例如2NF或3NF,我似乎仍然坚持认为设计仍然在以下意义上非规范化(来自Codd,EF“数据库关系模型的进一步规范化”),第34页,评论超过1NF正常化的原因):
我可以说,如果我们将D定义为来自r1的所有C的总和,其中来自r1的A等于来自r2的A,那么,如果我们在r1中更新C并且我们不在r2中更新D,我们可以最终由于不合适的更新依赖性并且数据最终处于不一致状态,我发现这个原因是将r1和r2称为非规范化并将它们视为非规范化. (事实上??,整个r2是r1的函数,并将零个新事实带入模型; r2 = f(r1)) 所以问题是 >我们可以将r1和r2称为非规范化吗? 注意: 编辑
引自Database in depth: relational theory for practitioners 并在下一页
解决方法假设AB是r1中的键,A是r2中的键,那么模式似乎是6NF.关系数据库字典(Date)将非规范化定义为:
从根本上说,归一化/非规范化是关于使用投影和连接运算符的合成和非损失分解.在此示例中,您具有由不同运算符引起的冗余:求和.我希望原则上很可能为投影和连接以外的运算符形成“规范化”理论,甚至可能对求和等非关系函数形成理论.然而,这并不是传统上如何定义规范化,并且在没有任何合理基础的情况下,我认为我们应该应用上述引文中由Date定义的技术含义非规范化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |