作业 #
𝐹 = {𝐴 → 𝐵𝐶, 𝐵 → 𝐴𝐶, 𝐶 → 𝐴𝐵}
要找到F的所有canonical cover,我们需要考虑从F中的每个函数依赖删除一个多余属性的所有可能方式:
-
从A -> BC中删除B,得到A -> C。然后从B -> AC中删除C,得到B -> A。继续从C -> AB中删除A,得到C -> B。得到的函数依赖集是{A -> C, B -> A, C -> B}。
-
从A -> BC中删除B,得到A -> C。然后从B -> AC中删除C,得到B -> A。继续从C -> AB中删除B,得到C -> A。得到的函数依赖集是{A -> C, B -> A, C -> A},不满足F的canonical cover条件。
-
从A -> BC中删除B,得到A -> C。然后从B -> AC中删除A,得到B -> C。继续从C -> AB中删除A,得到C -> B。得到的函数依赖集是{A -> C, B -> C, C -> B},不满足F的canonical cover条件。
-
从A -> BC中删除B,得到A -> C。然后从B -> AC中删除A,得到B -> C。继续从C -> AB中删除B,得到C -> A。得到的函数依赖集是{A -> C, B -> C, C -> A},不满足F的canonical cover条件。
-
故有{A -> C, B -> C, C -> AB}
-
从A -> BC中删除C,得到A -> B。然后从B -> AC中删除C,得到B -> A。已经不满足F的canonical cover条件。
-
从A -> BC中删除C,得到A -> B。然后从B -> AC中删除A,得到B -> C。继续从C -> AB中删除A,得到C -> B。
得到的函数依赖集是{A -> B, B -> C, C -> B},不满足F的canonical cover条件。
- 从A -> BC中删除C,得到A -> B。然后从B -> AC中删除A,得到B -> C。继续从C -> AB中删除B,得到C -> A。
得到的函数依赖集是{A -> B, B -> C, C -> A}。
所以,F可能的canonical cover是:
- {A -> C, B -> A, C -> B}
- {A -> C, B -> C, C -> AB}
- {A -> B, B -> C, C -> A}