Разница между супер ключом и составным ключом

Мне нужно понять разницу между супер ключом и составным ключом. Примеры, которые я нашел, еще больше запутали. Можете ли вы просто уточнить, в чем разница? Спасибо

4 ответа

Решение

Супер ключ однозначно идентифицирует строку. Он может состоять из одного или нескольких столбцов. Составной ключ - это ключ, состоящий из нескольких столбцов.

Если Супер Ключ состоит из более чем одного столбца, он также является составным.

Если составной ключ однозначно идентифицирует строку, он также является супер ключом.

Я не вижу, чтобы название "Супер ключ" использовалось слишком часто: обычно оно просто называется "Уникальный ключ".

Принятый ответ не совсем точен...

  • Суперключ - это любой набор столбцов, которые вместе взятые являются уникальными. Обычно в таблице содержится много суперключей, и один и тот же столбец может использоваться многими суперключами. Они не очень полезны сами по себе, но являются скорее интеллектуальным инструментом для определения ключей-кандидатов (см. Ниже).
  • Ключ-кандидат - это минимальный суперключ - если какой-либо столбец будет удален, он больше не будет уникальным. Как правило, ключей-кандидатов значительно меньше, чем суперключей.
  • Ключ - это просто синоним ключа-кандидата.
  • Составной ключ 1 - это ключ, имеющий более одного столбца. Другими словами, это минимальный суперключ, имеющий несколько столбцов.

Еще несколько баллов:

  • Каждый ключ уникален, поэтому называть его "уникальным ключом" избыточно. Достаточно просто "ключа".
  • На уровне СУБД ключ применяется через ограничение PRIMARY KEY или UNIQUE 2.
  • Индекс обычно присутствует под ключом (ограничение PRIMARY KEY или UNIQUE) по соображениям производительности. Но несмотря на то, что они часто встречаются вместе, ключ и индекс - это отдельные понятия: ключ - это логическое понятие (изменяет значение данных), а индекс - это физическое понятие (не изменяет значение данных, а только производительность).

1 ака. сложный, сложный или сцепленный.

2 В столбцах NOT NULL.

Да, я согласен с @Branko, принятый ответ не является точным и неясным.

Я возьму пример таблицы Employee:

CREATE TABLE Employee (
Employee ID, 
FullName, 
SSN, 
DeptID
);

И чтобы узнать разницу между ч / б ключами Super & Candidate, давайте сначала проверим, какие есть другие типы ключей?

1. Ключ-кандидат: отдельные столбцы в таблице, которые соответствуют уникальности всех строк. Здесь в таблице EmployeeID EmployeeID и SSN находятся ключи-кандидаты.

2. Первичный ключ: это столбцы, которые вы выбираете для сохранения уникальности в таблице. Здесь в таблице Employee вы можете выбрать столбцы EmployeeID или SSN, EmployeeID является предпочтительным выбором, поскольку SSN является безопасным значением.

3. Альтернативный ключ: столбец-кандидат, отличный от основного столбца, например, если EmployeeID равен PK, тогда SSN будет альтернативным ключом.

4. Супер ключ: если вы добавляете любой другой столбец / атрибут к первичному ключу, он становится супер ключом, как EmployeeID + FullName - это супер ключ.

5. Составной ключ. Если в таблице нет отдельных столбцов, соответствующих критериям для ключа-кандидата, необходимо выбрать 2 или более столбцов, чтобы сделать строку уникальной. Например, если нет столбцов EmployeeID или SSN, вы можете сделать FullName + DateOfBirth в качестве составного первичного ключа. Но все же может быть узкая вероятность дублирования строк.

Ссылка

Суперключ - это набор из одного или нескольких атрибутов, которые, взятые вместе, позволяют нам однозначно идентифицировать сущность в наборе сущностей. Например, атрибут customer-id клиента набора сущностей достаточен для того, чтобы отличить одну сущность customer от другой. Таким образом, идентификатор клиента - это суперключ.

Составной ключ - это комбинация нескольких полей / столбцов таблицы. Это может быть ключ-кандидат, первичный ключ.

Другие вопросы по тегам