Back to questions
Северсталь-Ифоком
Junior — Middle
58
Каким образом реализовать наследование объектов в реляционной базе данных?
Companies where asked
Answer from AI
sobes.tech AI
В реляционных базах данных наследование объектов реализуется через несколько основных подходов:
-
Таблица на иерархию (Single Table Inheritance)
- Все классы наследников хранятся в одной таблице.
- В таблице есть столбец, определяющий тип объекта.
- Все поля всех наследников объединены в одну таблицу, некоторые поля могут быть NULL для разных типов.
-
Таблица на класс (Class Table Inheritance)
- Для каждого класса (родительского и наследников) создается своя таблица.
- Таблицы наследников содержат только поля, уникальные для них, а связь с родительской таблицей осуществляется через внешний ключ.
- Для получения полного объекта нужно делать JOIN между таблицами.
-
Таблица на конкретный класс (Concrete Table Inheritance)
- Для каждого конкретного класса создается отдельная таблица со всеми полями, включая унаследованные.
- Нет таблиц для абстрактных классов.
Выбор подхода зависит от требований к производительности, удобству запросов и сложности модели.
Пример для Class Table Inheritance:
-- Таблица родительского класса
CREATE TABLE Animal (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- Таблица наследника
CREATE TABLE Dog (
id INT PRIMARY KEY,
breed VARCHAR(100),
FOREIGN KEY (id) REFERENCES Animal(id)
);
В Java при использовании ORM (например, Hibernate) эти стратегии можно настроить с помощью аннотаций @Inheritance.