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

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


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

Назначение: 
  Вспомогательная. "Заглушка" к  "дереву" объектов/процессов.
 
Для реализации стандартной "реляционности" (обеспечение ссылочной целостности между "деревом" объектов и "сторонними" таблицами).

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

Чтобы обеспечить привязку строк своей таблицы к заданному объекту в "дереве" (таблица OBJECTS_TREE) , а также и ссылочную целостность данных,  необходимо :

1. Изменить триггер BD_OBJCHOKE таким образом,  чтобы при удалении объекта - автоматически удалялись строки Ваших таблиц.
    Например :
         DELETE
         FROM
             МояТаблица1
         WHERE
             МояТаблица1.ID_OWNER-моей_строки = OLD.ID_THIS; 

         DELETE
         FROM
             МояТаблица2
         WHERE
             МояТаблица2.ID_OWNER-моей_строки = OLD.ID_THIS; 

2. Перед созданием строки в своей таблице (если нужно строку привязать к конкретному объекту/процессу) проверить, существует ли в таблице OBJECTS_CHOKE строка, где значение поля ID_THIS равно значению этого же поля для нужного объекта (таблица  OBJECTS_TREE). Если такой строки не существует - создать (с соотв.значением ID_THIS).

3. В дальнейшем привязывать строки своих таблиц к соответствующему значению этого поля (OBJECTS_CHOKE.ID_THIS) для данного объекта (в приведенном выше примере поле "ID_OWNER-моей_строки").

 


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

Имя поля Назначение Индекс Ссылка на 
таблицу
Формат Примечание
ID_THIS Уникальный ID строки primary  OBJECTS_TREE VARCHAR(40) NOT NULL Значение должно быть в точности равно соответствующему значению ID_THIS из таблицы OBJECTS_TREE
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  вычисляется автоматически 

 

CREATE TABLE OBJECTS_CHOKE (ID_THIS VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
    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,
PRIMARY KEY (ID_THIS));


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

Поле Master-table Detail-table Примечание
 ID_THIS  OBJECTS_TREE.ID_THIS  OBJECTS_CHOKE.ID_THIS  в триггере BD_OBJECTSTREE 
 ID_THIS  OBJECTS_CHOKE.ID_THIS   сторонние таблицы  в триггере BD_OBJCHOKE

 


Индексы.

CREATE INDEX OBJTREECHOKE_IDUSR_CR ON OBJECTS_CHOKE(IDUSER_CREATE);
CREATE INDEX OBJTREECHOKE_IDUSR_UPD ON OBJECTS_CHOKE(IDUSER_UPDATE);
 


Триггеры.

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

 

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

 

Перед удалением строки (этот триггер должен быть переопределен):

 

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

 

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

 

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

 


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

http://flexiobjdb.narod.ru

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