Разница между супер ключом и составным ключом
Мне нужно понять разницу между супер ключом и составным ключом. Примеры, которые я нашел, еще больше запутали. Можете ли вы просто уточнить, в чем разница? Спасибо
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 от другой. Таким образом, идентификатор клиента - это суперключ.
Составной ключ - это комбинация нескольких полей / столбцов таблицы. Это может быть ключ-кандидат, первичный ключ.