После понимания отношений между четырьмя системными таблицами базы геоданных лучше всего можно посмотреть принципы их совместной работы, используя SQL. Если выбрать все строки и столбцы из таблицы элементов GDB_Items появится набор результатов, выглядящий примерно следующим образом (вместе со многими другими полями):
Обратите внимание, что значения в столбце "Тип" хранятся в качестве идентификаторов UUID. Как говорилось в разделе Обзор системных таблиц базы геоданных, эти идентификаторы UUID могут быть разрешены с помощью таблицы GDB_ItemTypes, как показано в следующем запросе:
SELECT gdb_items.UUID, gdb_itemtypes.name AS "Type", gdb_items.name
FROM gdb_items INNER JOIN gdb_itemtypes
ON gdb_items.type = gdb_itemtypes.UUID;
Возвращает результат, похожий на результат запуска простого выражения SELECT в таблице GDB_Items, но при этом использует UUID в столбце Type (Тип), замененный читаемыми строками:
Аналогичным образом, таблица GDB_ItemRelationships также содержит идентификаторы UUID, которые являются значениями ключей из других таблиц. Каждое отношение содержит два значения UUID из таблицы GDB_Items выше: одно для элемента назначения отношений, а другое – для исходного элемента. Для их разрешения в читаемые строки необходимо присоединить таблицу GDB_ItemRelationships к таблице GDB_Items дважды:
--SQL Server and PostgreSQL query
SELECT relationships.type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM gdb_items AS origin_items,
gdb_itemrelationships AS relationships,
gdb_items AS dest_items
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid;
--Oracle query
SELECT relationships.type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM sde.gdb_items origin_items,
sde.gdb_itemrelationships relationships,
sde.gdb_items dest_items
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid;
На рисунке ниже показан пример набора результатов, который может быть выведен после предыдущего запроса:
Хотя здесь показаны отношения между элементами базы геоданных, требуется также тип отношений. Вы можете выполнить разрешение идентификатора UUID "Тип" посредством расширения предыдущего запроса с добавлением объединения с таблицей GDB_ItemRelationshipTypes:
--SQL Server and PostgreSQL query
SELECT reltypes.name AS type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM gdb_items AS origin_items,
gdb_itemrelationships AS relationships,
gdb_items AS dest_items,
gdb_itemrelationshiptypes AS reltypes
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid AND
relationships.type = reltypes.UUID;
--Oracle query
SELECT reltypes.name AS type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM sde.gdb_items origin_items,
sde.gdb_itemrelationships relationships,
sde.gdb_items dest_items,
sde.gdb_itemrelationshiptypes reltypes
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid AND
relationships.type = reltypes.UUID;
При этом выводится следующее: