Базы данных

Определение ключей по функциональнымзависимостям


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

Предположим, что S — это схема, определенная как множество атрибутов А и множество функциональных зависимостей F. Пусть F+ является замыканием множества определенных для S функциональных зависимостей. Множество атрибутов X является ключом для S тогда и только тогда, когда функциональная зависимость X -> А-Х принадлежит замыканию F+ и для каждого Y с X, Y -» X не принадлежит F+.

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

На 5.7 представлена последовательность вывода ключа, {purchaseOrderld, movield}, показанной на 5.5 схемы. Аналогичным образом можно вывести ключ {purchaseOrderld, title}, так как movield зависит от title. Смысл проведенного анализа ключа состоит в том, что комбинация ID заказа и ID фильма (или его названия) является уникальной. Каждый заказ на покупку (с единым ID заказа) может содержать несколько фильмов, но ни один ID фильма не может появляться в одном и том же заказе дважды.

Supplierld -У {supplierName, street, city, state, zipcode) объединение и транзитивность

purchaseOrderld —> (supplierld, dateOrdered, supplierName, street, city, state, zipcode) объединение и транзитивность

(movield, dateOrdered) -» quantity псевдо

транзитивность

(movield, dateOrdered) -» (title, quantity) присоединение и объединение

(purchaseOrderld, movield) – (supplierld, supplierName,

street, city, state, zipcode, title, quantity, dateOrdered) псевдо транзитивность

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

Комментарии закрыты