Спадкування з таблицею для кожного конкретного класу () — шаблон проєктування, який пропонує зберігати ієрархію спадкування класів в окремих таблицях.

Опис

Оскільки реляційні бази даних не підтримують спадкування, потрібно придумати спосіб відображення такої ієрархії в сховищі.

Одним із рішень буде зберігати кожний клас в окремій таблиці. Тоді колонками у таких таблицях будуть усі поля всіх класів ієрархії.

Застосування

В Entity Framework даний підхід називається Table Per Concrete Type (TPC).

Переваги та недоліки

Переваги

Усі поля таблиці відповідають усім колонкам. Таким чином легше сприймати зв'язок між таблицею та об'єктом Не потрібні складні запити, для отримання даних конкретного типу, всі значення знаходяться у таблиці Переміщення полів в дочірній чи батьківський клас не вимагає зміни структури таблиць

Недоліки

Важко завантажити у пам'ять ієрархію об'єктів різних типів Зміни у батьківських класах впливають на структури таблиць спадкоємців Первинні ключі можуть збігатись у різних класах ієрархії

Реалізація

Нехай дана ієрархія об'єктів.

Тоді у сховищі ці об'єкти представлятимуться окремими таблицями з усіма полями.

Див. також Успадкування (програмування) Спадкування зі спільною таблицею (шаблон проєктування) Спадкування з таблицею для кожного класу (шаблон проєктування)

Джерела Concrete Table Inheritance