Создание класса отношений (Управление данными)

Краткая информация

Создает класс отношений для хранения связей между полями или пространственными объектами в исходной таблице и таблице-адресате.

Использование

  • Отношения могут существовать между пространственными объектами (объекты в классах пространственных объектов), непространственными объектами (строки в таблице) или пространственными и непространственными объектами.

  • После создания класс отношений не поддается изменению; вы можете только добавить, удалить или переименовать его правила.

  • Для классов отношений многие-ко-многим, в базе данных создается новая таблица для хранения внешних ключей, используемых для связи исходных классов и классов-адресатов. Эта таблица может также иметь другие поля для хранения атрибутов отношений, которые не являются атрибутами ни класса-источника, ни класса-адресата. Например, в базе данных участков может быть класс отношений между участками и владельцами, где владельцы «владеют» участками, а участки «находятся во владении» владельцев. Атрибутом этого отношения может быть собственность в процентах. Классы отношений один-к-одному и один-ко-многим также могут иметь атрибуты. В этом случае создается таблица для хранения этих отношений.

  • Простые отношения (между равными объектами) вовлекают в базу данных два или более объектов, которые существуют независимо друг от друга. Например, в сети железных дорог могут быть железнодорожные стрелки, которые имеют один или несколько связанных сигнальных фонарей. Однако железнодорожная стрелка может существовать без семафора, а семафоры могут существовать в железнодорожной сети и там, где нет стрелок. Простые отношения могут иметь кардинальность «один к одному», «один ко многим» или «многие ко многим».

  • Сложное отношение – это то, в котором продолжительность существования объектов контролирует продолжительность существования связанных объектов. Например, электрические столбы служат опорой для трансформаторов, а трансформаторы установлены на столбах. После удаления столба, сообщение об удалении распространяется и на связанные с ним трансформаторы, которые удаляются из класса трансформаторов. Сложные отношения всегда «один ко многим».

  • Описания прямого и обратного отношения поясняют отношение, связывающее один объект с другим. Описание прямого отношения описывает отношение класса-источника к классу-адресату. В примере столб-трансформатор подписью прямого пути может быть «Столбы поддерживают трансформаторы». Описание обратного отношения поясняет отношение класса-адресата к классу-источнику. В примере столб-трансформатор подписью обратного пути может быть «Трансформаторы устанавливаются на столбах».

Параметры

ПодписьОписаниеТип данных
Таблица-источник

Таблица класса пространственных объектов, которая связана с таблицей-адресатом.

Table View
Таблица-адресат

Таблица, которая связана с исходной таблицей.

Table View
Выходной класс отношений

Создаваемый класс отношений.

Relationship Class
Тип отношений

Определяет тип отношений, который будет создан между таблицей-источником и таблицей-адресатом.

  • ПростоеИсходная и целевая таблицы будут иметь простое отношение. Это значение по умолчанию
  • СложноеИсходная и целевая таблицы будут иметь сложное отношение.
String
Надпись прямого отношения

Имя для уникальной идентификации отношения, используемое при обращении к таблице-адресату через таблицу-источник.

String
Надпись обратного отношения

Имя для уникальной идентификации отношения, используемое при обращении к таблице-источнику через таблицу-адресат.

String
Направление сообщений

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

  • Вперед (от объекта-источника к объекту-адресату)Сообщения передаются из исходной таблицы в таблицу-адресат.
  • Назад (от объекта-адресата к объекту-источнику)Сообщения передаются из таблицы-адресата в исходную таблицу.
  • В обоих направленияхСообщения передаются из исходной таблицы в таблицу-адресат и из таблицы-адресата в исходную таблицу.
  • Отсутствует (сообщения не передаются)Сообщения не передаются. Это значение по умолчанию
String
Кардинальность

Задает количество отношений между строками или объектами таблицы-источника и строками или объектами таблицы-адресата.

  • Один-к-одному (1:1)Каждая строка или пространственный объект таблицы-источника могут быть связаны с одной строкой или пространственным объектом таблицы-адресата или не иметь связей. Это значение по умолчанию
  • Один-ко-многим (1:М)Каждая строка или пространственный объект таблицы-источника могут быть связаны с одной или несколькими строками или пространственными объектами таблицы-адресата.
  • Многие-ко-многим (М:N)Несколько строк или пространственных объектов таблицы-источника могут быть связаны с одной или несколькими строками или пространственными объектами таблицы-адресата.
String
Класс отношений включает атрибуты

Определяет, будет ли класс отношений иметь атрибуты.

  • Отмечено - класс отношений будет иметь атрибуты.
  • Не отмечено - класс отношений не будет иметь атрибуты. Это значение по умолчанию
Boolean
Первичный ключ источника

Для классов отношений "многие ко многим" или атрибутированных отношений - это поле в исходной таблице, которое связано с полем Внешний ключ источника в таблице классов отношений.

Для классов отношений "один к одному" или "один ко многим", которые не атрибутированы, - это поле в исходной таблице, которое связано с полем Внешний ключ источника в таблице назначения.

String
Внешний ключ источника

Для классов отношений "многие ко многим" или атрибутированных отношений - это поле в таблице классов отношений, которое связано с полем Внешний ключ источника в исходной таблице.

Для классов отношений "один к одному" или "один ко многим", которые не атрибутированы, - это поле в таблице назначения, которое связано с полем Внешний ключ источника в исходной таблице.

String
Первичный ключ адресата
(Дополнительный)

Поле в таблице назначения, которое ссылается на поле Внешний ключ адресата в таблице класса отношений. Это значение требуется для классов отношений "многие ко многим" или атрибутированных, но его следует оставить пустым для классов отношений "один к одному" или "один ко многим", которые не атрибутированы.

String
Внешний ключ адресата
(Дополнительный)

Имя поля в таблице классов отношений, которое ссылается на поле Первичный ключ адресата в таблице-адресате. Это значение требуется для классов отношений "многие ко многим" или атрибутированных, но его следует оставить пустым для классов отношений "один к одному" или "один ко многим", которые не атрибутированы.

String

arcpy.management.CreateRelationshipClass(origin_table, destination_table, out_relationship_class, relationship_type, forward_label, backward_label, message_direction, cardinality, attributed, origin_primary_key, origin_foreign_key, {destination_primary_key}, {destination_foreign_key})
ИмяОписаниеТип данных
origin_table

Таблица класса пространственных объектов, которая связана с таблицей-адресатом.

Table View
destination_table

Таблица, которая связана с исходной таблицей.

Table View
out_relationship_class

Создаваемый класс отношений.

Relationship Class
relationship_type

Определяет тип отношений, который будет создан между таблицей-источником и таблицей-адресатом.

  • SIMPLEИсходная и целевая таблицы будут иметь простое отношение. Это значение по умолчанию
  • COMPOSITEИсходная и целевая таблицы будут иметь сложное отношение.
String
forward_label

Имя для уникальной идентификации отношения, используемое при обращении к таблице-адресату через таблицу-источник.

String
backward_label

Имя для уникальной идентификации отношения, используемое при обращении к таблице-источнику через таблицу-адресат.

String
message_direction

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

  • FORWARDСообщения передаются из исходной таблицы в таблицу-адресат.
  • BACKWARDСообщения передаются из таблицы-адресата в исходную таблицу.
  • BOTHСообщения передаются из исходной таблицы в таблицу-адресат и из таблицы-адресата в исходную таблицу.
  • NONEСообщения не передаются. Это значение по умолчанию
String
cardinality

Задает количество отношений между строками или объектами таблицы-источника и строками или объектами таблицы-адресата.

  • ONE_TO_ONEКаждая строка или пространственный объект таблицы-источника могут быть связаны с одной строкой или пространственным объектом таблицы-адресата или не иметь связей. Это значение по умолчанию
  • ONE_TO_MANYКаждая строка или пространственный объект таблицы-источника могут быть связаны с одной или несколькими строками или пространственными объектами таблицы-адресата.
  • MANY_TO_MANYНесколько строк или пространственных объектов таблицы-источника могут быть связаны с одной или несколькими строками или пространственными объектами таблицы-адресата.
String
attributed

Определяет, будет ли класс отношений иметь атрибуты.

  • NONEКласс отношений не будет иметь атрибуты. Это значение по умолчанию
  • ATTRIBUTEDКласс отношений будет иметь атрибуты.
Boolean
origin_primary_key

Для классов отношений "многие ко многим" или атрибутированных отношений - это поле в исходной таблице, которое связано с полем origin_foreign_key в таблице классов отношений.

Для классов отношений "один к одному" или "один ко многим", которые не атрибутированы, - это поле в исходной таблице, которое связано с полем origin_foreign_key в таблице назначения.

String
origin_foreign_key

Для классов отношений "многие ко многим" или атрибутированных отношений - это поле в таблице классов отношений, которое связано с полем origin_primary_key в исходной таблице.

Для классов отношений "один к одному" или "один ко многим", которые не атрибутированы, - это поле в таблице назначения, которое связано с полем origin_primary_key в исходной таблице.

String
destination_primary_key
(Дополнительный)

Поле в таблице назначения, которое ссылается на поле destination_foreign_key в таблице класса отношений. Это значение требуется для классов отношений "многие ко многим" или атрибутированных, но его следует оставить пустым для классов отношений "один к одному" или "один ко многим", которые не атрибутированы.

String
destination_foreign_key
(Дополнительный)

Имя поля в таблице классов отношений, которое ссылается на поле destination_primary_key в таблице-адресате. Это значение требуется для классов отношений "многие ко многим" или атрибутированных, но его следует оставить пустым для классов отношений "один к одному" или "один ко многим", которые не атрибутированы.

String

Пример кода

CreateRelationshipClass, пример (окно Python)

Скрипт окна Python, демонстрирующий использование функции CreateRelationshipClass.

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.CreateRelationshipClass_management("vegtype", "vegtable", "veg_RelClass", "SIMPLE",
                                         "Attributes from vegtable", "Attributes and Features from vegtype",
                                         "NONE", "ONE_TO_ONE", "NONE", "HOLLAND95", "HOLLAND95")
CreateRelationshipClass, пример 1 (автономный скрипт)

Создайте класс отношений между классом объектов растительности и таблицей с дополнительной информацией о растительности.

# Name: CreateRelationshipClass.py
# Description: Create a relationship class between vegetation feature
#              class and table with additional vegetation information
# Author: ESRI

# Import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Copy vegtable.dbf to file gdb table, since both tables to be related
# must be in the same database
vegDbf = "vegtable.dbf"
vegTbl = "Habitat_Analysis.gdb/vegtable"
arcpy.CopyRows_management(vegDbf, vegTbl)

# Create simple relationship class between 'vegtype' vegetation layer
# and 'vegtable' table with additional vegetation information
veg = "Habitat_Analysis.gdb/vegtype"
relClass = "Habitat_Analysis.gdb/veg_RelClass"
forLabel = "Attributes from vegtable"
backLabel = "Attributes and Features from vegtype"
primaryKey = "HOLLAND95"
foreignKey = "HOLLAND95"
arcpy.CreateRelationshipClass_management(veg,
                                         vegTbl,
                                         relClass,
                                         "SIMPLE",
                                         forLabel,
                                         backLabel,
                                         "NONE",
                                         "ONE_TO_ONE",
                                         "NONE",
                                         primaryKey,
                                         foreignKey)
CreateRelationshipClass, пример 2 (автономный скрипт)

Создание класса отношений между классом объектов участков и таблицей с информацией о владельцах.

# Name: CreateRelationshipClass.py
# Description: Create a relationship class between parcels feature
#              class and table with owner information
# Author: ESRI

# Import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Copy owners.dat to file gdb table, since both tables to be related
# must be in the same database
ownerDat = "owners.dat"
ownerTbl = "Montgomery.gdb/owners"
arcpy.CopyRows_management(ownerDat, ownerTbl)

# Create simple relationship class between 'parcel' parcel layer
# and 'owner' table with additional parcel owner information
parcel = "Montgomery.gdb/Parcels"
relClass = "Montgomery.gdb/parcelowners_RelClass"
forLabel = "Owns"
backLabel = "Is Owned By"
primaryKey = "PROPERTY_ID"
foreignKey = "PROPERTY_ID"
arcpy.CreateRelationshipClass_management(ownerTbl,
                                         parcel,
                                         relClass,
                                         "SIMPLE",
                                         forLabel,
                                         backLabel,
                                         "BACKWARD",
                                         "ONE_TO_MANY",
                                         "NONE",
                                         primaryKey,
                                         foreignKey)

Информация о лицензиях

  • Basic: Нет
  • Standard: Да
  • Advanced: Да

Связанные разделы