TUI design База представляет собой граф и состоит из вершин (Node) и ребер (Relation). Общая структура БД представлена на рисунке. На нем представлены все виды вершин и основные виды ребер. EntityType Вершина, соответствующая типу объекта. Относится к метаданным. Имеет связь (parent) с родительским типом (кроме самого верхнего по иерархии типа). Properties Name isAbstract Default value false Description Entity могут иметь только неабстрактный тип. Attribute Вершина, соответствующая типу свойства. Относится к метаданным. Связан с EntityType с помощью связи Bind. Properties Name isSystem attrType multiple Default value false false Description (if isSystem=false) Значение любое кроме true или отсутствует Тип атрибута (число, строка, дата, ссылка на объект или на другую вершину БД) Если multiple=true, то система может для каждого объекта хранить несколько значений данного параметра. Bind Связь между вершинами метаданных (направление от EntityType к Attribute). Отражает, какими свойствами могут обладать объекты различных типов. На один атрибут могут ссылаться сразу несколько объектных типов. Связь атрибута с типом является наследуемой и передается подтипам. Учитывая, что атрибут может быть «прибинжен» к нескольким типам, может оказаться, что несколько родителей какого-то типа содержат один и тот же атрибут. В таком случае в качестве свойств связи берутся properties с связи, ведущей к самому младшему типу. Это позволяет убирать («отбинживать») некоторые атрибуты с подтипа, не убирая их с родительского типа, используя особое свойство на связи (unbind). Entity Вершина, соответствующая объекту. Каждая такая вершина имеет ровно одну связь (type) с EntityType. Кроме того большинство объектов имеют связь (parent) с родительским Entity. Parameter Если EntityType имеет множество ссылающихся на него Entity и множество относящихся к нему Attribute, то каждая пара Entity и Attribute обладают «общей» вершиной Parameter. Причем этот параметр ссылается на них связями entity и attribute соответственно. Далее говоря о property вершины Parameter будем иметь ввиду property вершины Attribute. Value Если для Parameter multiple=false, то на каждый Parameter может ссылаться только один Value. В случае если multiple=true, то их может быть несколько. Само значение Value хранит разными способами в зависимости от типа атрибута (свойство attrType на Attribute). Если атрибут строковый, числовой или дата, то значение хранится в виде строки в свойстве value. Если атрибут является ссылкой (ассоциацией), то значение хранится не в самой вершине Value, а как ссылка Value на сущность, на которую указывает ссылка.