Оглавление:
Определение - что означает внешний ключ?
Внешний ключ - это столбец или группа столбцов в таблице реляционной базы данных, которая обеспечивает связь между данными в двух таблицах. Он действует как перекрестная ссылка между таблицами, потому что он ссылается на первичный ключ другой таблицы, тем самым устанавливая связь между ними.
Большинство таблиц в системе реляционных баз данных придерживаются концепции внешнего ключа. В сложных базах данных и хранилищах данных данные в домене должны добавляться в несколько таблиц, что позволяет поддерживать связь между ними. Концепция ссылочной целостности является производной от теории внешнего ключа.
Внешние ключи и их реализация являются более сложными, чем первичные ключи.
Техопедия объясняет иностранный ключ
Для любого столбца, выступающего в качестве внешнего ключа, соответствующее значение должно существовать в таблице ссылок. При вставке данных и удалении данных из столбца внешнего ключа следует соблюдать особую осторожность, так как неосторожное удаление или вставка может разрушить отношения между двумя таблицами.
Например, если есть две таблицы, customer и order, между ними можно создать связь, введя внешний ключ в таблицу order, которая ссылается на идентификатор клиента в таблице customer. Столбец идентификатора клиента существует в таблицах клиента и заказа. Идентификатор клиента в таблице заказов становится внешним ключом, ссылаясь на первичный ключ в таблице клиентов. Чтобы вставить запись в таблицу заказов, должно быть выполнено ограничение внешнего ключа. Попытка ввести идентификатор клиента, которого нет в таблице клиентов, не удалась, что позволило сохранить ссылочную целостность таблицы.
Некоторые ссылочные действия, связанные с действием внешнего ключа, включают следующее:
- Каскад: при удалении строк в родительской таблице соответствующие столбцы внешнего ключа в дочерней таблице также удаляются, создавая каскадное удаление.
- Set Null: при удалении или обновлении ссылочной строки в родительской таблице значения внешнего ключа в ссылочной строке устанавливаются в NULL для поддержания ссылочной целостности.
- Триггеры: ссылочные действия обычно реализуются как триггеры. Во многих отношениях действия внешнего ключа похожи на определяемые пользователем триггеры. Для обеспечения надлежащего выполнения упорядоченные ссылочные действия иногда заменяются эквивалентными пользовательскими триггерами.
- Установить по умолчанию: это ссылочное действие похоже на «установить ноль». Значения внешнего ключа в дочерней таблице устанавливаются равными значению столбца по умолчанию при удалении или обновлении ссылочной строки в родительской таблице.
- Ограничение: это обычное ссылочное действие, связанное с внешним ключом. Значение в родительской таблице нельзя удалить или обновить, если на него ссылается внешний ключ в другой таблице.
- Бездействие: Это ссылочное действие по функции похоже на действие «ограничить», за исключением того, что проверка бездействия выполняется только после попытки изменить таблицу.
