Запросы отношений

При работе с системными таблицами базы геоданных часто бывает необходимо определить все элементы, связанные с определенным элементом. К таким примерам можно отнести определение содержания набора классов объектов, поиск классов объектов, участвующих в топологии или геометрической сети и поиск наборов данных, входящих в реплику. Поскольку все элементы и отношения хранятся в одних и тех же таблицах, во всех этих случаях можно использовать простой запрос (с использованием строковых значений, определяющих конкретный элемент). Для создания такого запроса выполните следующие шаги:

Ниже приведен пример SQL-запроса, выполняющего все три шага. Чтобы изменить элемент к которому строится запрос, измените обе строчные переменные, указанные в начале.

--Queries a dbo-schema geodatabase in SQL Server

DECLARE @ORIGIN nvarchar(max);
DECLARE @ORIGIN_TYPE nvarchar(max);
SET @ORIGIN = 'Montgomery.Sasha.Landbase';
SET @ORIGIN_TYPE = 'Feature Dataset';

SELECT
 DEST_ITEMS.Name AS "Name"
 DEST_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the origin item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @ORIGIN) AS src_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @ORIGIN_TYPE) AS src_types
 ON src_items.Type = src_types.UUID)

 --Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON src_items.UUID = relationships.OriginID) 

 -- Resolve the names of the destination items.
 INNER JOIN
 dbo.GDB_ITEMS AS dest_items
 ON relationships.DestID = dest_items.UUID)

 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS dest_types
 ON dest_items.Type = dest_types.UUID

В случае набора классов объектов, возвращается список, сходный с тем, что вы видите при просмотре набора классов объектов в ArcCatalog; он может содержать классы объектов; классы отношений и наборы данных с моделями управления, например, топологии, наборы сетевых данных и наборы данных участков. Кроме того, он может содержать некоторые наборы данных, которые не появляются в ArcCatalog, например, измененные области классов объектов, использующихся в топологии.

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

--Queries a dbo-schema geodatabase in SQL Server

DECLARE @DEST nvarchar(max);
DECLARE @DEST_TYPE nvarchar(max);
SET @DEST = 'Angle';
SET @DEST_TYPE = 'Range Domain';

SELECT
 SRC_ITEMS.Name AS "Name",
 SRC_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the destination item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @DEST) AS dest_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @DEST_TYPE) AS dest_types
 ON dest_items.Type = dest_types.UUID)

 -- Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON dest_items.UUID = relationships.DestID)

 -- Resolve the names of the origin items.
 INNER JOIN
 dbo.GDB_ITEMS AS src_items
 ON relationships.OriginID = src_items.UUID)

 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS src_types
 ON src_items.Type = src_types.UUID

Сведения о системных таблицах и видах, используемых в Oracle, см. в разделе "XML в системных таблицах баз геоданных" документа Краткий обзор системных таблиц баз геоданных.

5/25/2014