Поля уникальных идентификаторов в таблицах базы данных

Все таблицы и классы пространственных объектов ArcGIS должны содержать поле, уникально идентифицирующее каждый объект или каждую запись таблицы.

Для использования поля в качестве поля уникальных идентификаторов в настольных приложениях ArcGIS оно не должно содержать пустые значения (null), должно содержать только уникальные значения и быть одного из следующих типов:

  • Целочисленное (только положительные значения)
  • Строка
  • GUID
  • Дата

Значения в поле должны быть уникальными и не пустыми. Вы должны гарантировать, что значения этого поля удовлетворяют этим требованиям.

Примечание:

Если ArcGIS обнаружит пустое значение (null), то вы получите сообщение об ошибке, и ArcGIS не будет обеспечивать уникальность значений поля идентификатора в слое запросов или в таблице базы данных. Если ArcGIS встречает такое значение, то ошибка не возвращается; однако, результаты в выборке или других запросах в ArcGIS могут быть некорректны.

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

Когда вы перетаскиваете таблицу баз данных на карту или проверяете определение слоя запросов, ArcGIS считает первое найденное поле с ненулевым значением полем уникального идентификатора по умолчанию. Вы можете использовать это поле или изменить запрос и выбрать другое поле или несколько полей, содержащих уникальные идентификаторы.

Использование одного поля в качестве уникального идентификатора

Если указано единственное поле уникального идентификатора, ArcGIS непосредственно применяет значения из этого поля для уникальной идентификации всех объектов и строк таблицы базы данных.

Если в вашей таблице базы данных нет поля, которое может хранить уникальные идентификаторы, и вы используете базу данных Dameng, IBM Db2, Microsoft SQL Server, Oracle или PostgreSQL , вы можете запустить инструмент геообработки Добавить поле возрастающего ID, чтобы добавить целочисленное поле уникального идентификатора к таблице.

Если в качестве поля уникального идентификатора используется одно текстовое поле, ArcGIS должен привести эти значения в целочисленный формат. Это происходит в ArcGIS каждый раз, когда системе необходим атрибут ID объекта например, при создании выборки карты или открывании атрибутивной таблицы. ArcGIS добавит атрибут ESRI_OID и сохранит в него уникальное целочисленное значение. Этот атрибут является частью только определения слоя; таблица базы данных не изменяется.

Использование составного уникального идентификатора

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

member_surnamesignup_date

alfred

2006-09-28 10:15:41

dewey

2006-09-28 10:15:56

johnson

2000-02-19 09:14:50

johnson

2004-12-08 11:02:32

mujan

2011-07-07 12:44:21

Комбинация этих значений будет использоваться в качестве ключа для создания уникального целочисленного значения, которое будет сохранено в поле ESRI_OID. Этот атрибут является частью только определения слоя; таблица базы данных не изменяется.

Определение слоя в предыдущем примере будет содержать столбец ESRI_OID, как показано ниже:

member_surnamesignup_dateESRI_OID

alfred

2006-09-28 10:15:41

1

dewey

2006-09-28 10:15:56

2

johnson

2000-02-19 09:14:50

3

johnson

2004-12-08 11:02:32

4

mujan

2011-07-07 12:44:21

5

Помните, что если комбинированные значения в полях или указанном вами одном текстовом поле не являются уникальными, ArcGIS рассматривает эти записи как одинаковые и присвоит им одинаковые значения ESRI_OID.

Если в вашей таблице уже есть поле ESRI_OID, к определению слоя будет добавлен атрибут ESRI_OID_1.

Примечание:

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