Introducción a los objetos DataRelation

Actualización: noviembre 2007

Los conjuntos de datos que contienen tablas de datos relacionados utilizan objetos DataRelation para representar una relación primaria-secundaria entre las tablas y devolver los registros relacionados entre sí. Agregar tablas relacionadas a conjuntos de datos que utilizan el Asistente para la configuración de orígenes de datos o el Diseñador de DataSet, crea y configura el objeto DataRelation. Para obtener más información sobre cómo devolver registros relacionados, vea Cómo: Obtener acceso a registros en tablas de datos relacionadas. Para obtener información sobre cómo crear relaciones de datos, vea Cómo: Crear DataRelations con el Diseñador de Dataset.

El objeto DataRelation realiza dos funciones:

  • Puede poner a su disposición los registros relacionados con el registro con el que esté trabajando. Proporciona registros secundarios cuando se está en un registro primario (GetChildRows) y un registro primario si se trabaja con un registro secundario (GetParentRow).

  • Puede exigir restricciones de integridad referencial, como la eliminación de los registros secundarios relacionados cuando se elimina un registro primario.

Es importante comprender la diferencia entre una unión auténtica y la función de un objeto DataRelation. En una combinación auténtica, los registros se toman de tablas primarias y secundarias y se ponen en un único conjunto de registros plano. Cuando se utiliza un objeto DataRelation no se crea ningún conjunto de registros nuevo. En su lugar, se hace un seguimiento de la relación entre las tablas y se mantienen sincronizados los registros primarios y secundarios.

Objetos DataRelation y restricciones

Un objeto DataRelation también se utiliza para crear y cumplir las siguientes restricciones:

  • Una restricción UNIQUE, que garantiza que una columna de una tabla no contenga duplicados.

  • Una restricción FOREIGN KEY, que puede utilizarse para mantener la integridad referencial entre una tabla primaria y una secundaria en un conjunto de datos.

Las restricciones que se especifican en un objeto DataRelation se implementan mediante la creación automática de objetos adecuados o el establecimiento automático de propiedades. Si se crea una restricción FOREIGN KEY mediante el objeto DataRelation, se agregan instancias de la clase ForeignKeyConstraint a la propiedad ChildKeyConstraint de DataRelation.

Una restricción UNIQUE se implementa si se establece la propiedad Unique de una columna de datos en true o si se agrega una instancia de la clase UniqueConstraint al ParentKeyConstraint del objeto DataRelation. Para obtener información sobre cómo suspender las restricciones de un conjunto de datos, vea Cómo: Desactivar restricciones al llenar un conjunto de datos.

Reglas de integridad referencial

Como parte de la restricción FOREIGN KEY, puede especificar reglas de integridad referencial que se aplican en tres situaciones:

  • Cuando se actualiza un registro primario

  • Cuando se elimina un registro primario

  • Cuando se acepta o se rechaza un cambio

Las reglas que se pueden crear se especifican en la enumeración Rule y se indican en la tabla siguiente.

Regla de restricción FOREIGN KEY

Acción

Cascade

El cambio (actualización o eliminación) realizado en el registro primario se efectúa también en los registros relacionados de la tabla secundaria.

SetNull

Los registros secundarios no se eliminan, sino que la clave externa de estos registros se establece en DBNull. Con esta configuración, los registros secundarios pueden quedar “huérfanos”, es decir, sin relación con los registros primarios.

Nota:
El uso de esta regla puede generar datos no válidos en la tabla secundaria.

SetDefault

La clave externa de los registros secundarios relacionados se establece en su valor predeterminado (según lo establecido por la propiedad DefaultValue de la columna).

None

No se realiza ningún cambio en los registros secundarios relacionados. Con esta configuración, los registros secundarios pueden acabar conteniendo referencias a registros primarios no válidos.

Para obtener más información sobre actualizaciones en tablas de conjuntos de datos, vea Información general sobre cómo guardar datos.

Relaciones de sólo restricción

Al crear un objeto DataRelation, existe la opción de especificar que la relación se utilice únicamente para exigir restricciones, es decir, que no se utilice también para el acceso a registros relacionados. Esta opción permite generar un conjunto de datos algo más eficaz y que contenga menos métodos que uno que tenga la capacidad de relacionar registros. Sin embargo, no tendrá acceso a registros relacionados. Por ejemplo, una relación sólo de restricciones evita que se elimine un registro primario que todavía tiene elementos secundarios e impide el acceso a los registros secundarios a través del elemento primario.

Vea también

Conceptos

Información general sobre conjuntos de datos en Visual Studio

Diseñador de DataSet

Referencia

DataRelation

GetChildRows

GetParentRows

Asistente para la configuración de orígenes de datos

Otros recursos

Preparar la aplicación para recibir datos

Modificar datos en la aplicación