Внутренняя структура баз геоданных представлена в виде набора простых таблиц, называемых системными таблицами (с префиксом GDB в имени), с помощью которых выполняется отслеживание содержимого каждой базы геоданных. По сути, они описывают схему базы геоданных, которая указывает все определения, правила и отношения наборов данных. Эти системные таблицы содержат и управляют всеми метаданными, требующимися для реализации свойств базы геоданных, правил проверки данных и поведения.
Внутренняя структура этих таблиц была изменена, начиная с релиза ArcGIS 10. Информация, которая относится к схеме базы геоданных, которая до версии ArcGIS 10 хранилась в около 35 системных таблицах базы геоданных теперь была консолидирована в четырех основных таблицах:
- GDB_Items содержит список всех элементов, которые содержатся в базе геоданных, таких как классы объектов, топологии и домены
- GDB_ItemTypes содержит предварительно настроенный список распознаваемых типов элементов, таких как Table (таблица)
- GDB_ItemRelationships содержит схему отношений между элементами, такими как классы объектов, содержащиеся в наборе классов
- GDB_ItemRelationshipTypes содержит предварительно настроенный список распознаваемых типов отношений, например DatasetInFeatureDataset (Данные в наборе классов)
В таблицах GDB_Items и GDB_ItemRelationships представлена схема, определяемая пользователем в конкретной базе геоданных. Содержимое системных таблиц изменяется при каждом изменении базы геоданных. Таблицы GDB_ItemTypes и GDB_ItemRelationshipTypes не изменяются. На приведенной ниже диаграмме показаны типы отношений между этими четырьмя таблицами.
Таблица GDB_Items
В базе геоданных содержатся элементы географических и негеографических данных. К таким элементам относятся табличные наборы данных (классы объектов и таблицы), контейнеры наборов данных (наборы данных объектов, топологии и геометрические сети), наборы данных для управления более сложными настройками баз геоданных; а также другие элементы — домены, наборы инструментов и расширения рабочих областей. Начиная с версии ArcGIS 10 все эти элементы хранятся в таблице GDB_Items базы геоданных, и каждый элемент занимает отдельную строку.
Элементы имеют следующие атрибуты:
- UUID — уникальный идентификатор элемента
- Имя: имя элемента
Имейте в виду, что имя элемента может быть не уникальным, например имена класса отношений и класса пространственных объектов могут совпадать. Тем не менее не рекомендуется присваивать элементам одинаковые имена, поскольку имя элемента должно в достаточной степени описывать содержимое элемента.
- Тип: идентификатор UUID, определяющий тип элемента в записи; соответствует уникальному идентификатору.
- Определение: документ XML, определяющий свойства элемента. У разных типов элементов свойства и схема XML могут отличаться. Например, определение класса объектов содержит такие сведения, как подтип, определение домена кодированных значений содержит пары кода и значений, а определение класса отношений содержит правила отношений и другие сущности.
- Документация: документ XML, в котором хранятся метаданные элемента
- Свойства: целочисленное значение, которое можно использовать в битовых масках значений для извлечения нескольких логических свойств элемента. В настоящий момент этот атрибут используется только для указания видимости элемента ArcGIS for Desktop.
- Форма (Shape). Экстент набора данных как полигона, если применимо (тип данных зависит от базовой СУБД).
Эти семь атрибутов скорее всего будут задействованы при работе с SQL.
Следующие атрибуты хранят сведения из определений элемента (например, тип геометрии класса пространственных объектов), которые дублируются за пределами определения XML в целях обеспечения более эффективного обзора базы геоданных. В качестве примера можно привести свойства Подтип набора данных и Сведения о наборе данных, чьи кода не зависят от типа элемента.
- Физическое имя: полное имя элемента
- DatasetSubtype1. Для классов пространственных объектов и каталогов растров атрибут DatasetSubtype1 хранит тип объекта таблицы. Для классов отношений этот атрибут хранит кардинальность данного класса отношений. Для топологий этот атрибут хранит идентификатор топологии.
- DatasetSubtype2. Для классов пространственных объектов и каталогов растров атрибут DatasetSubtype2 хранит тип геометрии. Для классов отношений этот атрибут хранит значение, определяющее, является ли отношение атрибутивным или неатрибутивным.
- DatasetInfo1. Хранит имя поля формы для элементов класса пространственных объектов
- DatasetInfo2. Хранит сведения для классов пространственных объектов, которые участвуют в топологии
- Путь: уникальный относительный путь к элементу
- URL. Связанный с элементом URL, используемый сервисами каталогов
- Значения по умолчанию: метаданные элемента. Не используются напрямую базами геоданных, но используются другими клиентами, такими как службы метаданных ArcIMS
- ItemInfo. Хранит для элемента такую информацию, как символы, не связанные с базовым набором данных
Таблица GDB_ItemTypes
Таблица GDB_ItemTypes содержит предварительно настроенный набор распознаваемых типов элементов, таких как база геоданных Типы элементов определяют иерархию типов, а также используются для нормирования таблицы GDB_Items (тип элемента в таблице GDB_Items определяется по UUID) в целях предоставления оптимальной поддержки для дальнейшего расширения функциональности базы геоданных. Все родительские элементы являются абстрактными, следовательно их нельзя будет найти в таблице элементов БГД.
Содержимое таблицы GDB_ItemTypes не изменяется даже при создании или удалении элементов.
Тип элемента имеет следующие атрибуты:
- UUID. Уникальный идентификатор типа элемента и внешний ключ к столбцу Тип таблицы GDB_Item
- ParentTypeID. Родительский тип типа элемента. Если элемент является абстрактным (у него нет родителя), UUID имеет значение NULL
- Имя: имя типа элемента, такого как класс пространственных объектов или интервальный домен
- ObjectID. Уникальный идентификатор таблицы GDB_ItemTypes
Таблица GDB_ItemRelationships
Почти все элементы базы геоданных имеют отношения как минимум с еще одним элементом базы геоданных. Например, отдельная таблица связана с корневой папкой базы геоданных, домен связан с классом пространственных объектов или таблицами, которые на него ссылаются при проверке, а классы пространственных объектов связаны с топологией, в которой они задействованы. Таблица GDB_ItemRelationships используется для отслеживания отношений.
Отношения элемента имеют следующие атрибуты:
- UUID. Уникальный идентификатор отношений элемента
- Тип: UUID, соответствующий типу отношений. Этот атрибут соответствует уникальному идентификатору типа отношений элемента.
- OriginID. Уникальный идентификатор начального элемента отношений.
- DestinationID. Уникальный идентификатор конечного элемента отношений.
- Атрибуты: документ XML, содержащий подробные сведения об отношениях элемента
Многие типы отношений не включают атрибутов. Они используются только в контексте отношений между набором классов объектов и управляемыми ими наборами данных.
- ObjectID. Уникальный идентификатор
- Свойства: целочисленное значение, которое можно использовать в битовых масках значений для извлечения нескольких логических свойств элемента. В настоящий момент этот атрибут используется только для указания видимости элемента, участвующего в отношении, в ArcGIS for Desktop.
Первые пять атрибутов скорее всего будут задействованы при работе с SQL.
Таблица GDB_ItemRelationshipTypes
Аналогичным образом статичная коллекция типов элементов используется для классификации элементов, а статичная типов отношений элемента используется для классификации отношений элемента. Например, DatasetInFeatureDataset (указывающая, что класс пространственных объектов, класс отношений или набор классов объектов уже существует в наборе пространственных объектов) и DomainInDataset (указывающая, что набор данных использует домен для проверки на уровне класса или подтипа) представляют собой два разных типа отношений между элементами. В отличие от типов элементов, типы отношений не имеют иерархии и не делятся на родительские и дочерние.
Тип отношений элемента имеет следующие атрибуты:
- UUID. Уникальный идентификатор типа отношений элемента и основной ключ к столбцу Тип таблицы отношений элементов
- Имя: имя типа отношений элемента, такого как DatasetInFolder
- Прямая надпись: описание отношения "с точки зрения" начального элемента.
- Обратная надпись: описание отношения "с точки зрения" конечного элемента.
- Идентификатор типа начального элемента: UUID типа элемента, который может использоваться как начальный элемент в отношениях данного типа
- Идентификатор типа конечного элемента: UUID типа элемента, который может использоваться как конечный элемент в отношениях данного типа
- Удержание: указывает, может ли конечный элемент храниться после удаления начального элемента.
XML в системных таблицах базы геоданных
Как указано в определениях атрибутов для системных таблиц базы геоданных, некоторые поля используют тип данных XML. В базах геоданных под управлением IBM DB2, Microsoft SQL Server или PostgreSQL эти столбцы используют собственный тип XML СУБД, следовательно запросы к ним можно формировать с помощью выражений XPath на SQL.
В базах геоданных под управлением Oracle и Informix столбцы XML используют ArcSDE XML, который хранит информацию в виде больших двоичных объектов в нескольких отдельных таблицах. К ним можно обращаться напрямую с помощью SQL.
Для просмотра содержимого в столбцах XML системных таблиц баз геоданных под управлением Oracle предусмотрены два системных вида, в которых содержимое столбцов XML-таблиц базы геоданных хранится в виде объектов с типом данных CLOB. Вид GDB_Items_vw отображает содержимое столбцов Определение, Документация и Информация об элементе из таблицы GDB_Items в столбцах типа CLOB. Вид GDB_ItemRelationships_vw отображает содержимое столбцов Атрибуты из таблицы GDB_ItemRelationships в столбце типа CLOB. Содержимое столбца CLOB можно просмотреть в виде текста.
При формировании запросов к этим видам строка извлекается из столбца CLOB, преобразуется в тип XML, после чего к ней выполняется запрос XPath. Учтите, что при попытке создать тип XML для столбца с пустой строкой, произойдет ошибка "Не удалось выполнить анализ XML", так как Oracle не поддерживает это действие.
При формировании запроса к содержимому столбцов CLOB необходимо сконфигурировать сервер Oracle таким образом, чтобы он принимал подключения SQL. Более подробную информацию см. в статье Настройка Oracle extproc для доступа к базе геоданных из SQL.