2013-05-11 4 views
2

Я читал о ключах в РСУБД. https://stackoverflow.com/a/6951124/1647112 Я, однако, не мог понять необходимость использования ключа-кандидата. Если первичный ключ - это все, что необходимо для однозначной идентификации строки в таблице, зачем нужен ключ-кандидат? Просьба привести хороший пример, чтобы указать различия и важность различных ключей. Спасибо заранее.Разница между основным ключом и ключом кандидата

+1

Я думаю, что OP хочет этого: предположим, у вас есть три таблицы. Основная ваша основная страница имеет в качестве основного основного (для дизайна данных) ключ, определяемый как первичный ключ. Но. Остальные 2 таблицы имеют разные первичные ключи. Чтобы сделать эффективные соединения между таблицей 1 и 2 или таблицей 1 и 3, вам может потребоваться добавить общий столбец из внешней таблицы - внешний ключ - в таблицу 1. Это еще один способ взглянуть на то, что вы пытаетесь Понимаю. Внешние ключи однозначно выделяют строки в rable 1 –

ответ

3

Таблица может иметь один или несколько ключей-кандидатов - это ключи, которые однозначно идентифицируют строку в таблице.

Однако только один из этих ключей-кандидатов может быть выбран как первичный ключ.

+0

ok, поэтому первичный ключ является одним из ключей-кандидатов? –

+2

@ShashankRaghunath - Да. Тот, который вы выбрали. – Oded

+0

Пожалуйста, будьте любезны, чтобы сказать мне, почему используются супер ключи? –

0

С, выше ответа я пришел к такому выводу

Супер ключ (один или несколько атрибутов, используемые для выбора одного или более строк)

     || 
         \/ 

ключа Candidate (один или несколько атрибутов из супер б для выбора одной строки)

     || 
         \/ 

Первичный ключ (один атрибут среди кандидатов ключей, используемых для выбора одной строки)

Я прав?

+2

** первичный ключ ** - ** один из ключей-кандидатов **, выбранный вами как разработчик базы данных. Это не * часть * ключа кандидата - это ** один из существующих, идентифицированных ** кандидатов ключей (ключ ** ** ** кандидата). –

Смежные вопросы