单表inheritance或类表inheritance?

我正在阅读类表inheritance(CTI),并发现我更喜欢它。 我的问题是,是否有单表inheritance(STI)的特定用例,你在CTI上使用它?

我读了http://rhnh.net/2010/07/02/3-reasons-why-you-should-not-use-single-table-inheritance ,据我所知,它很稳固。 STI的用例是行为差异而不是数据。

我想向您指出我发现的一篇很棒的文章,清楚地解释了为什么以及何时使用CTI。 链接

像你说的那样使用STI来解决行为差异。 我将使用的一个例子是:

您已购买,并且您拥有PartialPurchase,与数据的唯一区别在于,当PartialPurchase完成后,它将获得与新创建的Purchase的关系。

所以行为是不同的,也有一些情况我希望PartialPurchase和Purchase出现在同一个查询中。 对于商业代理商,他们希望同时看到他们的所有购买和部分购买,因此将这些数据放在同一个表中是有意义的。 否则,每个模型的所有属性都相同。

在那种情况下,我会使用STI而不是CTI。

虽然如果数据开始有很大不同,我可能会创建另一个与STI表相关的表,在许多不同字段的情况下,我可能会想到CTI。