Мартин Фаулер задокументировал несколько объектно-реляционных структурных шаблонов , которые могут помочь:
1) Наследование одной таблицы : Представляет иерархию наследования классов в видеодна таблица, в которой есть столбцы для всех полей различных классов.
например, Employee
и Customer
оба наследуются от User
и оба хранятся в таблице User, со столбцом, который определяет, какой типпользователя представляет конкретная запись.
2) Наследование таблиц классов : Представляет иерархию наследования классов с одной таблицей для каждого класса.
например, Employee
и Customer
оба наследуются от User
, и есть три таблицы для представления этого.Таблица User хранит свойства, общие для всех пользователей.Таблица Employee имеет указатель на таблицу User и хранит только те свойства, которые относятся к Employees.То же самое относится и к таблице клиентов.
3) Наследование конкретной таблицы : Представляет иерархию наследования классов с одной таблицей для каждого конкретного класса в иерархии.
например, Employee
и Customer
оба наследуют от абстрактного класса User
, и есть две таблицы для представления этого.Таблица клиентов и таблица сотрудников.Каждая таблица хранит информацию, общую для пользователей, но также хранит уникальные свойства.