关系数据库的分解是否可逆

Is the decomposition reversible for relational databases

本题来自关系型数据库的设计理论

我们知道消除异常冗余更新和删除异常的公认方法]) 就是分解关系。分解的目标是用几个不表现出异常的关系来代替一个关系。还有 BCNF3NF 等条件和将数据库分解为该形式的算法。

那么我们是否可以笼统地说分解过程总是可逆的(即能够恢复数据库的初始状态)?如果是,如何从理论上证明?

模式的"decomposition" 是模式的集合,每个模式都有其属性的子集。通常,模式伴随着约束。 "lossless" 分解是这样一种分解,其中如果组件中的值是原始值在其属性上的投影,则组件会连接回原始值。 (有损分解的组件连接实际上具有原始行的适当超集。)当且仅当某个连接依赖项成立时,分解才是无损的。

所以归一化是关于非损失分解。

尽管我们经常草率地谈论 "decomposition",但在上下文中我们都知道它是无损的。

有时我们发现设计是错误的,因为我们想要使用有损分解来代替或补充原始设计,因为它记录了更多的数据库状态。 (我们可能会注意到它 标准化时,但它不是原始版本的标准化版本。)

任何 college/university 教科书都会清楚地说明这些定义和属性,并可能概述证明。有关证明,请参阅 the Alice book,Abiteboul、Hull 和 Vianu 的数据库基础。