Принципы хранения объектов данных в базе данных

Как хранятся объектные данные

Большинство сервисов данных обеспечивают работу с реляционным хранилищем. Объектные данные Flexberry ORM хранит следующим образом:

  • Каждый класс — отдельная таблица.
  • Каждый атрибут — отдельное поле в таблице.
  • Мастеровые связи — внешние ключи таблицы внутреннего класса.
  • Детейловые связи — внешний ключ детейловой таблицы на агрегатор (шапку).
  • Наследуемый класс — отдельная от предка таблица.
  • Если у мастерового класса есть наследник, то на его таблицу должен быть внешний ключ в таблице внутреннего класса.
  • Каждая унаследованная таблица хранит все атрибуты всех предков. Таким образом, одному экземпляру класса соответствует одна запись в одной таблице (почему сделано именно так, описано в статье Наследование).

Именование при хранении объектных данных

Все элементы объектной модели хранятся в хранилище под определёнными именами. Например, поскольку в реляционном хранилище каждый класс — отдельная таблица, каждое свойство — отдельное поле, то имена хранения — это имена таблиц, полей.

По умолчанию, именование происходит следующим образом:

  • Имя хранения объекта данных — имя типа класса данных.
  • Имя хранения свойства объекта данных — имя свойства в классе данных.
  • Имя хранения мастерового свойства — имя свойства в классе данных + [номер].
  • Связь от детейловой таблицы на агрегатор — аналогично мастеровому свойству: имя свойства в классе данных + [номер].

  • Имя хранения первичного ключаprimaryKey.
  • При наследовании имена внешним ключам даются такие: [<ИмяРолиМастера>_M<ПорядкНомерВTypeUsage>.«ПорядкНомерВTypeUsage» — начинается с 0](fo_type-usage.html) (такое именование можно изменить).

Именование может быть изменено, для чего служат атрибуты хранения:

  • ClassStorage — следует приписать классу данных с указанием необходимого имени хранения.
  • PrimaryKeyStorage — аналогично для первичного ключа, приписывается классу данных.
  • PropertyStorage — аналогично для любых свойств (собственных, мастеровых), приписывается соответствующему свойству.