Что такое потенциальный ключ
Ключи представляют способ идентификации строк в таблице. С помощью ключей мы также можем связывать строки между различными таблицами в отношения.
Суперключ
Superkey (суперключ) — комбинация атрибутов (столбцов), которые уникально идентифицируют каждую строку таблицы. Это могут быть и все столбцы, и несколько и и один. При этом строки, которые содержат значения этих атрибутов, не должны повторяться.
Например, у нас есть сущность Student, которая представляет данные о пользователях и которая имеет следующие атрибуты:
- FirstName (имя)
- LastName (фамилия)
- Year (год рождения)
- Phone (номер телефона)
Какие атрибуты в данном случае могут составлять суперключ:
Каждого студента уникально может идентифицировать телефонный номер, поэтому любые наборы, в которых встречается атрибут Phone, представляют суперключ.
А вот, к примеру, набор не является суперключом, так как у нас теоретически могут быть как минимум два студента с одинаковыми именем, фамилией и годом рождения.
Потенциальный ключ
Candidate key (потенциальный ключ) — представляет собой минимальный суперключ отношения (таблицы), то есть набор атрибутов, который удовлетворяет ряду условий:
- Неприводимость : он не может быть сокращен, он содержит минимально возможный набор атрибутов
- Уникальность : он должен иметь уникальные значения вне зависимости от изменения строки
- Наличие значения : он не должен иметь значения NULL, то есть он обязательно должен иметь значение.
Возьмем ранее выделенные суперключи и найдем среди них candidate key. Первый пять суперключей не соответствуют первому условию, так как все их можно сократить до суперключа :
Суперключ соответствует первому и второму условию, так как он имеет уникальное значение (в данном случае все пользователи могут иметь только уникальные телефонные номера). Но соответствует ли он третьему условию? В целом нет, так как теоретически студент может и не иметь телефона. В этом случае атрибут Phone будет иметь значение NULL, то есть значение будет отсутствовать.
В то же время это может зависеть от ситуации. Если в какой-то систему номер телефона является неотъемлемым атрибутом, например, используется для регистрации и входа в систему, то его можно считать потенциальным ключом. Но в данном случае мы рассматриваем общую ситуацию. И для понимания потенциального ключа необходимо отталкиваться от конкретной системы, которую описывает база данных.
И в таком случае суперключи таблицы не содержат потенциального ключа.
Первичный ключ
Первичный ключ (primary key) непосредственно применяется для идентификации строк в таблице. Он должен соответствовать следующим ограничениям:
- Первичный ключ должен быть уникальным все время
- Он должен постоянно присутствовать в таблице и иметь значение
- Он не должен часто менять свое значение. В идеале он вообще не должен изменять значение.
Как правило, первичный ключ представляет один столбец таблицы, но также может быть составным и состоять из нескольких столбцов.
Если для таблицы можно выделить потенциальный ключ, то его можно использовать в качестве первичного ключа.
Если же потенциальные ключи отсутствуют, то для первичного ключа можно добавить к сущности специальный атрибут, который, как правило, называется, Id или имеет форму [Имя_сущности]Id (например, StudentId), либо может иметь другое название. И обычно данный атрибут принимает целочисленное значение, начиная с 1.
Если же у нас есть несколько потенциальных ключей, то те потенциальные ключи, которые не составляют первичный ключ, являются альтернативными ключами (alternative key).
Например, возьмем представление пользователей на сайтах с двухфакторной авторизацией, где нам обязательно иметь электронный адрес, который нередко выступает в качестве логина, и какой-нибудь номер телефона. В этом случае таблицу пользователей мы можем задать с помощью следующих атрибутов:
- Name (имя пользователя)
- Email (электронный адрес)
- Password (пароль)
- Phone (телефонный номер)
В данном случае атрибуты Email и Phone являются потенциальными ключами, они обязательны в рамках рассматриваемой системы и в принципе уникальны. И теоретически, мы можем использовать один из этих атрибутов в качестве первичного ключа, тогда второй будет альтернативным ключом. Однако опять же поскольку теоретически значения обоих атрибутов могут меняться, то лучше все таки определить дополнительный атрибут специально под первичный ключ.
Что такое потенциальный ключ
2.4.2 Ключевые термины реляционной модели
2.4.2 Ключевые термины реляционной модели
Отношение — это совокупность связей, таблица данных. Согласно более формальному определению отношение — это совокупность экземпляров сущностей с одинаковыми атрибутами и их атрибуты. Базовое отношение — это отношение, чьи записи хранятся физически в базе данных. Представление, или виртуальное отношение, является результатом реляционной операции, примененной на одном или нескольких базовых отношениях, чьим результатом является также отношение. Записи этого отношения не сохраняются в базе данных, однако при помощи представления динамически конструируются для пользователя.
Потенциальный ключ (ключ кандидата) (candidate key) есть суперключ, чье подмножество не является корректным суперключом. Это означает, что и из потенциального ключа нельзя больше удалить ни одного атрибута без того, чтобы он не потерял уникальность. У отношения может быть несколько потенциальных ключей. Свойства потенциальных ключей:
- уникальность — каждое значение потенциального ключа однозначно идентифицирует одну запись отношения
- полнота — из потенциального ключа нельзя не могут быть удалены атрибуты без потери свойства
Первичный ключ (первоключ) (primary key) — потенциальный ключ, который выбран, чтобы однозначно идентифицировать записи отношения. Первичный ключ — это ключ, который однозначно идентифицирует одну запись. Критерии выбора:
- домен (область) атрибута (значение должно быть как можно короче)
- количество атрибутов (атрибуты должны быть как можно меньше)
- вероятность будущей уникальности (должна содержать уникальные значения, как текущие, так и будущие).
Альтернативными ключами (alternate key) называют потенциальный ключ, не выбранный первичным ключом.
Суперключ (superkey) — это атрибут или комбинация атрибутов, который однозначно идентифицирует записи, находящиеся в отношении. Суперключ может содержать атрибуты, которые не нужны для обеспечения уникальности, то есть из него можно удалить атрибуты и он все же гарантирует уникальность.
Интеллектуальный («разумный») ключ, или ключ со смысловым значением (информативный) (intelligent key). Ключ со смысловым значением является, конечно, уникальным, и его значение имеет смысл для пользователя, например, личный код.
Внешний ключ (foreign key) указывает другому отношению, помогает в обеспечении ссылочной целостности (пример и объяснение в предыдущей главе). Позволяет связать отношения / записи друг с другом.
Дополнительные материалы:
Конспект Приит Распли (Priit Raspli)
Конспект Ээро Рингмяэ (Eero Ringmäe)
Потенциальный ключ
Потенциальный ключ (англ. candidate key ) — в реляционной модели данных — подмножество атрибутов отношения, удовлетворяющее требованиям уникальности и минимальности (несократимости).
- Уникальность означает, что нет и не может быть двух кортежей данного отношения, в которых значения этого подмножества атрибутов совпадают (равны).
Свойство уникальности определяется не для конкретного значения переменной отношения в тот или иной момент времени, а по всем возможным значениям, то есть следует из внешнего знания о природе и закономерностях данных, которые могут находиться в переменной отношения. - Минимальность (несократимость) означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, удовлетворяющее условию уникальности. Иными словами, если из потенциального ключа убрать любой атрибут, он утратит свойство уникальности.
Поскольку все кортежи в отношении по определению уникальны, в нём всегда существует хотя бы один потенциальный ключ (например, включающий все атрибуты отношения).
В отношении может быть одновременно несколько потенциальных ключей. Один из них может быть выбран в качестве первичного ключа отношения, тогда другие потенциальные ключи называют альтернативными ключами.
Теоретически, все потенциальные ключи равно пригодны в качестве первичного ключа, на практике в качестве первичного обычно выбирается тот из потенциальных ключей, который имеет меньший размер (физического хранения) и/или включает меньшее количество атрибутов.
См. также
- Первичный ключ
- Суррогатный ключ
- Внешний ключ
- Интеллектуальный ключ
- Суперключ
- Модель данных
- Реляционная
- модель
- алгебра
- Нормальная форма
- Ссылочная целостность
- БД
- СУБД
- БД
- СУБД
- Отношение (таблица)
- Представление
- Хранимая процедура
- Триггер
- Курсор
- Индекс
- Табличное пространство
- Потенциальный
- Первичный
- Внешний
- Естественный
- Суррогатный (искусственный)
- Суперключ
Потенциальный ключ
Потенциальный ключ — в реляционной модели данных — подмножество атрибутов отношения, удовлетворяющее требованиям уникальности и минимальности (несократимости).
Уникальность означает, что не существует двух кортежей данного отношения, в которых значения этого подмножества атрибутов совпадают (равны).
Минимальность (несократимость) означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, удовлетворяющее условию уникальности. Иными словами, если из потенциального ключа убрать любой атрибут, он утратит свойство уникальности.
Поскольку все кортежи в отношении по определению уникальны, в нём всегда существует хотя бы один потенциальный ключ (например, включающий все атрибуты отношения).
В отношении может быть одновременно несколько потенциальных ключей. Один из них может быть выбран в качестве первичного ключа отношения, тогда другие потенциальные ключи называют альтернативными ключами.
Теоретически, все потенциальные ключи равно пригодны в качестве первичного ключа, на практике в качестве первичного обычно выбирается тот из потенциальных ключей, который имеет меньший размер (физического хранения) и/или включает меньшее количество атрибутов.
См. также
- Первичный ключ
- Суррогатный ключ
- Внешний ключ
- Интеллектуальный ключ
- Суперключ
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
- Проставив сноски, внести более точные указания на источники.
- Дополнить статью (статья слишком короткая либо содержит лишь словарное определение).