我正在阅读类表继承(CTI)并发现我更喜欢它。我的问题是,是否存在单表继承(STI)的特定用例,您可以在CTI上使用它?
我读过http://rhnh.net/2010/07/02/3-reasons-why-you-should-not-use-single-table-inheritance据我所知,它很稳固。 STI的用例是行为差异而非数据。
答案 0 :(得分:7)
我想向您指出我发现的一篇很棒的文章,清楚地解释了为什么以及何时使用CTI。 LINK
答案 1 :(得分:0)
将STI用于行为差异,就像你说的那样。我将使用的一个例子是:
您已购买,并且您拥有PartialPurchase,与数据的唯一区别在于,当PartialPurchase完成时,它会获得与新创建的购买的关系。
所以行为也不同,在某些情况下,我希望PartialPurchase和Purchase出现在同一个查询中。对于商业代理商,他们希望同时看到他们的所有购买和部分购买,因此将这些数据放在同一个表中是有意义的。否则,每个模型的所有属性都相同。
在这种情况下,我会使用STI而不是CTI。
虽然数据开始有很大不同,但我可能会创建另一个与STI表相关的表,在许多不同字段的情况下,我可能会想到CTI。