Последовательность отношений ORM против внешних ключей - PullRequest
0 голосов
/ 07 мая 2018

Я собираюсь начать новый сольный проект и использовать Sequelize ORM, который я использовал в других проектах с моими коллегами. Я искал немного больше документации по SQ и выяснил, что SQ поддерживает как модельные отношения, так и классические внешние ключи. Я фанат внешних ключей, но отношения с моделями также являются мощным способом организации моделей баз данных, и у них больше гибкости, чем у внешних ключей (IMHO).

Так может ли кто-нибудь дать совет о том, что лучше использовать в разных случаях или архитектурах баз данных?

Мой новый проект не должен иметь полиморфных отношений и других странных и сложных структур (по крайней мере, я на это надеюсь), но это будет долговременный продукт с множеством функций и способностей, поэтому он должен быть достаточно гибким. Также я не планирую использовать ничего, кроме проекта ORM для изменения базы данных (mariadb).

1 Ответ

0 голосов
/ 09 мая 2018

Модельные отношения не предоставляют большей мощности или гибкости, чем внешние ключи: они представляют собой способ выражения этих же отношений в рамках. A.belongsTo(B), например, это способ «Sequelizey», который говорит о том, что запись A имеет внешний ключ к записи B, и именно так устанавливается зависимость в схеме базы данных (если вы устанавливаете жесткую зависимость, то Sequelize позволяет пропустить).

Когда дело доходит до явных отношений, важно помнить, что ограничения на уровне базы данных являются законными и единственным способом действительно гарантировать, что ваши данные остаются правильными. Все остальное, включая определение hasOne или belongsTo в ваших моделях, - это совет , который может уважаться иногда и поэтому не может гарантировать целостность , Используйте надлежащие ограничения внешнего ключа.

...