Я хочу, чтобы дизайн моей базы данных был гибким и легко изменяемым, без большого влияния на мой код.
Сначала вы просто описываете объектно-реляционное сопоставление (ORM).Вам необходимо обновить свой вопрос, указав язык, базу данных и ORM.
Во-вторых, подобная гибкость часто доставляет неприятности.
Вы не указываете, какую базу данных вы используете.вы используете, но в ваших желаниях может быть принципиальное противоречие.
База данных SQL имеет относительно фиксированную, не совсем гибкую схему, поэтому она может быть быстрой.
Требование гибкости означает, что теперь вы должны внести определенные виды относительно болезненных и сложных изменений в базу данных во имя «гибкости».Изменения в дизайне таблиц, которые включают перемещение (и, возможно, нормализацию) данных, могут быть болезненными и трудными, поскольку база данных, как правило, не предназначена для обеспечения гибкости.
Более важно, однако, что не существует простого отображения унаследованных атрибутов в таблицы базы данных.
В некоторых случаях атрибуты суперкласса должны быть скопированы в несколько таблиц.
Однако бывают случаи, когда атрибуты суперкласса должны представлять собой отдельную таблицу с явным объединением таблиц подкласса.
Когда вы узнаете больше об ORM, вы увидите, что это проблема нетривиальной сложности.Это требует обдумывания, и каждое проектное решение имеет важные последствия.
Не существует «общего» решения.Ваше смутное «И я хочу использовать Table-Per-Type наследование внутри базы данных» не является хорошей или плохой идеей.Это смутная идея.Каждая отдельная таблица и каждое отдельное решение о наследовании должны приниматься индивидуально, исходя из требований к производительности и ожидаемой потребности в гибкости.