В теории баз данных зависимость соединения — это ограничение на набор правовых отношений по схеме базы данных. Таблица подчиняется зависимости соединения , если ее всегда можно воссоздать путем соединения нескольких таблиц, каждая из которых имеет подмножество атрибутов . Если одна из таблиц в соединении имеет все атрибуты таблицы , зависимость соединения называется тривиальной.
Зависимость соединения играет важную роль в пятой нормальной форме (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)) также будет допустимой. Это делает очевидным, что для нормализации схемы базы данных недостаточно просто иметь зависимость соединения.