De tablas a clase de relación (Gestión de datos)
Resumen
Crea una clase de relación con atributos a partir de las tablas de origen, de destino y de relación.
Uso
-
Esta herramienta crea una tabla en la base de datos que contiene los campos de atributo seleccionados de la tabla de relación. Estos campos se utilizan para almacenar atributos de la relación en sí 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 relaciones simples o punto a punto son relaciones entre 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 una relación 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 elemento de menú Nuevo > Clase de relación del menú contextual de una geodatabase.
-
El botón Agregar campo del parámetro Campos de atributo se utiliza solo en ModelBuilder. En ModelBuilder, donde no se ejecutó la herramienta anterior, o sus datos derivados no existen, es probable que el parámetro Campos de atributo no se complete con nombres de campo. El botón Agregar campo le permite agregar campos esperados para poder completar el cuadro de diálogo De tablas a clase de relación y continuar creando el modelo.
Sintaxis
Parámetro | Explicación | Tipo de datos |
origin_table |
Tabla o clase de entidad que se asociará a la tabla de destino. | Table View |
destination_table |
Tabla o clase de entidad que se asociará a la tabla de origen. | Table View |
out_relationship_class |
Clase de relación que se creará. | Relationship Class |
relationship_type |
Tipo de asociación que se creará entre las tablas de origen y de destino.
| String |
forward_label |
Etiqueta que describe la relación que se está transfiriendo desde la tabla/clase de entidad de origen a la tabla/clase de entidad de destino. | String |
backward_label |
Etiqueta que describe la relación que se está transfiriendo desde la tabla/clase de entidad de destino a la tabla/clase de entidad de origen. | String |
message_direction |
Los mensajes de dirección se propagarán entre los objetos de la relación. 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 |
Cardinalidad de la relación entre el origen y el destino.
| String |
relationship_table |
Tabla que contiene los atributos que se agregarán a la clase de relación. | Table View |
attribute_fields [attribute_fields,...] | Los campos que contienen valores de atributo que se agregarán a la clase de relación. | Field |
origin_primary_key |
Campo en la tabla de origen que se utilizará para crear la relación. Generalmente, éste es el campo del identificador de objeto. | String |
origin_foreign_key |
Nombre del campo Clave externa de la tabla de relación que hace referencia al campo Clave principal de la tabla/clase de entidad de origen. | String |
destination_primary_key |
Campo en la tabla de destino que se utilizará para crear la relación. Generalmente, éste es el campo del identificador de objeto. | String |
destination_foreign_key |
Campo de la tabla de relación que hace referencia al campo Clave principal de la tabla de destino. | String |
Ejemplo de código
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta TableToRelationshipClass.
import arcpy
arcpy.env.workspace = "C:/data/Montgomery.gdb"
arcpy.TableToRelationshipClass_management("owners", "Parcels", "ownersParcels_RelClass",
"SIMPLE", "Owns", "Is Owned By", "BACKWARD",
"MANY_TO_MANY", "owners", ["OWNER_PERCENT", "DEED_DATE"],
"OBJECTID", "owner_id", "OBJECTID", "parcel_id")
Crear una clase de relación con atributos entre la clase de entidad de parcela y una tabla con información del propietario.
# Name: TableToRelationshipClass.py
# Description: Create an attributed 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 attributed 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"
attributeFields = ["OWNER_PERCENT", "DEED_DATE"]
originPK = "OBJECTID"
originFK = "owner_ID"
destinationPK = "OBJECTID"
destinationFK = "parcel_ID"
arcpy.TableToRelationshipClass_management(ownerTbl, parcel, relClass, "SIMPLE",
forLabel, backLabel, "BACKWARD", "MANY_TO_MANY",
ownerTbl, attributeFields, originPK, originFK,
destinationPK, destinationFK)