Я новичок в Postgres и очень новичок в SQLAlchemy, поэтому прошу прощения, если это глупый вопрос.
Я потратил некоторое время на поиск в Google и чтение документации по SQLAlchemy, но, похоже, не могу найти прямого ответа.
Итак, мой вопрос заключается в следующем..
Поскольку отношения определяются в коде при использовании ORM, при условии, что структуры таблиц базы данных определяют необходимые поля столбцов, действительно ли вам нужно также определять ограничения ForeignKey в самой базе данных?
Я знаю, что ограничения могут помочь в обеспечении целостности, но нужны ли они для успешной реализации ORM?
Ограничения внешнего ключа не должны присутствовать для успешной реализации ORM. Я думаю, что ORM, вероятно, чаще всего пытается управлять такими вещами самостоятельно, а не следовать передовым методам работы с базами данных.
Лично у меня проблема с таким подходом. Обычно я имею дело с корпоративными базами данных, к которым обращается множество программ, написанных на разных языках. Другие программы просто нет будут удалять строки и каскадировать удаления, вызывая ORM, даже если это возможно.
Некоторые ORM поддерживают «устаревшие» базы данных, что означает, что ORM можно настроить для работы с базами данных, которые уже реализовали произвольные ограничения, первичные ключи, которые имеют несколько столбцов, а не идентификационный номер для каждой таблицы, каскадные обновления и удаления и т. д.
В любом случае БД принадлежит бизнесу, а не ORM. Поддержка этой идеи также различается.
Для того, что я играю, весь доступ к БД будет через API. За этими API стоит SQLAlchemy. В этой ситуации я изо всех сил пытался увидеть действительную «необходимость» для определения отношений в самой БД.
Связано: sqlalchemy: создавать отношения, но без ограничения внешнего ключа в БД?