Каковы различия между суперключем и ключом-кандидатом? - PullRequest
44 голосов
/ 23 декабря 2010

В чем различия между супер ключом и ключом-кандидатом? Я уже упоминал вики, паука dotnet, а также книгу «Концепции базы данных» 4-го издания Но я не могу понять концепцию. Может кто-нибудь объяснить, пожалуйста, с надлежащим примером?

Ответы [ 10 ]

71 голосов
/ 23 декабря 2010

Candidate key - это super key, из которого нельзя удалить какие-либо поля.

Например, выпуск программного обеспечения может быть идентифицирован либо по основной / вспомогательной версии, либо по дате сборки (мы предполагаем, что каждую ночь).builds).

Сохранение даты в трех полях, конечно, не очень хорошая идея, но давайте представим, что это для демонстрационных целей:

year  month date  major  minor
2008  01    13     0      1
2008  04    23     0      2
2009  11    05     1      0
2010  04    05     1      1

Так что (year, major, minor) или (year, month, date, major) суперключи (поскольку они уникальны), но не ключи-кандидаты, так как вы можете удалить year или major, а оставшийся набор столбцов будет по-прежнему суперключем.

(year, month, date) и (major, minor)ключи-кандидаты, поскольку вы не можете удалить из них ни одно из полей, не нарушая уникальности.

23 голосов
/ 23 декабря 2010

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

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

Рассмотрим эту таблицу элементов:

CREATE TABLE elements
(
    atomic_number   INTEGER NOT NULL PRIMARY KEY
                    CHECK (atomic_number > 0 AND atomic_number < 120),
    symbol          CHAR(3) NOT NULL UNIQUE,
    name            CHAR(20) NOT NULL UNIQUE,
    atomic_weight   DECIMAL(8,4) NOT NULL,
    period          SMALLINT NOT NULL
                    CHECK (period BETWEEN 1 AND 7),
    group           CHAR(2) NOT NULL
                    -- 'L' for Lanthanoids, 'A' for Actinoids
                    CHECK (group IN ('1', '2', 'L', 'A', '3', '4', '5', '6',
                                     '7', '8', '9', '10', '11', '12', '13',
                                     '14', '15', '16', '17', '18')),
    stable          CHAR(1) DEFAULT 'Y' NOT NULL
                    CHECK (stable IN ('Y', 'N'))
);

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

Рассмотрим ключ, состоящий из {атомного номера, имени элемента, символа}. Если вы предоставляете согласованный набор значений для этих трех полей (скажем, {6, Carbon, C}), то вы однозначно идентифицируете запись для элемента - Carbon. Однако это очень супер-ключ, который не является ключом-кандидатом, потому что он не является неснижаемым; Вы можете исключить любые два из трех полей, не теряя уникальное свойство идентификации.

В качестве другого примера рассмотрим ключ, состоящий из {атомного номера, периода, группы}. Опять же, это уникальный идентификатор строки; {6, 2, 14} идентифицирует углерод (снова). Если бы не лантаноиды и актиноиды, тогда комбинация {period, group} была бы уникальной, но из-за них это не так. Однако, как и прежде, атомный номер сам по себе достаточен для уникальной идентификации элемента, так что это супер ключ, а не ключ-кандидат.

16 голосов
/ 23 декабря 2010

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

4 голосов
/ 09 января 2017

A Суперключ - это набор или один или несколько столбцов для уникальной идентификации строк в таблице.

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

В таблице Employee есть три столбца: Emp_Code,Emp_Number,Emp_Name

Суперключи:

Все следующие наборы могут однозначно идентифицировать строки таблицы сотрудника.

{Emp_Code}
{Emp_Number}
{Emp_Code, Emp_Number}
{Emp_Code, Emp_Name}
{Emp_Code, Emp_Number, Emp_Name}
{Emp_Number, Emp_Name}

Ключи-кандидаты:

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

{Emp_Code}
{Emp_Number}

Первичный ключ:

Первичный ключ выбирается из наборов ключей-кандидатов разработчиком базы данных. Так что либо {Emp_Code}, либо {Emp_Number} может быть первичным ключом.

4 голосов
/ 20 февраля 2015

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

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

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

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

1 голос
/ 30 сентября 2017

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

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

1 голос
/ 24 августа 2017

Один ключ-кандидат выбран в качестве первичного ключа. Другие возможные ключи называются альтернативными ключами .

1 голос
/ 26 сентября 2014

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

Ключ-кандидат: минимальный набор суперключей, которые имеют следующие два свойства: уникальность и неприводимый набор или атрибут

0 голосов
/ 20 мая 2019

В двух словах: CANDIDATE KEY - это минимальный SUPER KEY.

Где Super key - это комбинация столбцов (или атрибутов), которые однозначно идентифицируют любую запись (или кортеж) в отношении (таблице) в РСУБД.


Например, рассмотрим следующие зависимости в таблице, имеющей столбцы A, B, C и D (Даем эту таблицу только для краткого примера, поэтому не охватываем все зависимости, которые может иметь R).

Набор атрибутов (определитель) --- Может идентифицировать ---> (Зависит)

A ----> AD

B -----> ABCD

C -----> CD

AC -----> ACD

AB -----> ABCD

ABC -----> ABCD

BCD -----> ABCD


Сейчас, B, AB, ABC, BCD идентифицирует все столбцы, поэтому эти четыре имеют право на супер ключ.

Но, B⊂AB;B⊂ABC;Следовательно, B⊂BCD AB, ABC и BCD дисквалифицированы для CANDIDATE KEY, поскольку их подмножества могут идентифицировать отношение, поэтому они не являются минимальными, и, следовательно, только B является ключом-кандидатом, а не другие.

Еще одна вещь Первичный ключ - это любой один среди возможных ключей.

Спасибо за вопрос

0 голосов
/ 10 января 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...