В чем разница между супер-ключом и ключом-кандидатом? Я уже упоминал wiki, dotnet spider, а также книгу Database Concepts 4-е издание. Но я не могу понять эту концепцию. Может ли кто-нибудь объяснить это с помощью надлежащего примера?
В чем отличия между клавишей "superkey" и "ключ-кандидат"?
Ответ 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 является ключом-кандидатом, а не другие.
Еще одна вещь Первичный ключ любой один из ключей - кандидатов.
Спасибо за вопрос