我有一个包含8列的表,并希望知道该表的最小可能唯一键。 (没有索引)。
这与它有所不同:
select count(*)
from (select distinct id1, id2, id3,
id4, id5, id6,
id7, id8
from mytable);
有没有一种快速简便的方法来确定该表的哪一列组合是唯一的?怎么办?
答案 0 :(得分:1)
不,人们说过,没有快捷简便的方法;作为Barmar commented:
您获得的任何答案都将取决于当时正在加载的数据。对表格所做的任何更改都可能导致结果无效
此外,您之前没有主键搜索唯一性可能很容易出现误报。您尚未强制执行唯一性,因此 唯一的列集可能不是唯一的。
唯一键由表格中的数据决定。您需要了解数据以确定应该是唯一的。
应该有natural方式拥有唯一密钥,即如果你有一个OS用户表,那么唯一密钥可能应该是他们的用户名。同样,如果您有员工表,则无法保证员工姓名(或任何其他属性或属性集)的唯一性,因此您需要创建surrogate key。
只有你能确定这一点;研究你的数据,你应该能够解决它。
一般而言: