stringtranslate.com

Присоединиться к зависимости

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

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

Другой способ описания зависимости соединения — сказать, что отношения в зависимости соединения независимы друг от друга.

В отличие от случая функциональных зависимостей , для зависимостей соединений не существует надежной и полной аксиоматизации [1] , хотя аксиоматизация существует для более выразительных языков зависимостей, таких как полностью типизированные зависимости. [2] : Глава 8  Однако, импликация зависимостей соединений разрешима. [2] : Теорема 8.4.12 

Формальное определение

Пусть будет схемой отношения и пусть будет декомпозицией .

Отношение удовлетворяет зависимости соединения

если

Зависимость соединения тривиальна, если один из них является самим собой. [3]

Зависимости 2-арного соединения называются многозначными зависимостями как исторический артефакт того факта, что они изучались до общего случая. Более конкретно, если U — это набор атрибутов, а R — отношение над ним, то R удовлетворяет тогда и только тогда, когда R удовлетворяет

Пример

Дана сеть пиццерий, которая моделирует покупки в таблице Order = {номер-заказа, имя-клиента, название-пиццы, курьер}. Могут быть выведены следующие отношения:

Поскольку отношения независимы, существует следующая зависимость соединения: *((номер-заказа, имя-клиента), (номер-заказа, название-пиццы), (номер-заказа, курьер)).

Однако если у каждого клиента свой курьер, может быть зависимость соединения, например: *((order-number, customer-name), (order-number, pizza-name), (order-number, courier), (customer-name, courier)), но *((order-number, customer-name, courier), (order-number, pizza-name)) также будет допустимой. Это делает очевидным, что для нормализации схемы базы данных недостаточно просто иметь зависимость соединения.

Смотрите также

Ссылки

  1. ^ Петров, С. В. (1989). «Конечная аксиоматизация языков для представления свойств систем». Информационные науки . 47 : 339–372. doi :10.1016/0020-0255(89)90006-6.
  2. ^ ab Abiteboul; Hull; Vianu (1995). Основы баз данных . Addison-Wesley. ISBN 9780201537710.
  3. ^ Зильбершатц, Корт. Концепции систем баз данных (1-е изд.).