Интеграция с базами данных

Структура базы данных Force Field спроектирована с учетом требований к быстрой интеграции практически с любым приложением.

Force Field оперирует внутренним представлением защищенных объектов, поэтому на основе БД приложения формируется специальная структура, c которой и работает “Force-Field”.

Интеграция осуществляется посредством создания двух view – FF_Object и FF_Person.

База данных приложения может содержать множество таблиц, представляющих объекты, каждая из которых обладает целочисленным идентификатором (int). На основе структуры базы данных приложения формируется FF_Object c полями: object_id, owner, class, parent, используемый Force Field для внутреннего представления объектов.

В базе данных приложения может использоваться единая нумерация объектов. В случае если каждый объект не обладает идентификатором (ID), уникальным в пределах системы, он может быть сгенерирован. Рассмотрим один из способов генерации идентификатора.

Для того, чтобы гарантированно избежать повтора идентификаторов при помещении в FF_Object объектов из нескольких таблиц, можно использовать сдвиг идентификатора на один разряд. Каждая таблица БД считается отдельным типом объекта. Каждая запись в таблице считается отдельным объектом, который помещается в FF_Object. Таким образом, в сгенерированном идентификаторе (object_id) правая часть указывает на номер, соответствующий типу объекта, а левая – на идентификатор, который имеет отдельная запись в конкретной таблице БД приложения.


Например, для хранения информации о товарах в приложении используется таблица “Manufacturers”, в которой находится информация о производителях оборудования. С ней связаны еще две таблицы: “Monitors” и “Printers”.


Тогда если идентификатору (ID) корневого элемента (root) присвоить значение 1, то ID объектов из таблицы “Manufacturers” будут равны соответственно 11, 21, 31 и т. д. При этом последняя цифра указывает на тип объекта, а первая – на идентификаторы записей, содержащихся в таблице “Manufacturers”.

Объекты из таблицы “Printers” в FF_Object – это объекты с номером типа, равным 2. При размещении в FF_Object объектов из таблицы “Printers” они получат ID 12, 22, 32, 42 и т. д.

Объекты из таблицы “ Monitors в FF_Object – это объекты с номером типа, равным 3. При размещении в FF_Object объектов из таблицы “Monitors” они получат ID 13, 23, 33, 43 и т. д.

Такой способ генерации идентификационного номера для view FF_Object позволяет избежать возможных повторений.

Чтобы связать реальную структуру БД, использующей идентификатор другого типа (не int), c внутренним представлением, которым оперирует “Force-Field”, будут необходимы дополнительные трансформации. Например, может понадобиться промежуточная таблица.

Copyright ©1999-2009 BYTE-force

Rambler's Top100