Нужно ли использовать связи в таблицах MySQL, если используешь ORM?
Использую для своего проекта собственную ORM DomainObjectMapper, все включаемые объекты, необходимые для создания содержащих их, подгружаются отдельным запросом (не подзапросом MySQL). Вопрос - надо ли использовать в таких случаях связи? Я имею ввиду Foreign key (InnoDB).
К примеру, подгружается статья - ArticleMapper при создании объекта вызывает CatalogsMapper, и по указанному в данных статьи catalog_id получает объект каталога.
Нужно ли в таких случаях связывать поле articles.catalog_id с полем catalogs.id в самой базе данных? Или это нарушает логику работы ORM?
Если внешние ключи в таблицах мешают ORM - что-то не так с ORM...
А ключи лучше ставить, иначе потом будет тебя ждать "счастье" с нарушенной целостностью данных.
Дело в том, что, как и говорили все ответившие, следить за целостностью данных можно как программно, так и с помощью конструкций баз данных. Как думаете предпочтительнее использовать нативные решения в продуктах либо дописывать отдельным кодом?
Я думаю, что ответ очевиден. За целостностью данных должна следить БД.