Дата актуальности: 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)