【发布时间】:2017-06-29 21:04:30
【问题描述】:
给定一个包含数十列、数千行且列之间没有已知函数依赖关系的表,是否有任何算法可以自动为该表找到比这更快或更有效的候选键:
- 检查是否有任何单个列是候选键
检查是否有两列是候选键
检查是否有 3 列是候选键
... 以此类推,直到找到密钥?
【问题讨论】:
-
你是什么意思,“没有已知的功能依赖”?那是不对的,总是有微不足道的FD。你的意思是,没有非平凡的 FD 持有?你为什么这么说?你到底给了什么? (你确定?这意味着没有给定的超级键、CK、PK 或 UNIQUE,因为这些暗示某些 FD 持有和不持有。)那么它唯一的 CK 是所有属性的集合。你的意思是,他们可能持有但你不知道?您需要能够确定为找到 CK 而持有的所有 FD 的集合。所有属性的集合始终是一个超级键。你是什么意思,“检查”?你希望如何做到这一点?
标签: sql algorithm candidate-key