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