这个问题来自关系数据库的设计理论。
我们知道,消除anomalies(redundancy,更新和删除异常的公认方法是分解关系。分解的目的是用不出现异常的几个关系来代替一个关系。还有一些条件,如BCNF、3NF以及将数据库分解成这种形式的算法。
因此,我们是否可以普遍地说分解过程总是可逆的(即能够恢复db的初始状态)?如果是,如何从理论上证明这一点?
发布于 2016-12-18 20:23:54
模式的“分解”是一个模式的集合,每个模式都有其属性的子集。通常,架构伴随着约束。“无损”分解是这样一种分解,如果组件中的值是其属性上原始值的投影,那么组件就会连接回原始组件。(有损分解的组件的连接实际上具有原始行的适当的超集。)分解是无损的当且仅当某个连接依赖保持。
因此,规范化是关于非损失分解的。
然而,当我们都知道“分解”是没有损失的时候,我们常常会马马虎虎地谈论“分解”。
有时,我们发现一个设计是错误的,因为它记录了更多的数据库状态,而不是原始的,或者是我们想要使用的有损分解。(我们在正常化时可能会注意到这一点,但它不是原始版本的规范化版本。)
任何一本学院/大学的教科书都会使这些定义和属性变得清晰,并且很可能会概述这些证据。如需证明,请参阅爱丽丝之书,Abiteboul,Hull & Vianu的数据库基础。
https://stackoverflow.com/questions/41211992
复制相似问题