Entender la integridad referencial

Este artículo se ha traducido del inglés mediante IA y puede contener errores. Sus comentarios nos ayudarán a mejorar.

Este artículo introduce el concepto de registros relacionados y la integridad referencial, y describe cómo ActivityInfo garantiza esta integridad referencial.

Introducción

Los campos de referencia le permiten hacer referencia a un registro desde otro registro en un formulario diferente. Por ejemplo, un registro que describe una escuela podría hacer referencia a un formulario de "Provincia", indicando su ubicación. Esto crea una relación entre los formularios de Escuela y Provincia.

Cuando empieza a añadir registros a los formularios de Escuela y Provincia, también crea relaciones entre los registros de escuelas y provincias.

En el diagrama anterior, cada escuela hace referencia a una única provincia. Cuando un registro hace referencia a otro, decimos que los dos registros están relacionados.

La integridad referencial es una propiedad de los datos que establece que todas las referencias son válidas. Esto significa que siempre que un registro hace referencia a algún valor, debe existir un registro de referencia que contenga ese valor. En el diagrama anterior, podemos ver que cada escuela tiene una referencia válida a una provincia. Por lo tanto, los dos formularios tienen integridad referencial.

Los campos de subformulario también crean relaciones entre los registros padre e hijo.

Editar registros

Editar un Registro en ActivityInfo no afecta a la integridad referencial. Por ejemplo, cambiar el nombre de la provincia "Norte" a "Del Norte", no afecta la relación con las escuelas "Kirby" y "Wellsboro". Esto se debe a que ActivityInfo utiliza un ID de Registro interno, autogenerado e inmutable para almacenar la relación entre los registros.

Estos ID internos generalmente están ocultos para el usuario. En su lugar, ActivityInfo muestra el registro referenciado utilizando los Campos Clave de ese formulario. Sin embargo, puede mostrar el ID de Registro en la Vista de Tabla haciendo clic en Seleccionar Columnas y marcando "ID de Registro".

Eliminar registros padre

Cuando elimina un registro de un formulario que tiene un subformulario, todos los registros hijo se eliminan automáticamente, preservando la integridad referencial.

Cuando recupera un registro padre eliminado, todos sus registros hijo también se recuperan.

Eliminar registros referenciados

Eliminar un registro que es referenciado por otros registros comprometería la integridad referencial. Si eliminara la provincia "Sur", la escuela Dalton ya no tendría una referencia válida a una Provincia. Sus datos estarían incompletos y ya no podría saber dónde se encuentran las escuelas.

Por esta razón, ActivityInfo generalmente no permitirá que se elimine un registro cuando es referenciado por otros registros.

Screenshot 2024-02-05 at 15.22.10.png
Screenshot 2024-02-05 at 15.22.10.png

Por otro lado, la provincia "Este" no es referenciada por ninguna de las escuelas, por lo que puede ser eliminada sin comprometer la integridad referencial de los dos formularios.

Excepciones

Hay algunos casos en los que ActivityInfo no puede o no garantiza la integridad referencial.

Trabajar sin conexión

ActivityInfo no puede garantizar completamente la integridad referencial cuando los datos se recopilan o eliminan sin conexión.

Por ejemplo, si un trabajador de campo añade un nuevo registro de escuela que hace referencia a la provincia "Este" mientras está desconectado del servidor, un administrador podría eliminar la provincia "Este" al mismo tiempo. Como no hay registros en el servidor que hagan referencia a la provincia "Este", ActivityInfo permite que el registro sea eliminado.

Sin embargo, cuando el trabajador de campo regresa a la oficina después de una semana en el terreno y sincroniza, el nuevo registro llegará al servidor con una referencia eliminada a la provincia "Este" eliminada, violando la integridad referencial.

En este caso, la integridad referencial puede restaurarse recuperando la provincia "Este" eliminada.

Referencias entre bases de datos propiedad de diferentes cuentas de facturación

ActivityInfo permite que los formularios hagan referencia a formularios en otras bases de datos, incluso en bases de datos propiedad de otras organizaciones con diferentes cuentas de facturación. Esta es una característica clave que apoya la coordinación humanitaria: muchas organizaciones diferentes que trabajan en la misma área geográfica pueden hacer referencia a conjuntos de datos operativos comunes para apoyar la coordinación.

Por ejemplo, una organización, la Organización A, podría recopilar datos sobre las escuelas de una región. Una organización asociada, la Organización B, podría entonces añadir su propia base de datos de ActivityInfo y realizar una evaluación de estas escuelas. Como las organizaciones trabajan juntas, la Organización B hace referencia al Formulario de Escuelas propiedad de la Organización A:

En este caso, el Formulario de Evaluación de Escuelas y el Formulario de Escuelas son propiedad de dos organizaciones diferentes. La integridad referencial sigue siendo importante, pero también lo es el derecho del propietario de los datos a controlar sus propios datos.

Si un administrador de la Organización A intenta eliminar la escuela "Dalton", se le advertirá de las consecuencias en los datos de la Organización B, pero aun así se le permitirá proceder con la eliminación.

Propietarios de la base de datos

A los propietarios de la base de datos se les permite excepcionalmente eliminar registros que son referenciados por otros registros, incluso si esto compromete la integridad referencial.

API

La API de ActivityInfo no garantiza actualmente la integridad referencial para los registros referenciados.

Sin embargo, eliminar un registro padre a través de la API también elimina automáticamente sus subregistros.

Siguiente elemento
Exportar todos los adjuntos