我需要在 ORM 中使用外键吗?

Vec*_*gna 2 performance database-design orm

对象关系映射(以 ActiveRecord 和 Rails 为例)允许程序员定义模型和删除回调之间的关系。

所以我的问题是:我还需要在我的数据库中定义外键吗?外键是否有其他功能(例如速度?),或者它的唯一功能是保持关系完整性?

JNK*_*JNK 6

如果外键受信任,它们确实可以加快查询速度。如果发动机知道,在每个值ParentIDChild表指的是有效的PKParents那么它甚至不会看那个表检查。

但是,无论如何,关系约束通常都是一个好主意。数据库中约束背后的一个理念是将它们用作不良数据的最后一站。外键就是一个很好的例子。

如果您完全依赖您的 ORM 进行关系管理,如果您更改为不同的框架会发生什么?您仍然需要保留现有数据。如果由于某种原因您需要更改 ORM 中的关系模型,并且在没有父项的情况下放入孤立的子记录,会发生什么情况?

简短回答 -是的,您仍然应该在数据库中使用键和约束。

  • 另一个原因:我从未见过包含仅由单个应用程序访问的重要(企业)信息的数据库。因此,应用程序(以及特定的 ORM)不太可能是唯一写入数据库的内容。 (3认同)