Внешний ключ связывает записи в одной таблице с записями в другой. В таблице заказов есть поле customer_id. Это поле является внешним ключом, указывающим на первичный ключ таблицы клиентов. Эта связь гарантирует, что каждый заказ принадлежит реальному клиенту. Без нее заказы могли бы ссылаться на клиентов, которых не существует. База данных обеспечивает соблюдение этой связи.
Внешние ключи выполняют не только функцию документирования связей. Они обеспечивают ссылочную целостность. Если вы попытаетесь вставить заказ с customer_id, которого нет в таблице клиентов, база данных отклонит его. Если вы попытаетесь удалить клиента, у которого есть заказы, база данных либо заблокирует удаление, либо выполнит каскадное удаление в зависимости от правила. Такая проверка предотвращает появление «осиротевших» записей и несогласованных данных. Внешние ключи также улучшают производительность запросов. База данных может использовать связь для оптимизации объединений. Не все базы данных обеспечивают соблюдение внешних ключей. Некоторые NoSQL-базы данных оставляют ссылочную целостность на усмотрение приложения. Это дает разработчикам больше гибкости, но и больше ответственности. Приложение должно гарантировать корректность ссылок. Если это не удается, данные становятся несогласованными. Внешние ключи являются ограничением. Ограничения неудобны, пока не предотвратят катастрофу.
правила внешнего ключа
- Ограничить — заблокировать удаление, если существуют ссылки.
- Cascade — автоматическое удаление или обновление записей-ссылок
- Установить значение null — установить внешний ключ в значение null при удалении.
- Никаких действий — разрешите операцию и проверьте позже.
Внешний ключ — это связь и гарантия. Связь соединяет таблицы. Гарантия обеспечивает их согласованность.
Comments
No comments yet. Be the first to share a thought.
Leave a comment