Sql 查找关系具有的最大候选键数?
我试图解决这个问题,它与关系中的候选键有关。 问题是:Sql 查找关系具有的最大候选键数?,sql,functional-dependencies,candidate-key,Sql,Functional Dependencies,Candidate Key,我试图解决这个问题,它与关系中的候选键有关。 问题是: Consider table R with attributes A, B, C, D, and E. What is the largest number of candidate keys that R could simultaneously have? 答案是10,但我不知道它是如何做到的,也不知道在计算答案时这个词是如何同时起作用的。不是其他集合子集的集合。 例如{A-B}和{A,B,C}不能同时作为候选键,因为{A,B
Consider table R with attributes A, B, C, D, and E. What is the largest number of
candidate keys that R could simultaneously have?
答案是
10
,但我不知道它是如何做到的,也不知道在计算答案时这个词是如何同时起作用的。不是其他集合子集的集合。例如{A-B}和{A,B,C}不能同时作为候选键,因为{A,B}是{A,B,C}的子集。
2个属性或3个属性的组合将生成最大数量的同时候选键。
请看这3个属性集实际上是这2个属性集的补集,例如,{C,D,e}是{A,B}的补集
2 3
attributes attributes
sets sets
1. {A,B} - {C,D,E}
2. {A,C} - {B,D,E}
3. {A,D} - {B,C,E}
4. {A,E} - {B,C,D}
-
5. {B,C} - {A,D,E}
6. {B,D} - {A,C,E}
7. {B,E} - {A,C,D}
-
8. {C,D} - {A,B,E}
9. {C,E} - {A,B,D}
-
10. {D,E} - {A,B,C}
如果我选择一个属性集,我只有4个选项
{A},{B},{C},{D}
{A,B,C,D},{A,B,C,E},{A,B,D,E},{B,C,D,E}
任何包含1个以上元素的集合都将包含上述元素之一,因此将不合格
如果我选择4个属性集,我只有4个选项
{A},{B},{C},{D}
{A,B,C,D},{A,B,C,E},{A,B,D,E},{B,C,D,E}
任何超过4个元素的集合都将包含上述元素之一,因此将不合格。
任何少于4个元素的集合将包含在上述其中一个元素中,因此不合格
等等。不是其他集合子集的集合。
例如{A-B}和{A,B,C}不能同时作为候选键,因为{A,B}是{A,B,C}的子集。
2个属性或3个属性的组合将生成最大数量的同时候选键。
请看这3个属性集实际上是这2个属性集的补集,例如,{C,D,e}是{A,B}的补集
2 3
attributes attributes
sets sets
1. {A,B} - {C,D,E}
2. {A,C} - {B,D,E}
3. {A,D} - {B,C,E}
4. {A,E} - {B,C,D}
-
5. {B,C} - {A,D,E}
6. {B,D} - {A,C,E}
7. {B,E} - {A,C,D}
-
8. {C,D} - {A,B,E}
9. {C,E} - {A,B,D}
-
10. {D,E} - {A,B,C}
如果我选择一个属性集,我只有4个选项
{A},{B},{C},{D}
{A,B,C,D},{A,B,C,E},{A,B,D,E},{B,C,D,E}
任何包含1个以上元素的集合都将包含上述元素之一,因此将不合格
如果我选择4个属性集,我只有4个选项
{A},{B},{C},{D}
{A,B,C,D},{A,B,C,E},{A,B,D,E},{B,C,D,E}
任何超过4个元素的集合都将包含上述元素之一,因此将不合格。
任何少于4个元素的集合将包含在上述其中一个元素中,因此不合格
等等。对于5个键,可能最好使用蛮力。理解这些想法比计算更重要(DuDu/David给出了一个10个候选关键点的好例子,表明一组10个关键点是可能的,因此最大值至少有这么大) 这个主意是什么?候选关键字是唯一属性的组合。因此,如果A是唯一的,那么A和任何其他列也是唯一的。一组候选密钥是:
- A
- B
- C
- D
- E
这样,您只需要考虑1, 2, 3、4和5个密钥的子集,就可以了。当你计算出来时,你会发现最大的数字是:
5 10 10 5 1
您可以在开头添加一个“1”,这样您就可以识别出该模式。这是一排从。这个观察结果(以及相关的证明)实际上使确定任意给定n的最大值变得容易
顺便提一下,长度3的集合是:
A B C
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E
对于5个键,可能最好使用蛮力。理解这些想法比计算更重要(DuDu/David给出了一个10个候选关键点的好例子,表明一组10个关键点是可能的,因此最大值至少有这么大) 这个主意是什么?候选关键字是唯一属性的组合。因此,如果A是唯一的,那么A和任何其他列也是唯一的。一组候选密钥是:
- A
- B
- C
- D
- E
这样,您只需要考虑1, 2, 3、4和5个密钥的子集,就可以了。当你计算出来时,你会发现最大的数字是:
5 10 10 5 1
您可以在开头添加一个“1”,这样您就可以识别出该模式。这是一排从。这个观察结果(以及相关的证明)实际上使确定任意给定n的最大值变得容易
顺便提一下,长度3的集合是:
A B C
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E
为什么只选择双向配对?为什么不同时使用3路、4路或5路?@GordonLinoff——R可以同时拥有的最大数量的候选密钥。请参阅更新的答案。为什么只选择双向配对?为什么不同时使用3路、4路或5路?@GordonLinoff——R可以同时拥有的最大数量的候选密钥