Resumen
Esta herramienta crea una clase de relación para almacenar una asociación entre campos o entidades en la tabla de origen y en la tabla de destino.
Uso
Pueden existir relaciones entre objetos espaciales (entidades en clases de entidad), objetos no espaciales (filas en una tabla) u objetos espaciales y no espaciales.
Una vez creada, una clase de relación no se puede modificar; solo puede agregar, eliminar o restringir sus reglas. Las clases de relación se pueden eliminar y renombrar utilizando ArcCatalog de la misma forma que se hace con cualquier otro objeto de la base de datos.
Para las clases de relaciones muchos a muchos, se crea una tabla nueva en la base de datos para almacenar las claves externas utilizadas para vincular las clases de origen y de destino. Esta tabla también puede tener otros campos para almacenar atributos de la relación misma que no son atribuidos ni a la clase de origen ni a la de destino. Por ejemplo, en una base de datos de parcela, puede tener una clase de relación entre las parcelas y los propietarios en la cual los propietarios "son dueños" de las parcelas y las parcelas "pertenecen" a los propietarios. Un atributo de esa relación puede ser el porcentaje de la propiedad. Las clases de relación uno a uno y uno a muchos también pueden tener atributos; en este caso, se crea una tabla para almacenar las relaciones.
Las relaciones simples o punto a punto comprenden dos o más objetos de la base de datos que existen de forma independiente uno de otro. Por ejemplo, en una red de ferrocarriles puede haber cruces de ferrocarril que tengan una o más lámparas de señal relacionadas. Sin embargo, puede existir un cruce de ferrocarril sin una lámpara de señal y puede haber lámparas de señal en la red de ferrocarriles donde no hay cruces de ferrocarril. Las relaciones simples pueden tener una cardinalidad de uno a uno, de uno a muchos o de muchos a muchos.
Una relación compuesta es aquella en la cual la duración de un objeto controla la duración de sus objetos relacionados. Por ejemplo, los polos de energía sostienen los transformadores y los transformadores están montados en los polos. Una vez eliminado un polo, se propaga un mensaje de eliminación a sus transformadores relacionados, que se eliminan de la clase de entidad de los transformadores. Las relaciones compuestas son siempre de uno a muchos.
Las etiquetas de ruta destino-origen y origen-destino describen la relación al navegar de un objeto a otro. La etiqueta de ruta origen-destino describe la relación al navegar desde la clase de origen a la clase de destino. En el ejemplo de polos y transformadores, una etiqueta de ruta origen-destino podría ser "Los polos sostienen los transformadores". La etiqueta de ruta destino-origen describe la relación al navegar desde el destino a la clase de origen. En el ejemplo de polos y transformadores, una etiqueta de ruta destino-origen podría ser "Los transformadores están montados en los polos".
Las clases de relación también se pueden crear en ArcCatalog. Seleccione el comando Nuevo > Clase de relación del menú contextual de una geodatabase.
Sintaxis
CreateRelationshipClass_management (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})
Parámetro | Explicación | Tipo de datos |
origin_table | Tabla o clase de entidad asociada a la tabla de destino. | Table View |
destination_table | Tabla asociada a la tabla de origen. | Table View |
out_relationship_class | Clase de relación creada. | Relationship Class |
relationship_type | Tipo de relación que se creará entre las tablas de origen y de destino.
| String |
forward_label | Un nombre para identificar la relación de manera unívoca al navegar de la tabla de origen a la tabla de destino. | String |
backward_label | Un nombre para identificar la relación de manera unívoca al navegar de la tabla de destino a la tabla de origen. | String |
message_direction | Dirección en la que se transmiten los mensajes entre las tablas de origen y de destino. Por ejemplo, en una relación entre polos y transformadores, cuando se elimina el polo, envía un mensaje a sus objetos transformadores relacionados y les informa que fue eliminado.
| String |
cardinality | Determina cuántas relaciones existen entre las filas o entidades en la tabla de origen y las filas o entidades en la tabla de destino.
| String |
attributed | Especifica si la relación tendrá atributos.
| Boolean |
origin_primary_key | Campo de la tabla de origen, generalmente el campo OID, que lo vincula al campo Clave externa de origen de la tabla de clase de relación. | String |
origin_foreign_key | Campo de la tabla de clase de relación que lo vincula al campo Clave principal de origen de la tabla de origen. | String |
destination_primary_key (Opcional) | Campo de la tabla de destino, generalmente el campo OID, que lo vincula al campo Clave externa de destino de la tabla de clase de relación. | String |
destination_foreign_key (Opcional) | Campo de la tabla de clase de relación que lo vincula al campo Clave principal de destino de la tabla de destino. | String |
Muestra de código
Ejemplo de Crear clase de relación (ventana de Python)
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta Crear clase de relación.
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")
Ejemplo 1 de Crear clase de relación (secuencia de comandos independiente)
Crear una clase de relación entre la clase de entidad de vegetación y una tabla con información de vegetación adicional.
# 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)
Ejemplo 2 de Crear clase de relación (secuencia de comandos independiente)
Crear una clase de relación entre la clase de entidad de parcela y una tabla con información del propietario.
# 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)
Entornos
Información sobre licencias
- ArcGIS Desktop Basic: No
- ArcGIS Desktop Standard: Sí
- ArcGIS Desktop Advanced: Sí