首页 > 解决方案 > 如果使用 ORM,是否需要在 DB 中定义关系?

问题描述

我对 Postgres 很陌生,对 SQLAlchemy 也很陌生,所以如果这是一个愚蠢的问题,我深表歉意。

我花了一些时间在谷歌上搜索并阅读有关 SQLAlchemy 的文档,但我似乎无法找到一个直接的答案。

所以,我的问题是这个..

由于使用 ORM 时在代码中定义了关系,如果数据库表结构定义了必要的列字段,那么您是否真的需要在数据库本身中定义 ForeignKey 约束?

我知道这些约束有助于加强完整性,但它们是否需要在那里才能成功实现 ORM?

标签: pythonpostgresqlsqlalchemy

解决方案


为了成功实现 ORM,不需要存在键约束。我认为 ORM 可能最常见的是尝试自己管理这种事情,而不是遵循数据库最佳实践。

就个人而言,我对这种方法有疑问。我通常处理企业数据库,这些数据库有许多以多种不同语言编写的程序来访问数据库。其他程序根本不会删除行并通过调用 ORM 级联删除,即使这是可能的。

一些 ORM 支持“遗留”数据库,这意味着 ORM 可以配置为处理已经实现任意约束的数据库、具有多个列而不是每个表的 ID 号的主键、级联更新和删除等。

无论如何,数据库属于业务,不属于ORM。对该想法的支持也各不相同。


推荐阅读