SQL查找表中最小的唯一键

时间:2013-08-27 05:57:30

标签: sql oracle oracle11g

我有一个包含8列的表,并希望知道该表的最小可能唯一键。 (没有索引)。

这与它有所不同:

select count(*) 
  from (select distinct id1, id2, id3, 
                        id4, id5, id6, 
                        id7, id8 
          from mytable);

有没有一种快速简便的方法来确定该表的哪一列组合是唯一的?怎么办?

1 个答案:

答案 0 :(得分:1)

不,人们说过,没有快捷简便的方法;作为Barmar commented

  

您获得的任何答案都将取决于当时正在加载的数据。对表格所做的任何更改都可能导致结果无效

此外,您之前没有主键搜索唯一性可能很容易出现误报。您尚未强制执行唯一性,因此 唯一的列集可能不是唯一的。

唯一键由表格中的数据决定。您需要了解数据以确定应该是唯一的。

应该有natural方式拥有唯一密钥,即如果你有一个OS用户表,那么唯一密钥可能应该是他们的用户名。同样,如果您有员工表,则无法保证员工姓名(或任何其他属性或属性集)的唯一性,因此您需要创建surrogate key

只有你能确定这一点;研究你的数据,你应该能够解决它。

一般而言:

  • Every table should have a primary key;应该与表格同时创建。
  • 没有什么比理解数据库中的数据更重要了。在了解了您正在查看的内容之前,您无法有效地使用数据库。