Лучше ли использовать внешние ключи в таблицах или могут быть достигнуты одни и те же результаты с помощью соединений?
Внешние ключи против воссоединения
Ответ 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 работает, если вы извлекаете данные с или без
JOINs.
ЗАКЛЮЧЕНИЕ: FK и JOIN не позволяют достичь той же цели!