Relaciones de tablas en App Builder
Introducción
Una vez que hayas creado las tablas de tu aplicación, puedes definir relaciones entre ellas. Una relación vincula dos tablas basándose en datos coincidentes en una o más columnas.
Nota
Las relaciones en App Builder a menudo se denominan restricciones o restricciones de clave foránea en la terminología de bases de datos.
Las relaciones de tablas proporcionan las siguientes ventajas:
-
Las relaciones te permiten hacer cumplir la integridad de los datos a nivel de base de datos. Por ejemplo, al vincular una tabla de
Órdenesa una tabla deClientes, puedes evitar que un usuario cree un pedido para un cliente que no existe. También puedes definir reglas que determinan qué sucede con los registros relacionados cuando se actualiza o elimina un registro. -
Cuando App Builder sabe cómo están relacionadas las tablas, mejora automáticamente la interfaz de usuario para crear una experiencia más intuitiva. Por ejemplo, cuando la tabla de
Órdenesincluye una columna deCustomerID:-
Sin una relación, al construir una página para crear un nuevo pedido, App Builder genera un cuadro de texto simple para el
CustomerID. El usuario necesita conocer e ingresar manualmente el ID correcto del cliente. -
Con una relación entre la columna
CustomerIDde la tabla deÓrdenesy la tabla deClientes, App Builder entiende la conexión. En lugar de un cuadro de texto, genera automáticamente una lista desplegable o un control de búsqueda en la página del pedido. Este control se llenará con los nombres amigables de los clientes (de la columna Título designada de la tabla deClientes), en lugar de sus IDs.
-
Cómo crear y gestionar relaciones
Mientras que las tablas se pueden crear utilizando el Asistente de Tablas, las relaciones se gestionan desde la pestaña Tablas dentro del App Workbench. Desde allí, puedes seleccionar una tabla y luego definir sus relaciones con otras tablas. App Builder a menudo puede sugerir relaciones de clave foránea, que luego puedes confirmar.
Cuando defines una relación, también puedes especificar reglas que dictan cómo App Builder mantiene la integridad de los datos cuando se actualiza o elimina un registro en la tabla padre (el lado "uno" de una relación de uno a muchos). (Por ejemplo, ¿qué debería suceder con los pedidos de un cliente si se elimina ese registro de cliente?) Estas se conocen como reglas de cascada. Las opciones son las siguientes:
-
Regla On Delete:
-
Cascada: Si se elimina un registro padre, todos sus registros hijo relacionados también se eliminan. (Por ejemplo, eliminar un cliente también elimina todos sus pedidos).
-
Predeterminado: Si se elimina un registro padre, el valor en la columna de clave foránea correspondiente de los registros hijo (que hacen referencia) se establece en el valor predeterminado de la columna. Esta acción requiere que se defina un valor predeterminado en la columna de clave foránea.
-
Nulo: Si se elimina un registro padre, el valor de la clave foránea en los registros hijo relacionados se establece en
NULL. Esto requiere que la columna de clave foránea en la tabla hijo permita valoresNULL. (Por ejemplo, los pedidos permanecen, pero ya no están asociados con ese cliente). -
Prevenir: Impide que se elimine el registro padre si tiene algún registro hijo asociado. Esta es a menudo la opción predeterminada más segura.
-
-
Regla On Update:
- Esta regla se aplica si se cambia el valor de la clave primaria del registro padre. Las opciones son las mismas que para la regla On Delete.
La regla que elijas depende de tu lógica empresarial y de cómo deseas manejar tus datos.