2013-08-27 4 views
1

У меня есть таблица с 8 столбцами и хотелось бы узнать наименьший возможный уникальный ключ для этой таблицы. (индексов нет).SQL Найти самый маленький уникальный ключ в таблице

Это в отличие, как он получает:

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

Есть быстрый и простой способ, чтобы выяснить, какой столбец комбинация является уникальной для этой таблицы? Как действовать?

+3

Какие СУБД вы используете? –

+3

Любой полученный вами ответ будет зависеть от данных, которые будут загружены в то время. Любое изменение, внесенное в таблицу, может привести к недействительности результата, так что в чем смысл? – Barmar

+0

Oracle 11g. Мы хотим ввести уникальность с этого момента. Так что, если в будущем какая-либо вставка может нанести вред ключу, это не будет проблемой, но обеспечит уникальность – BaseBallBatBoy

ответ

1

Нет, нет быстрого и легкого способа, как говорили люди; как Barmar commented:

Любой ответ, который вы получите, будет зависеть от данных, которые будут загружены в то время. Любые изменения, внесенные в таблицу, могут привести к аннулированию результата

Кроме того, у вас ранее не было первичного ключа для поиска уникальности, который мог бы легко найти ложное срабатывание. Вы не применяли уникальность, поэтому набор столбцов, который должен быть, быть уникальным может и не быть.

Уникальный ключ определяется данными в вашем столе. Вам нужно понять данные, чтобы определить, что должно быть уникальным.

Должен быть способ использования уникального ключа natural, то есть если у вас есть таблица пользователей ОС, то единственным ключом должно быть их имя пользователя. Точно так же, если у вас есть таблица сотрудников, нет возможности гарантировать уникальность имени сотрудника (или любого другого атрибута или набора атрибутов), поэтому вам нужно будет создать surrogate key.

Только вы можете это определить; изучите свои данные, и вы должны уметь это выработать.

Вообще:

  • Every table should have a primary key; следует создавать одновременно с таблицей.
  • Нет ничего более важного, чем понимание данных в вашей базе данных. Вы не можете эффективно использовать базу данных, пока не поймете, что именно вы смотрите.
Смежные вопросы