Подтвердить что ты не робот

Superkey, ключ-кандидат и первичный ключ

Может ли какая-либо душа разъяснить мои сомнения с помощью простого примера ниже и определить суперключ, ключ-кандидат и первичный ключ?

Я знаю, что есть много сообщений и сайтов, объясняющих различия между ними. Но похоже, что все это общие определения.

Пример:

Student (StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber)

Итак, из приведенного выше примера я могу знать, что StudentNumber является первичным ключом.

Но что касается суперкласса, я немного смущен, какая комбинация атрибутов может быть сгруппирована в суперклее?

Что касается ключа-кандидата, меня смущает определение, данное, поскольку любой ключ-кандидат может квалифицироваться как первичный ключ.

Означает ли это, что атрибуты, такие как PhoneNumber, являются ключом-кандидатом и могут быть первичным ключом? (Предполагая, что a PhoneNumber принадлежит только одному ученику)

Спасибо за любое разъяснение!

4b9b3361

Ответ 1

Поскольку вы не хотите, чтобы определения учебников, свободно говоря, супер-ключ - это набор столбцов, который однозначно определяет строку.

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

В вашем примере я предполагаю:

StudentNumber    unique
FamilyName     not unique
Degree     not unique
Major      not unique
Grade      not unique
PhoneNumber    not unique

В этом случае суперключ представляет собой любую комбинацию, содержащую номер студента.

Итак, следующие суперклассы

StudentNumber
StudentNumber, FamilyName
StudentNumber, FamilyName, Degree
StudentNumber, FamilyName, Degree, Major
StudentNumber, FamilyName, Degree, Major, Grade
StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber
StudentNumber, Degree
StudentNumber, Degree, Major
StudentNumber, Degree, Major, Grade
StudentNumber, Degree, Major, Grade, PhoneNumber
StudentNumber, Major
StudentNumber, Major, Grade
StudentNumber, Major, Grade, PhoneNumber
StudentNumber, Grade
StudentNumber, Grade, PhoneNumber
StudentNumber, PhoneNumber

Теперь предположим, что если PhoneNumber уникален (кто в настоящее время обменивается телефонами), то следующие суперклассы (в дополнение к тому, что я перечислил выше).

PhoneNumber
PhoneNumber, Grade, 
PhoneNumber, Major, Grade
PhoneNumber, Degree, Major, Grade
PhoneNumber, FamilyName, Degree, Major, Grade
PhoneNumber, Major
PhoneNumber, Degree, Major
PhoneNumber, FamilyName, Degree, Major
PhoneNumber, StudentNumber, FamilyName, Degree, Major
PhoneNumber, Degree
PhoneNumber, FamilyName, Degree
PhoneNumber, StudentNumber, FamilyName, Degree
PhoneNumber, FamilyName
PhoneNumber, StudentNumber, FamilyName

Ключ-кандидат - это просто "самый короткий" суперключ. Возвращаясь к первому списку суперклеев (т.е. Номер телефона не является уникальным), самым коротким суперключем является StudentNumber.

Первичный ключ обычно представляет собой только ключ-кандидат.

Ответ 2

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

Ключ-кандидат - это "минимальный" суперклас, что означает наименьшее подмножество атрибутов суперклина, которые являются уникальными. Поэтому удаление любого атрибута из ключа-кандидата делает его не уникальным.

Первичный ключ - это только ключ-кандидат. Нет никакой разницы между первичным ключом и любым другим ключом-кандидатом.

Не очень полезно делать предположения о ключах, основанных только на списке имен атрибутов. Вы должны знать, какие зависимости должны удерживать между атрибутами. Сказав это, я предполагаю, что вы правы - StudentNumber скорее всего является ключом кандидата в вашем примере.

Ответ 3

Растяжение ответа на Cambium, если PhoneNumber также уникально вместе с StudentNumber, тогда candidate keys будет: - {StudentNumber}, {PhoneNumber}.
Здесь мы не можем предполагать {StudentNumber,PhoneNumber} как одиночный candidate key, потому что, если мы опускаем один атрибут say StudentNumber, мы по-прежнему получаем уникальный атрибут {PhoneNumber}, нарушая определение candidate key. Primary key: Выберите один candidate key из всех candidate keys. Существует 2 candidate keys, поэтому мы можем выбрать {StudentNumber} как primary key.
Alternate keys: leftover candidate keys, после выбора primary key из candidate keys, являются альтернативными клавишами, то есть {PhoneNumber}.

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

composite key: Составной ключ содержит как минимум один составной ключ и еще один атрибут. Композитные клавиши могут также содержать простые ключи и неключевые атрибуты.