Типизация объектов
Каждый объект системы относится к одному из существующих типов данных. Тип данных характерезуется:
- набором полей - какими свойствами обладает объект этого типа
- возможными отношениями с другими типами (например, объекты каких типов могут являться потомками объекта данного типа, что во что можно вкладывать)
Управление типами данных производится через административный интерфейс. Таким образом, бэкэнд системы содержит интсрументарий для высокоуровневого управления структурой БД.
В БД существует системная таблица `structure` - общий реестр объектов. В этой таблице хранятся поля, общие для всех объектов:
- глобальный ID объекта
- тип данных объекта (по этому полю определяется, в какой таблице искать остальные свойства объекта, если это не указано явно)
- ID родителя (см. п.4)
- дата создания
- дата последнего изменения
- ID пользователя, создавшего объект
- позиция объекта в списке братьев (для ручной сортировки)
- мнемонический код (для URL)
Таблица `structure` в первую очередь предназначена для служебного использования и для работы админ. панели. Во front-end части не рекомендуется без крайней необходимости создавать SQL-запросы, включающие эту таблицу. Вместо этого рекомендуется создавать дополнительные поля, описывающие реальные свойства объекта. Например, в ленте новостей можно было бы использовать системное свойство "дата создания объекта", но на самом деле лучше добавить поле "дата публикации", которое точнее описывает данные (и во многих случаях может не совпадать с системным полем).


