Спадкування з таблицею для кожного класу () — шаблон проєктування, який пропонує зберігати ієрархію спадкування класів в окремих таблицях.
Опис
Оскільки реляційні бази даних не підтримують спадкування, потрібно придумати спосіб відображення такої ієрархії в сховищі.
Одним із рішень буде зберігати кожний клас в окремій таблиці. Тоді колонками у таких таблицях будуть лише необхідні поля класів ієрархії.
Застосування
В Entity Framework даний підхід називається Table Per Type (TPT).
Переваги та недоліки
Переваги
Таблиці не займають зайвої пам'яті оскільки зберігають лише описані поля Зв'язок між моделлю і схемою бази даних простий і зрозумілий Зміни у батьківських класах не впливають на структури таблиць спадкоємців
Недоліки
Завантаження об'єкта вимагає запиту одразу до кількох таблиць Переміщення полів в дочірній чи батьківський клас вимагає зміни структури таблиць Таблиці батьківських класів стають вузьким місцем усі запити їх використовують Необхідна синхронізація значень між таблицями
Реалізація
Нехай дана ієрархія об'єктів.
Тоді у сховищі ці об'єкти представлятимуться таблицями, які міститимуть лише необхідні поля.
Див. також Успадкування (програмування) Спадкування зі спільною таблицею Спадкування з таблицею для кожного конкретного класу
Джерела Class Table Inheritance