Внешние ключи

Вне́шний ключ (англ. foreign key) — понятие теории реляционных баз данных, относящееся к ограничениям целостности базы данных.Неформально выражаясь, внешний ключ представляет собой подмножество атрибутов некоторой переменной отношения R 2, значения которых должны совпадать со значениями некоторого потенциального ключа некоторой переменной отношения R 1. Формальное определение. Пусть R 1 и R 2 — две переменные отношения, не обязательно различные. Внешним ключом FK в R 2 является подмножество атрибутов переменной R 2 такое, что выполняются следующие требования: В переменной отношения R 1 имеется потенциальный ключ CK такой, что FK и CK совпадают с точностью до переименования атрибутов (то есть переименованием некоторого подмножества атрибутов FK можно получить такое подмножество атрибутов FK’, что FK’ и CK совпадают как по именами, так и по типам атрибутов). В любой момент времени каждое значение FK в текущем значении R 2 идентично значению CK в некотором кортеже в текущем значении R 1. Иными словами, в каждый момент времени множество всех значений FK в R 2 является (нестрогим) подмножеством значений CK в R 1. При этом для данного конкретного внешнего ключа FKCK отношение R 1, содержащее потенциальный ключ, называют главным, целевым, или родительским отношением, а отношение R 2, содержащее внешний ключ, называют подчинённым, или дочерним отношением.Поддержка внешних ключей также называется соблюдением ссылочной целостности. Реляционные СУБД поддерживают автоматический контроль ссылочной целостности.

Стратегии поддержания ссылочной целостности

· RESTRICT (ОГРАНИЧИТЬ) - не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. Это самая простая стратегия, требующая только проверки, имеются ли кортежи в дочернем отношении, связанные с некоторым кортежем в родительском отношении.

· CASCADE (КАСКАДИРОВАТЬ) - разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: