Ответ 1
Я хотел бы указать вам на отличную статью, которую я нашел, которая объясняет с ясностью, почему и когда использовать CTI. ССЫЛКА
Я читаю о Наследовании Класса Класса (CTI) и нахожу, что я предпочитаю его в целом. Вопрос, который у меня есть, есть ли какой-либо конкретный прецедент для однонаправленного наследования (STI), где вы использовали бы это по CTI?
Я читаю http://rhnh.net/2010/07/02/3-reasons-why-you-should-not-use-single-table-inheritance, и, насколько я знаю, он прочен. Вариант использования для ИППП представляет собой разницу в поведении, но не данные.
Я хотел бы указать вам на отличную статью, которую я нашел, которая объясняет с ясностью, почему и когда использовать CTI. ССЫЛКА
Используйте STI для различий в поведении, как вы сказали. Например, я бы использовал:
У вас есть покупка, и у вас есть PartialPurchase, единственная разница с данными заключается в том, что когда PartialPurchase завершена, она получает отношение к вновь созданной Покупке.
Таким образом, поведение отличается, также есть случаи, когда я хотел бы, чтобы PartialPurchase и Purchase отображались в одном запросе. Для коммерческого агента они хотят видеть все свои покупки и частичные покупки одновременно, поэтому имеет смысл, чтобы эти данные были в одной таблице. В противном случае все атрибуты одинаковы для каждой модели.
В этом случае я бы использовал STI над CTI.
Хотя если бы данные стали сильно отличаться, я бы, вероятно, создал еще одну таблицу, относящуюся к таблице STI, а в случае многих разных полей я, вероятно, подумал бы о CTI.