Принципы хранения объектов данных в базе данных
Как хранятся объектные данные
Большинство сервисов данных обеспечивают работу с реляционным хранилищем. Объектные данные Flexberry ORM хранит следующим образом:
- Каждый класс — отдельная таблица.
- Каждый атрибут — отдельное поле в таблице.
- Мастеровые связи — внешние ключи таблицы внутреннего класса.
- Детейловые связи — внешний ключ детейловой таблицы на агрегатор (шапку).
- Наследуемый класс — отдельная от предка таблица.
- Если у мастерового класса есть наследник, то на его таблицу должен быть внешний ключ в таблице внутреннего класса.
- Каждая унаследованная таблица хранит все атрибуты всех предков. Таким образом, одному экземпляру класса соответствует одна запись в одной таблице (почему сделано именно так, описано в статье Наследование).
Именование при хранении объектных данных
Все элементы объектной модели хранятся в хранилище под определёнными именами. Например, поскольку в реляционном хранилище каждый класс — отдельная таблица, каждое свойство — отдельное поле, то имена хранения — это имена таблиц, полей.
По умолчанию, именование происходит следующим образом:
- Имя хранения объекта данных — имя типа класса данных.
- Имя хранения свойства объекта данных — имя свойства в классе данных.
- Имя хранения мастерового свойства — имя свойства в классе данных + [номер].
-
Связь от детейловой таблицы на агрегатор — аналогично мастеровому свойству: имя свойства в классе данных + [номер].
- Имя хранения первичного ключа —
primaryKey
. - При наследовании имена внешним ключам даются такие: [<ИмяРолиМастера>_M<ПорядкНомерВTypeUsage>.«ПорядкНомерВTypeUsage» — начинается с 0](fo_type-usage.html) (такое именование можно изменить).ПорядкНомерВTypeUsage>ИмяРолиМастера>
Именование может быть изменено, для чего служат атрибуты хранения:
- ClassStorage — следует приписать классу данных с указанием необходимого имени хранения.
- PrimaryKeyStorage — аналогично для первичного ключа, приписывается классу данных.
- PropertyStorage — аналогично для любых свойств (собственных, мастеровых), приписывается соответствующему свойству.