В некоторых случаях очень удобно.
Например, есть в системе контрагенты, которые могут быть организацией, ИП или физлицом, для каждого из них есть уникальные поля. Но в системе все работают с контрагентами. Делаем базовую сущность Contractor
, от неё наследуемся и для каждого типа контрагента делаем свой класс.
Я работал с такими решениями и даже сам проектировал.
Поначалу это работает, но чем дальше, тем больше вылезает проблем. Всë из-за привязки кода к жëсткой структуре в БД.
Со временем и нарастанием отличий в логике, код покрывается костылями...
Идеально, для ИП завести таблицу ИП. Для физлиц, таблицу физлиц. Для организаций, таблицу организаций. Для "общей" сущности контракторов, заводим отдельную таблицу контракторов. Делаем связи:
ип - контрактор
физлицо - контрактор
организация - контрактор