В чем разница между Первичным ключом и Супер ключом в СУБД

20

Я новичок в СУБД, и я все еще изучаю теорию.

Я действительно запутался с этим ключевым бизнесом, и после поиска в Google я сузил его до двух ключей, которые я не получаю (первичный и супер ключ).

У меня есть несколько вопросов по СУБД. Буду признателен, если вы сможете мне за них ответить.

1) В чем разница между Первичным ключом и Супер ключом в СУБД? Высоко ценю, если вы можете использовать подробный пример, чтобы объяснить правильно

2) ключ может Первичный ключ и супер как уже несколько столбцов объединяются в первичный ключ и супер ключ?

3) Является ли первичный ключ поднабором суперключа или наоборот?

MikeHil
источник
1
Одна вещь, которая часто скрывается, это то, что сам кортеж (строка) - это суперключ. Поскольку цель состоит в том, чтобы иметь возможность однозначно идентифицировать строку, т.е. иметь возможность однозначно идентифицировать кортеж, содержащий определенную комбинацию значений, один из способов сделать это - уже иметь все доступные значения. Следовательно, кортеж сам по себе является суперключем, поскольку, как только мы узнаем значения в кортеже, мы ясно знаем, как найти кортеж с этими значениями. Сначала это кажется глупым, но оно устанавливает верхнюю границу того, что может быть суперключем для кортежа - самого кортежа.
Дейв
@Dave Набор всех имен столбцов отношения / таблицы (и, следовательно, каждого из его кортежей / строк) является его суперключем. Не «сам кортеж (ряд)».
philipxy
@philipxy Вы правы, и я ошибся - я исправляюсь. Спасибо за добавление разъяснений.
Дэйв

Ответы:

23

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

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

Как разработчик / дизайнер баз данных с 30-летним опытом, я никогда не слышал термин Super Key, пока не увидел этот вопрос и не нашел его. Концепция Super Key кажется более уместной для темы производительности и разработки физической схемы, поскольку она напрямую соответствует концепции уникального некластеризованного индекса с дополнительными столбцами для улучшенного покрытия запросов.

Питер Гиркенс
источник
3
Это довольно неточно. Вы используете superkey, CK & PK вместо правильного superkey, superkey & CK. Суперключ - это УНИКАЛЬНЫЙ набор. (CK - это «минимальный» суперключ. Нет понятия «минимальный CK». Каждый CK - это суперключ. Поэтому суперключ не должен иметь больше столбцов, чем CK. PK - это CK, который вызывает PK. Если бы это был «минимальный CK», то «минимальный» должен был бы означать «произвольный».) SQL PK & UNIQUE NOT NULL объявляют суперключи. (SQL PK может или не может быть PK.) Superkeys важны для определения CK, что важно для проектирования, включая нормализацию. Смотри мой ответ.
Philipxy
1
Кроме того, понимание SK необходимо, чтобы использовать Boyce-Codd NF
Tanckom
16

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

Например, у нас есть таблица

Book (BookId, BookName, Author)

Таким образом, в этой таблице мы можем иметь

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Как наш супер ключ. Каждый супер-ключ может однозначно идентифицировать каждый кортеж (запись).

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

   (BookId)
   (BookName,Author)

Эти два ключа могут быть ключами-кандидатами, поскольку остальные ключи имеют избыточные атрибуты. Значения в записи супер ключа (BookId, BookName) могут быть однозначно идентифицированы с помощью просто bookid, и, следовательно, Bookname является избыточным атрибутом.

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

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

Паял Триведи
источник
Это отвечает на вопрос и заслуживает одобрения.
SRK
Также отметим , что другое название alternative keyэто secondary keyони одинаковы. Отличный ответ!
Ваэль Альшабани
2

От этого ответа stackoverflow.com мой :

Ключ-кандидат - это набор столбцов, который уникально идентифицирует строки и содержит не меньшее («правильное») подмножество столбцов, которое уникально идентифицирует строки.

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

В SQL вы не можете объявить пустой ключ-кандидат. Кроме того, UNIQUE NOT NULL и PRIMARY KEY (что в терминах ограничений означает просто UNIQUE NOT NULL) объявляют суперключи, а не ключи как таковые. Если такой набор столбцов объявления не содержит меньший набор столбцов, объявленный как суперключ, то объявленный им суперключ является ключом-кандидатом.

Из этого stackoverflow.com мой ответ о данной таблице:

Для наборов столбцов X и Y можно записать X -> Y . Мы говорим, что X - это детерминантный набор, а Y - это определенный набор / в функциональной зависимости ( FD ) X -> Y.

Мы говорим, что X функционально определяет Y, а Y функционально определяется X. Мы говорим, что X является детерминантом X -> Y. В {C} -> Y мы говорим, что C функционально определяет Y. В X -> {C} мы говорим X функционально определяет C. Когда X является надмножеством Y, мы говорим, что X -> Y тривиально .

Мы говорим, что X -> Y выполняется в таблице T, когда каждая подстрока значений для X всегда / только появляется с одной и той же подстрокой значений для Y. Или мы говорим, что X -> Y является FD of / в T. Когда X является определителем для некоторого FD в таблице T мы говорим, что X является определителем / в T.

Суперключе из таблицы Т представляет собой набор столбцов , которые функционально определяет каждый атрибут. Ключ - кандидат ( CK ) является суперключ , который содержит не меньше суперключ. Мы можем выбрать один CK в качестве первичного ключа ( PK ), а затем вызвать альтернативные ключи других CK . Столбец прост, когда он находится в некотором CK.

(Как я там прокомментировал: «Четырех жирных предложений для FD, hold, superkey и CK было бы достаточно».)

(Таблица с пустым CK должна содержать не более одной строки. Набор столбцов, определенный пустым набором, должен иметь одинаковое значение subrow в каждой строке.)

philipxy
источник
1

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

Типы ключей Следующие таблицы или отношения будут использоваться для определения различных типов ключей.

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

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

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

Составной ключ или составной ключ Первичный ключ, состоящий из двух или более атрибутов, называется составным ключом.

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

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

Пример для супер ключа: представьте таблицу с полями Name, Age, SSN и <Phone Extension>. Эта таблица имеет много возможных суперключей. Три из них - это SSN, добавочный номер телефона и имя. Из перечисленных, только SSN является ключом-кандидатом, так как остальные содержат информацию, необязательную для уникальной идентификации записей.

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

для минимального супер ключа обратитесь по этой ссылке, там более понятен http://www.answers.com/topic/superkey-1

Вед Пракаш
источник