先决条件——阿姆斯壮公理在 DBMS 中的函数依赖
阿姆斯特朗提到,规则 1 到 3 具有完整性和稳健性。阿姆斯壮公理是完备的,因为对于给定的函数依赖集 F,F +隐含的所有函数依赖都可以使用这些规则从 F 导出。
我们需要证明的是——
可以从给定的函数依赖集(F闭包)中用逻辑推导出的函数依赖集和可以从阿姆斯壮公理(F armstrong )推导出来的函数依赖集是相同的。就集合而言,如果我们要表示相等,那么我们将其写为,一个是另一个的真子集。因此,我们需要证明,
Fclosure is a proper subset of Farmstrong
正确性意味着可以从 F 导出的任何内容也可以使用阿姆斯特朗公理导出。
F闭包+表示F的闭包。数学上我们可以表示,F闭包+ ={A| F闭包+意味着可以使用阿姆斯壮公理从 F 导出 A,其中 A 属于实数。
索赔-1:
当且仅当 Y 是 F 闭包+ 的真子集时,可以使用阿姆斯壮公理从 F 推导出。
要证明“如果”部分:
设 Y={A 0 , A 1 , ……, A m , } 其中 Y 是 F闭包+ 的真子集。 F闭包+暗示 A j可以使用阿姆斯特朗公理从 F 导出} 其中,A 属于 0
要证明“仅当”部分:
可以使用阿姆斯特朗公理从 F 推导出来
通过投影规则我们知道 F闭包+意味着 A j其中,A 属于 0
这意味着 Y 是 F闭包+ 的真子集。
X 使用阿姆斯特朗公理从 F 确定 Y 。
我们将尝试证明上述陈述的逆反证。
我们将证明 X 确定 Y 不能使用阿姆斯特朗公理从 F 确定。就元组关系而言,我们可以说,存在一个属于实数的实例 r,使得 F 的所有函数依赖都对 r 成立。然而,X 暗示 Y 不成立。
这提到我们的假设是错误的,并且主张是正确的。
从而证明Claim 01是正确的。
让我们考虑 r 只有 2 行,并由 r{F闭包+属性,其他属性}表示
索赔2:
F 的所有 FD 都由 r 满足。让我们再次否定它。设 W 意味着属于 F 的 R 不满足 r,则 W 是 F闭包+ 的真子集,Z 不是 F闭包+ 的真子集。
让 G 属于 Z- F闭包+
我们得到:
因为 W 是 F闭包+ 的真子集,
根据传递性规则,
根据自反性规则,因为 G 属于 Z 并且
由传递性规则。
根据闭包的定义 G 必须属于 F闭包+
我们得到了一个矛盾。
我们采用了一个被证明是错误的矛盾,这意味着该陈述是正确的。
从而证明Claim 02是正确的。
索赔-3:
X 暗示 Y 不满足 r。
我们再次假设矛盾(X 并不意味着 Y)。由于 r 的结构,Y 是 F闭包+ 的真子集,这意味着 X 蕴涵 Y 可以使用阿姆斯特朗公理来证明。
我们的假设被证明是错误的,因此该主张是正确的。
从而证明03号主张是正确的。
这意味着当 X 不隐含 Y 时,使用 Armsrong 公理,那么 F 在逻辑上并不意味着 X 隐含 Y。
我们也可以说,当 X 暗示 Y 时,使用 Armsrong 公理(机械地),那么 F 在逻辑上暗示 X 也暗示 Y。
因此证明阿姆斯特朗公理是完备的。