Классика баз данных - статьи

       

Таблица идентификаторов


Таблица идентификаторов OIDS( OID: tOID: OF_oT:oTypeIDs) перечисляет уникальные идентификаторы существующих в системе объектов и ставит в соответствие каждому идентификатору объекта (поле OID) существующий в каталоге идентификатор (поле OF_oT) объектного типа этого объекта.

Заметим, что имеющееся в таблицах уровня хранения поле OID, а также любые поля, определяющие существование связи по ссылке, должны быть объявлены как внешний ключ, ссылающийся на поле OID таблицы идентификаторов. Это позволяет

  1. контролировать целостность связей "по ссылкам", используя для этого существующие в используемой реляционной БД механизмы контроля ссылочной целостности.
  2. утверждать, что в системе отсутствуют записи таблиц данных, для которых не определен объектный идентификатор (т.е. любая запись таблиц данных действительно описывает какой-либо объект). Отметим, в существующих РСУБД, реализующих каскадное удаление данных, удаление из таблицы идентификаторов записи, содержащей OID некого объекта, вызовет удаление связанных с ней записей, содержащие данные этого объекта.

В свою очередь, поле oT должно быть объявлено как внешний ключ, связанный с полем oT таблицы каталога objTYPES. Это гарантирует, что для любого объекта в системе определен тип этого объекта. Существование такой связи позволяет также использовать существующие в используемой РСУБД механизмы, позволяющие при выполнении команды DROP otypename удалять все существующие в сиcтеме объекты этого типа.

Описанный ранее оператор o OF t может быть реализован как

EXIST OIDS (WHERE OF_oT = t AND OID = o)

Для реализации оператора o IS t необходимо использовать информацию о наследовании типов (см. описание таблицы каталога IS_T)

EXIST (OIDS JOINOF_oT = oT IS_T(WHERE OID = o AND IS_oT = t))



Содержание  Назад  Вперед