Реляционные Данные: подходы наследования объекта. Лучшая практика

Существует несколько подходов, как сохранить иерархию объектов в базе данных отношения

Например, существует объект человека (20 основных атрибутов), студенческий объект (то же как человек, но несколько новых определенных полей присутствуют), сотрудник (то же как человек, но некоторые новые поля присутствуют), e.t.c.

Когда Вы совет использовать (а не использовать) следующие подходы моделирования данных:

  • Одна большая таблица со всеми возможными полями + personType поле маркера (студент или сотрудник)
  • Наследование таблицы
  • Одна Таблица с полем XML (или возможно другой тип данных) для хранения всех пользовательских полей
  • Что-то еще, но также и реляционный...

Заранее спасибо!

5
задан Andrew Florko 18 July 2010 в 09:40
поделиться

2 ответа

База данных моделирует факты, а не объекты, и каждая таблица должна моделировать относительно самодостаточный набор фактов. Следствием этого является то, что ваши таблицы должны выглядеть примерно так:

person { person_id PK, name, dob, ... }
student { person_id PK FK(person.person_id), admission_id, year_started, ... }
employee { person_id PK FK(person.person_id), salary_bracket, ... }

Дополнительным следствием является то, что студент также может быть сотрудником, что, вероятно, моделирует реальную жизнь ближе, чем граф наследования.

6
ответ дан 14 December 2019 в 01:00
поделиться

Взгляните на документацию по отображению наследования гибернации . Здесь вы найдете три общих подхода и список плюсов и минусов каждого из них.

3
ответ дан 14 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: