Лучше ли использовать внешние ключи в таблицах или могут быть достигнуты одни и те же результаты с помощью соединений?
Внешние ключи против воссоединения
Ответ 1
Внешние ключи являются лишь ограничениями для обеспечения ссылочной целостности, Вам все равно придется использовать JOINs для создания ваших запросов.
Внешние ключи гарантируют, что строка в таблице order_details
с полем order_id
, ссылающаяся на таблицу orders
, никогда не будет иметь значение order_id
, которое не существует в таблице orders
. Внешним ключам не требуется иметь рабочую реляционную базу данных (фактически хранилище по умолчанию MySQL движок не поддерживает FK), но они, безусловно, необходимы чтобы избежать сломанных связей и сиротских строк (то есть ссылочной целостности).
Ответ 2
FOREIGN KEY
s и JOIN
s не делают то же самое!
- A
FOREIGN KEY
обеспечивает целостность данных, удостоверяясь, что данные подтверждают некоторые правила, когда они добавляются в БД. -
A
JOIN
используется, когда вы извлекаете/запрашиваете данные из БД, предоставляя правила выбора данных. -
JOIN
работать, если есть FK или нет. - FK работает, если вы извлекаете данные с или без
JOIN
s.
ЗАКЛЮЧЕНИЕ: FK и JOIN
не позволяют достичь той же цели!