Основными преимуществами использования реальных внешних ключей являются обеспечение целостности данных и возможность настройки каскадных действий для связанных элементов при изменении или удалении чего-либо.
Например, представьте, что вы программируете форум. У вас есть таблица «тем» с первичным ключом topics.topic_id
, и у вас есть таблица «сообщений», где сообщения прикрепляются к темам со столбцом posts.topic_id
, который является внешним ключом таблицы тем.
Это отношение внешнего ключа гарантирует, что каждое сообщение прикреплено к действующей теме. Если у вашей единственной темы есть ID # 1, в базе данных, прикрепленной к теме № 2, не может быть поста. База данных обеспечивает это.
Для каскадного преимущества вы можете настроить его так, чтобы при удалении темы из таблицы тем база данных автоматически удаляла все сообщения в таблице сообщений, которые были прикреплены к этой теме. Это хорошо, потому что он удаляет шаг, который вы должны помнить, чтобы сделать вручную, который может быть довольно сложным, когда у вас есть много связанных таблиц. С внешними ключами все отношения могут быть очищены автоматически.