Суперключ может содержать неуникальные идентификаторы или первичный ключ. Но, как и составной первичный ключ, комбинация должна быть уникальной.
Нормализованный набор данных содержит таблицы, в которых хранятся данные о конкретной сущности, имеющие отношение к назначению базы данных. Так, например, компания с базой данных сотрудников имеет таблицу сотрудников и может иметь другую таблицу истории действий сотрудников (продвижения по службе, обзоры, корректировки заработной платы и т. Д.)
Ключ является ключом-кандидатом, если он имеет право однозначно выбрать конкретную строку в таблице так, чтобы данные в этой таблице полностью зависели от этого ключа и больше ничего не требовалось.
Предположим, что таблица сотрудников основана на США. У него может быть два кандидата - один может быть номером сотрудника, другой - номером социального страхования сотрудника. Если компания требует, чтобы сотрудники имели SSN ..., это может произойти.
ОК, два кандидата - номер работника и SSN.
Вы должны выбрать один в качестве первичного ключа, в этом случае другой становится просто другим полем данных в зависимости от выбора ключа.
В США, исходя из двух факторов, номер сотрудника, вероятно, будет выбран как ПК, оставляющий SSN в качестве дополнительного поля. Во-первых, существует юридическое ограничение на использование SSN, потому что это личная информация, способствующая краже личных данных. Во-вторых, возможно, что человек подал заявку на SSN, но еще не получил его. Поэтому на SSN нельзя положиться, что делает его кандидатом недействительным.
Следовательно, разница между первичными ключами и ключами-кандидатами заключается в том, что другие кандидаты проиграли гонку.
SUPERKEY - это, по сути, переопределенный ключ, который гарантированно будет уникальным селектором, но это не самый маленький размер. В моем примере таблицы сотрудников комбинация (номер сотрудника, SSN) была бы суперключей. Обратите внимание, что суперключ часто содержит первичный ключ.
Это нечто большее, чем это. Определение говорит о суперключе, который имеет столько же кардинальных значений, что и вся запись в качестве ключа. (Абсолютный ключ, абсолютно непрактичный, поскольку вам необходимо знать всю запись заранее, чтобы использовать ее в качестве ключа ...)
"Количество элементов" просто говорит, когда я запрашиваю таблицу по одному значению ключа, каково среднее число возвращаемых записей. Для правильного простого ключа это всегда и только 1 для всех значений, которые существуют в таблице вообще. (Очевидно, он равен нулю для чисел, которых нет в таблице.) Количество элементов будет больше единицы для неуникальных ключей. Обычный пример для другого конца спектра для таблицы размера N, использование «Пола» в качестве ключа даст вам количество элементов N / 2. Помните, поскольку это возвращаемый размер AVERAGE, распределение таблицы не обязательно должно быть идеальным.
Надеюсь, это поможет.