Дата актуальности: 06.07.2009

FlexiObjDB
Объектно-ориентированное на предметную область 
долговременное хранилище информации.


 Таблица базы данных: OBJECTS_TREE

Назначение: 
  Информационная. "Дерево" объектов/процессов

Системный (внутренний) ID-таблицы = 13


Список и назначение полей таблицы.

Имя поля Назначение Индекс Ссылка на 
таблицу
Формат Примечание
ID_THIS Уникальный ID строки primary   VARCHAR(40) NOT NULL вычисляется автоматически,
генераторы: 
GEN_OBJTREE_1,
GEN_OBJTREE_2,
GEN_OBJTREE_3
ID_PARENT  ID родителя (в "дереве") + OBJECTS_TREE VARCHAR(40) NOT NULL  
PARENTS_ID  Перечень всех ID предков для данного объекта/процесса   OBJECTS_TREE VARCHAR(4800)  вычисляется автоматически
ID_TYPE  ID типа объектов/процессов + L_TYPEOBJ_LIST VARCHAR(40) NOT NULL  
LEVEL_THIS  Уровень иерархии в "дереве" +   INTEGER вычисляется автоматически
ID_PACKET  ID пакета импорта информации +   VARCHAR(40) NOT NULL  
ITS_GLOBAL Признак "глобальности" +   INTEGER  вычисляется автоматически
ITS_BASE  Признак, что объект "базовый" (>0-базовый) +   INTEGER  вычисляется автоматически
ID_REF  ссылка на "базовый" объект в "дереве" + OBJECTS_TREE VARCHAR(40) NOT NULL  вычисляется автоматически
ID_REF_NEAR  ссылка на ближайший объект  в "дереве" + OBJECTS_TREE VARCHAR(40) NOT NULL  
NUMPP Порядковый номер строки в контексте 
родителя  (сортировка)
+   INTEGER  
NAME_MAX Наименование объекта/процесса     VARCHAR(200)  
DATE_1  дата начала периода актуальности +   DATE  
TIME_1  время начала периода актуальности     VARCHAR(8)  
DATE_2 дата конца периода актуальности +   DATE  
TIME_2 время конца периода актуальности     VARCHAR(8)  
MNEMO_CODE Мнемо-имя (идентификатор по классификации Пользователя) - не обязательно +   VARCHAR(32) Это поле предназначено для того, чтобы Пользователь мог классифицировать объекты/процессы по своему желанию.
Например, здесь может быть :
"Табельный Номер"
"UWI-скважины" и т.д.
Уникальность значения данного поля НЕ контролируется на уровне триггеров.
NOTE Примечание     VARCHAR(200)  
INFO Детальная информация (MEMO-поле)     BLOB SUB_TYPE TEXT SEGMENT SIZE 80  MEMO-поле
IDUSER_CREATE ID пользователя, создавшего эту строку + USERS_LIST VARCHAR(40) NOT NULL  
DATE_CREATE Дата-время создания строки     DATE NOT NULL  вычисляется автоматически
IDUSER_UPDATE ID пользователя, последним изменившего эту строку + USERS_LIST VARCHAR(40) NOT NULL  
DATE_UPDATE Дата-время последнего изменения  строки     DATE NOT NULL  вычисляется автоматически 
YESEDIT_THIS        INTEGER для принудительного срабатывания триггера "before update"
YESUPDATE_CHILD         INTEGER для внутреннего использования (логика полностью определяется на уровне триггеров)
YES_TREE_UPDATE         INTEGER Для ускорения обновления информации.
Актуально только в контексте триггера BU_OBJECTSTREE
.
Если заведомо известно, что изменения в данной строке не затронут "иерархичность" и "ссылочность", то можно  установить значение этого поля в 0.  Это позволит существенно ускорить обновление информации в данной строке таблицы. 
После срабатывания триггера поле принудительно  принимает значение = 1.

 

CREATE TABLE OBJECTS_TREE (ID_THIS VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    ID_PARENT VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    PARENTS_ID VARCHAR(4800) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
    ID_TYPE VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    ITS_GLOBAL INTEGER,
    LEVEL_THIS INTEGER,
    NUMPP INTEGER,
    ID_PACKET VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    DATE_1 DATE,
    TIME_1 VARCHAR(8) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
    DATE_2 DATE,
    TIME_2 VARCHAR(8) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
    NAME_MAX VARCHAR(200) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
    NOTE VARCHAR(200) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
    ITS_BASE INTEGER,
    ID_REF VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    ID_REF_NEAR VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    INFO BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET WIN1251,
    IDUSER_CREATE VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    DATE_CREATE DATE NOT NULL,
    IDUSER_UPDATE VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    DATE_UPDATE DATE NOT NULL,
    YESEDIT_THIS INTEGER,
    YESUPDATE_CHILD INTEGER,
    YES_TREE_UPDATE INTEGER,
PRIMARY KEY (ID_THIS));



Поддержка ссылочной целостности.

Поле Master-table Detail-table Примечание
 ID_THIS     OBJECTS_PROP_ENUM.ID_OWNER  в триггере BD_OBJECTSTREE 
 ID_THIS     OBJECTS_PROP_NUMBER.ID_OWNER  в триггере BD_OBJECTSTREE 
 ID_THIS     OBJECTS_CHOKE.ID_THIS  в триггере BD_OBJECTSTREE 

 


Индексы.

CREATE INDEX OBJTREE_DATE1 ON OBJECTS_TREE(DATE_1);
CREATE INDEX OBJTREE_DATE2 ON OBJECTS_TREE(DATE_2);
CREATE INDEX OBJTREE_IDPARENT ON OBJECTS_TREE(ID_PARENT);
CREATE INDEX OBJTREE_IDREF ON OBJECTS_TREE(ID_REF);
CREATE INDEX OBJTREE_IDREFNEAR ON OBJECTS_TREE(ID_REF_NEAR);
CREATE INDEX OBJTREE_IDTYPE ON OBJECTS_TREE(ID_TYPE);
CREATE INDEX OBJTREE_IDPACKET ON OBJECTS_TREE(ID_PACKET);
CREATE INDEX OBJTREE_IDUSR_CR ON OBJECTS_TREE(IDUSER_CREATE);
CREATE INDEX OBJTREE_IDUSR_UPD ON OBJECTS_TREE(IDUSER_UPDATE);
CREATE INDEX OBJTREE_ITSBASE ON OBJECTS_TREE(ITS_BASE);
CREATE INDEX OBJTREE_ITSGLOB ON OBJECTS_TREE(ITS_GLOBAL);
CREATE INDEX OBJTREE_LEVEL ON OBJECTS_TREE(LEVEL_THIS);
CREATE INDEX OBJTREE_NUMPP ON OBJECTS_TREE(NUMPP);
 


Триггеры.

Перед вставкой новой строки :

 

Перед изменением  строки :

 

Перед удалением строки :

 

После вставки новой строки :

 

После изменения  строки :

 

После удаления  строки :

 


______________________________________
(c) Sergey Popov,  респ.Коми,  г.Усинск,(2009)

http://flexiobjdb.narod.ru

Используются технологии uCoz