给定1) CA -> B并且您可以使用阿姆斯特朗公理2) B -> C进行推断吗?A -> B
我试图使用推理规则来证明这一点,但被卡住了。
BA -> CA Augmentation of A
BA -> CA and CA -> B Transitive property
AB -> B
能够删除似乎是有道理的,B因为它是多余的?这是可以使用基本推理规则证明的公理吗?
这个问题甚至可能吗?
给定1) CA -> B并且您可以使用阿姆斯特朗公理2) B -> C进行推断吗?A -> B
我试图使用推理规则来证明这一点,但被卡住了。
BA -> CA Augmentation of A
BA -> CA and CA -> B Transitive property
AB -> B
能够删除似乎是有道理的,B因为它是多余的?这是可以使用基本推理规则证明的公理吗?
这个问题甚至可能吗?
您似乎误解了基础知识。当其他 FD 成立时,您证明了 FD 成立,您并没有证明公理。Armstrong(所谓的)“公理”是FD 的“基本推理规则”。阅读你的教科书。它说公理是“完整的”,这意味着如果您继续应用一个自添加 FD 以来尚未应用的公理,直到您不添加任何 FD,那么您将获得所有持有的 FD。
因此,只需执行此操作并查看是否添加/暗示了您的。灵感和/或运气可能会缩短事情的时间。
而且——一个反例反驳了一个主张。因此,生成一些带有属性 A、B 和 C 的小示例关系,其中 CA -> B 和 B -> C,并尝试在不是 A -> B 的情况下生成一个。同样,灵感和/或运气可能会缩短事情的时间.
A -> B不能如以下反例所示推断:
假设 C 是一组非空属性。并且 B = C(因此 B 也是一组非空属性,并且 B 的每个成员也是 C 的成员,反之亦然)。
根据反身性公理,很明显,这是C -> C成立的。因为 B 等于 C,所以也B -> C成立。
假设 A 是一组空属性。那么显然不能从 A 推断出任何非空属性集。(不能从无到有推断出客户的地址)。
CA 表示 C 和 A 的并集。由于 A 为空,因此 CA 等于 C。因此与自反性公理CA -> C相同。C -> C并且由于 B 等于 C 也CA -> B成立。
对于那些不认为空集是有效集的人来说,一个更明确的例子:
C = { street, telephone_number }, B = C, A = { street }.
CA 仍然等于 C,因此CA -> B成立,就像B -> C. 但显然,如果您只知道街道,则很难推断出电话号码,因此A -> B不成立。
由于有些人确信一个人的电话号码在功能上取决于该人居住的街道(如果这是真的,确实会打破我的反例),我将对此进行详细说明。
我住在一个有许多(即不止一条)街道的村庄。这些街道中的每一条都有由数字标识的建筑物。这些建筑物中的每一个都有一个或多个公寓(例如左边的 3 楼),并且在每个公寓中都住着 1 个或多个人。所有这些人都有电话。有些人共用一部电话,有些人则不会。
描述我村里人的关系具有属性street, building_number,apartment_number等telephone_number(人名,出生日期,...)。
由于在许多情况下,街道的单一值映射到许多人(只有一个人居住的只有一栋建筑物和一个公寓的情况很少见),这意味着对于每条街道都有一长串电话号码(其中“长”的意思是“不止一个”)。
即使使用了完整的地址(街道、建筑物号码、公寓号码),仍然可以找到多个电话号码,因为可能不止一个人居住在该地址。
而且因为有些人共用一部电话,所以电话号码也不是人们的钥匙。而且由于不排除共享电话的人住在不同的地址,因此电话号码和街道之间甚至没有功能依赖关系。
{ street }如上所述, and
之间没有函数依赖关系{ telephone_number },这意味着 and 之间没有函数依赖{ street }关系{ street, telephone_number }。因此A -> B不成立。