Зачем использовать ограничения внешнего ключа в MySQL? - PullRequest
42 голосов
/ 08 августа 2010

Мне было интересно,

Какова будет моя мотивация использовать ограничение в качестве внешнего ключа в MySQL, поскольку я уверен, что могу управлять добавляемыми типами?

Улучшается ли этопроизводительность

1 Ответ

65 голосов
/ 08 августа 2010

Внешние ключи принудительное применение ссылочная целостность . Эти ограничения гарантируют, что строка в таблице order_details с полем order_id, ссылающимся на таблицу orders, никогда не будет иметь значения order_id, которого нет в таблице orders.

Внешние ключи не обязательно должны иметь рабочую реляционную базу данных (на самом деле хранилище MySQL по умолчанию движок не поддерживает FK), но они определенно необходимы, чтобы избежать разрыва отношений и потерянных строк (т. Е. ссылочная целостность). Способность обеспечить ссылочную целостность на уровне базы данных требуется для C в ACID , чтобы стоять.

Что касается ваших опасений по поводу производительности, то в целом затраты на производительность есть, но, вероятно, они будут незначительными. Я предлагаю ввести все ограничения внешнего ключа и экспериментировать без них, только если у вас есть реальные проблемы с производительностью, которые вы не можете решить иначе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...