python - 如果使用 ORM,是否需要在 DB 中定义关系?
问题描述
我对 Postgres 很陌生,对 SQLAlchemy 也很陌生,所以如果这是一个愚蠢的问题,我深表歉意。
我花了一些时间在谷歌上搜索并阅读有关 SQLAlchemy 的文档,但我似乎无法找到一个直接的答案。
所以,我的问题是这个..
由于使用 ORM 时在代码中定义了关系,如果数据库表结构定义了必要的列字段,那么您是否真的需要在数据库本身中定义 ForeignKey 约束?
我知道这些约束有助于加强完整性,但它们是否需要在那里才能成功实现 ORM?
解决方案
为了成功实现 ORM,不需要存在外键约束。我认为 ORM 可能最常见的是尝试自己管理这种事情,而不是遵循数据库最佳实践。
就个人而言,我对这种方法有疑问。我通常处理企业数据库,这些数据库有许多以多种不同语言编写的程序来访问数据库。其他程序根本不会删除行并通过调用 ORM 级联删除,即使这是可能的。
一些 ORM 支持“遗留”数据库,这意味着 ORM 可以配置为处理已经实现任意约束的数据库、具有多个列而不是每个表的 ID 号的主键、级联更新和删除等。
无论如何,数据库属于业务,不属于ORM。对该想法的支持也各不相同。
推荐阅读
- vba - 根据VBA中的行内容将工作表拆分为不同的工作表
- html - 响应式标题图像问题
- java - 如何从 Java 中的 HTML 页面中提取和解析 CSS?
- api - 如何在 Microsoft 图形 API 的电子邮件正文中使用模板?
- flutter - 如何在 zefyr 中使用 embedBuilder?
- azure-web-app-service - 在 Azure 应用服务中使用联系表单通过 SendGrid 发送电子邮件时的奇怪行为
- php - Firebase Analytics 从 PHP 触发自定义事件
- linq - EF Core 显式加载多个嵌套表
- php - 在 15 分钟不活动后自动从 WordPress 仪表板注销用户
- android - 如何根据设备字体大小增加离子应用程序的字体大小