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

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

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

  • Integer (только 32- and 64-битные положительные значения)
  • Строка
  • GUID
  • Date
  • Только дата
  • Только время

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

Примечание:

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

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

При добавлении таблицы из базы данных документов на карту ArcGIS Pro автоматически использует поддерживаемое системой строковое поле (_id) в качестве идентификатора объекта.

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

Если указано единственное поле уникального идентификатора, 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.

Примечание:

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