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

В чем отличия между клавишей "superkey" и "ключ-кандидат"?

В чем разница между супер-ключом и ключом-кандидатом? Я уже упоминал wiki, dotnet spider, а также книгу Database Concepts 4-е издание. Но я не могу понять эту концепцию. Может ли кто-нибудь объяснить это с помощью надлежащего примера?

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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} идентифицирует Carbon (снова). Если бы не Лантаноиды и Актиноиды, то комбинация {период, группа} была бы уникальной, но из-за них это не так. Однако, как и раньше, атомный номер сам по себе достаточен для однозначной идентификации элемента, поэтому это супер-ключ, а не ключ-кандидат.

Ответ 3

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

Ответ 4

В принципе, ключ-кандидат - это супер-ключ, из которого не может быть сокращен атрибут.

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

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

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

Ответ 5

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

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

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

Супер клавиши:

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

{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}.

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

В двух словах: КАНДИДАТНЫЙ КЛЮЧ - минимальный СУПЕР КЛЮЧ.

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


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

Набор атрибутов (определитель) ---Can Identify---> ( зависит )

A-→ AD

B-→ ABCD

C-→ CD

А C-→ ДСА

А B-→ ABCD

AB C-→ ABCD

BCD-→ ABCD


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

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

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

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