多态关系是一种不好的实践吗?

9
我正在使用Laravel,并遇到了需要类似多态关系的情况。它们似乎正好解决了我需要的问题,也就是能够根据类型存储不同的数据。
然而,我知道我将无法使用任何约束,比如外键。我读过一些资料,说它们本质上是反模式。但我想知道其他人对此的看法,是否有人在使用它们而没有出现问题。
否则,是否有另一种方法可以实现多态关系提供的功能,而不必实际使用它们?(使用Laravel)

@mjolnic - ACID原则与数据库事务有关。原子性、一致性、隔离性、持久性。与多态关系无关。我认为您不小心使用了错误的术语。 - Gravy
2
@Gravy 我同意,可能在这里提到ACID并不合适(因为正如你所提到的,它与事务有关而不是开发模式),我想说的是它可能会导致数据一致性问题。 - itsjavi
1个回答

11

多态关系是一种反模式,并违反了Mjolnic评论中的最佳实践原则。

话虽如此,您从不在BLOB或TEXT列中存储json吗?WordPress不会将数据序列化存储在mysql中吗?

在现实世界中(大学之外),有许多情况下打破规则是一个好主意。根据您具体的用例,可能打破规则是适当的。

简单博客示例。您有帖子,您有页面。它们都需要完全相同的表格式。从多态关系获得的好处远远超过分割内容为postspages所需的努力以及开发和维护成本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接