Jump to content

Кандидатский ключ

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

Кандидатный ключ — это минимальный суперключ , [1] т.е. суперключ, который не содержит меньший ключ. Следовательно, отношение может иметь несколько потенциальных ключей, каждый из которых имеет разное количество атрибутов. [2]

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

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

Существует функциональная зависимость от ключа-кандидата ко всем атрибутам в отношении.

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

Пример [ править ]

Определение возможных ключей можно проиллюстрировать следующим (абстрактным) примером. Рассмотрим переменную отношения ( relvar ) R с атрибутами ( A , B , C , D ), которая имеет только два следующих допустимых значения r1 и r2 :

р1
А Б С Д
а1 б1 с1 d1
а1 б2 с2 d1
а2 б1 с2 d1
р2
А Б С Д
а1 б1 с1 d1
а1 б2 с2 d1
а1 б1 с2 d2

Здесь r2 отличается от r1 только значениями A и D последнего кортежа.

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

{A,B}, {A,C}, {B,C}, {A,B,C}, {A,B,D}, {A,C,D}, {B,C,D}, {А,Б,С,Г}

Для r2 свойство единственности справедливо для следующих множеств;

{B,C}, {B,D}, {C,D}, {A,B,C}, {A,B,D}, {A,C,D}, {B,C,D}, {А,Б,С,Г}

Поскольку суперключи relvar — это те наборы атрибутов, которые обладают свойством уникальности для всех допустимых значений этой relvar, и поскольку мы предполагаем, что r1 и r2 — все допустимые значения, которые может принимать R , мы можем определить набор суперключей R по формуле взяв пересечение двух списков:

{B,C}, {A,B,C}, {A,B,D}, {A,C,D}, {B,C,D}, {A,B,C,D}

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

{B,C}, {A,B,D}, {A,C,D}

Это действительно потенциальные ключи R. relvar

Нам необходимо рассмотреть все отношения, которые могут быть присвоены relvar, чтобы определить, является ли определенный набор атрибутов потенциальным ключом. Например, если бы мы рассматривали только r1 , мы бы пришли к выводу, что {A,B} — потенциальный ключ, что неверно. Однако кандидатом из такого отношения мы могли бы заключить, что определенный набор не является на ключ, поскольку этот набор не обладает свойством уникальности (пример {A,D} для r1 ). Обратите внимание, что существование правильного подмножества набора, обладающего свойством уникальности, обычно не может использоваться как доказательство того, что надмножество не является кандидатом на ключ. В частности, обратите внимание, что в случае пустого отношения каждое подмножество заголовка обладает свойством уникальности, включая пустое множество.

Определение ключей-кандидатов [ править ]

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

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

На самом деле с помощью этой процедуры мы можем обнаружить каждый потенциальный ключ. просто пробуя каждый возможный порядок удаления атрибутов. Однако существует гораздо больше перестановок атрибутов ( ) чем подмножества ( ). То есть многие порядки атрибутов приведут к одному и тому же потенциальному ключу.

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

Следующий алгоритм фактически работает за полиномиальное время по количеству потенциальных ключей и функциональных зависимостей: [4]

function find_candidate_keys(A, F)
    /* A is the set of all attributes and F is the set of functional dependencies */
    K[0] := minimize(A);
    n := 1; /* Number of Keys known so far */
    i := 0; /* Currently processed key */
    while i < n do
        for each α → β ∈ F do
            /* Build a new potential key from the previous known key and the current FD */
            S := α ∪ (K[i] − β);
            /* Search whether the new potential key is part of the already known keys */ 
            found := false;
            for j := 0 to n-1 do
                if K[j] ⊆ S then found := true;
            /* If not, add it */
            if not found then
                K[n] := minimize(S);
                n := n + 1;
        i := i + 1
    return K

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Дата, Кристофер (2015). «Первые реляционные статьи Кодда: критический анализ» (PDF) . warwick.ac.uk . Проверено 4 января 2020 г. Обратите внимание, что экстракт позволяет «отношению» иметь любое количество первичных ключей, и, более того, такие ключи могут быть «избыточными» (лучше: сокращаемыми ). Другими словами, то, что в статье называется первичным ключом, позже (и лучше) стало известно как суперключ , а то, что в статье называется неизбыточным (лучше: нередуцируемым ) первичным ключом, позже стало известно как ключ-кандидат или (лучше ) просто ключ .
  2. ^ «База данных — может ли отношение иметь потенциальные ключи разной длины?» . Переполнение стека . Проверено 23 марта 2023 г.
  3. ^ Саидиан, Х. (1 февраля 1996 г.). «Эффективный алгоритм вычисления потенциальных ключей схемы реляционной базы данных» . Компьютерный журнал . 39 (2): 124–132. дои : 10.1093/comjnl/39.2.124 . ISSN   0010-4620 .
  4. ^ Л. Луккези, Клаудио; Осборн, Сильвия Л. (октябрь 1978 г.). «Кандидаты в ключи для отношений». Журнал компьютерных и системных наук . 17 (2): 270–279. дои : 10.1016/0022-0000(78)90009-0 .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: aec3de32f3f8338f81c567bc5ae6f00e__1710349140
URL1:https://arc.ask3.ru/arc/aa/ae/0e/aec3de32f3f8338f81c567bc5ae6f00e.html
Заголовок, (Title) документа по адресу, URL1:
Candidate key - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)