Siempre se dibuja una relación de la tabla Muchos a la tabla Uno.
Los campos relacionados deben tener un tipo idéntico o compatible. Puede utilizar los siguientes tipos para los campos llaves primara y foránea:
cadena (Alfa y Texto),
numérico (Real, Entero, Entero largo, Entero 64 bits y Flotante),
hora,
booleano,
fecha.
Los campos llave primaria por lo general están indexados (no obligatorio). Las propiedades de las relaciones pueden configurarse utilizando el Inspector o, en algunos casos, utilizando el menú contextual que aparece al hacer clic derecho sobre la relación.
El área de definición identifica los campos llaves foránea y primaria.
De: el campo “De” es el campo llave foránea de la tabla Muchos para esta relación. En el menú contextual, este campo se llama “campo fuente”.
Hasta: el campo “Hasta” es el campo llave primaria de la tabla Uno. En el menú contextual, este campo se llama “campo destino.” Usted traza la relación del campo llave foránea de la tabla Muchos hasta el campo llave primaria en la tabla Uno.
Color: este menú pop up permite definir el color de una relación tal como se mostrará en el editor de estructura. El color de una relación no está asociado a sus propiedades. El color de una relación también puede definirse utilizando el menú contextual de las relaciones.
Las opciones Muchos a Uno permiten definir el funcionamiento de la relación cuando se abre un registro de la tabla Muchos.
Nombre: área de entrada del nombre de la relación Muchos a Uno (opcional). Nota: como parte de un enlace 4D Mobile, este nombre se utiliza para crear un atributo relacional correspondiente en el modelo junto Wakanda (ver Uso de relaciones en el manual 4D Mobile). En este caso, debe utilizar un nombre que es compatible con las reglas JavaScript.
Manual/Automática: este menú permite definir el modo de funcionamiento de la relación que asocia la tabla Muchos a la tabla 1. Si selecciona la opción Automática, la funciones de automatización se activarán. Por ejemplo, cuando un registro de la tabla [EMPLEADOS] se abre en el entorno Aplicación, el registro de la empresa correspondiente se selecciona en la tabla [Empresas]. Esto le permite a 4D mostrar la información sobre la empresa para la cual trabaja el empleado. Por defecto, se selecciona la opción Manual. En este caso, debe administrar la carga y descarga del registro relacionado de la tabla Uno utilizando las rutinas del lenguaje. Para mayor información, consulte el párrafo Relaciones manuales y automáticas. La propiedad Relación automática Uno también puede definirse vía el menú contextual de las relaciones.
Lista de registros relacionados: esta opción tiene el efecto de insertar, automáticamente y de manera invisible, el carácter (@) a todo valor introducido en la tabla Muchos en cuando el usuario presiona la tecla Tab o hace clic fuera del campo. Si el usuario introduce un valor parcial, 4D busca un valor correspondiente en el campo relacionado de la tabla Uno. Si el programa encuentra un solo valor posible, completa la entrada. Si encuentra más de un valor posible, se le da al usuario la lista de valores posibles.
Advertir si registro Uno no existe: si esta opción está seleccionada, 4D muestra una caja de diálogo que permite al usuario crear el registro Uno relacionado si no existe. Por defecto, cuando introduce un valor en un campo relacionado de la tabla Muchos, 4D verifica si existe un registro correspondiente en la tabla Uno relacionada. Si 4D no lo encuentra, aparece la siguiente caja de diálogo:
Esta caja de diálogo permite crear un registro correspondiente en la tabla Uno mientras introduce un registro en la tabla Muchos. Por ejemplo, imagine que su base contiene una tabla [Facturas] y una tabla [Clientes]. Si introduce una factura en la tabla [Facturas] y el cliente a quien está destinada la factura no tiene un registro correspondiente en la tabla [Clientes], 4D le pedirá si quiere crear el registro correspondiente en la tabla [Clientes] cuando valide el registro de la tabla [Facturas]. Puede eliminar esta caja de diálogo deseleccionando la opción Advertir si registro Uno no existe. Eliminar esta caja de diálogo es útil cuando quiere gestionar la creación del registro Uno relacionado utilizando un método.
Campo discriminante La lista de campos discriminantes permite seleccionar un campo adicional para mostrar en la lista de valores (que aparece cuando el usuario escribe el carácter comodín (@) en el campo relacionado durante la entrada de datos). Generalmente, es mejor seleccionar el campo que identifique mejor al registro. Así es como funciona esta opción durante la entrada de datos: 4D permite al usuario consultar los valores de la tabla Uno mientras introduce datos en el campo llave foránea en la tabla Muchos. El usuario simplemente usa el carácter comodín (@) estándar en el campo relacionado. Al hacerlo, 4D busca la entrada correspondiente en la tabla Uno relacionada. El carácter comodín puede utilizarse de dos formas: para completar una entrada parcial o para mostrar la lista de valores válidos. Cuando se muestra una lista, el usuario puede seleccionar el valor de la lista. Un campo adicional, el campo discriminante, puede mostrarse junto al campo relacionado. Por ejemplo, imagine que el usuario está creando un registro en la tabla [Empleados]. En lugar de escribir Acme en el campo Empresa, el usuario puede escribir Ac@ y luego presionar la tecla Tab para pasar al siguiente campo. Como @ es el carácter comodín de 4D esta entrada significa que “el valor comienza por “Ac” y está seguido por otros caracteres”. 4D busca en la tabla relacionada el registro que corresponda a este criterio. Si sólo encuentra un registro, completa la entrada automáticamente y pasa el siguiente campo en el orden de entrada del formulario. La siguiente imagen muestra este tipo de uso del carácter comodín.
Si 4D encuentra más de un valor que corresponda al criterio, muestra una lista de valores para que el usuario pueda seleccionar el valor apropiado. La siguiente imagen muestra la lista:
Puede especificar un segundo campo que se mostrará en la lista para ayudar al usuario a decidir que empresa seleccionar. El segundo campo es el campo discriminante que seleccionó en la caja de diálogo de definición del tipo de relación. La imagen a continuación muestra la lista de empresas junto con su ciudad. Este campo discriminante ayuda al usuario a seleccionar la entrada correcta si no recuerda el nombre de la empresa, pero si recuerda la ciudad en la que está ubicada. La imagen a continuación muestra una lista completa de empresas:
Es posible redimensionar la ventana de selección de registro. Para ver una lista de todas las empresas en la tabla [Empresas], el usuario debe escribir @ únicamente. 4D muestra una lista de todas las empresas para que el usuario seleccione la correcta.
Las opciones Uno a Muchos controlan las relaciones automáticas en sentido contrario.
Nombre: área de entrada del nombre de la relación Unos a Muchos (opcional). Nota: como parte de un enlace 4D Mobile, este nombre se utiliza para crear un atributo relacional correspondiente en el modelo junto Wakanda (ver Uso de relaciones en el manual 4D Mobile). En este caso, debe utilizar un nombre que es compatible con las reglas JavaScript.
Manual/Automática: este menú permite definir el modo de funcionamiento de la relación que une a la tabla Uno a la tabla Muchos. Si selecciona la opción Automática, las funciones automáticas se activarán. Por ejemplo, cuando un registro de la tabla [Empresas] se abre en modo Aplicación, los registros relacionados en la tabla [Empleados] se cargan. Esto permite a 4D mostrar los registros de los empleados que trabajan para la empresa en un subformulario. Por defecto, se selecciona la opción Manual (no las funciones automáticas). Para mayor información, consulte el párrafo Relaciones manuales y automáticas. La propiedad Relación automática Uno a Muchos también puede definirse vía el menú contextual de las relaciones.
Autoasignar valor en el subformulario: esta opción se utiliza para asignar automáticamente el valor del campo llave primaria en la tabla Uno al campo llave foránea en la tabla Muchos durante la entrada de datos. Esta opción sólo aparece disponible si la opción Automática ha sido seleccionada. Esta opción afecta la entrada de datos cuando un formulario de entrada de una tabla Uno tiene un subformulario de una tabla Muchos relacionada (para mayor información sobre subformularios, consulte la sección Subformularios y widgets). Si la opción Autoasignar valor en el subformulario está seleccionada, un usuario puede añadir registros al subformulario (es decir, la tabla Muchos relacionada) y tener el valor relacionado automáticamente asignado a los campos de la tabla relacionada. En la relación entre la tabla [Empresas] y la tabla [Empleados], la tabla [Empresas] es la tabla Uno y la tabla [Empleados] es la tabla Muchos relacionada. Cada empresa tiene un registro en la tabla [Empresas] y varios registros en la tabla [Empleados]. Cuando el campo llave foránea de la tabla Muchos se muestra en el subformulario, puede ver el efecto de esta opción: el valor del campo se copia automáticamente en el subformulario cada vez que se añade un subregistro.
Esta opción también funciona cuando el campo llave foránea de la tabla Muchos no se presenta en el subformulario: el valor del campo llave primaria se copia automáticamente “internamente” en el campo llave foránea. Puede verificarlo pasando al modo página. Cuando la opción Autoasignar valor en el subformulario no está seleccionada, los subregistros creados no se relacionan automáticamente al registro apropiado de la tabla Muchos:
bien sea manualmente, si se muestra el campo llave: en el ejemplo anterior, fue suficiente introducir "Telcon" en el campo empresa de cada subregistro,
o por programación: sólo necesita ejecutar una línea de código del tipo
[TableN]Field1:=[Table1]Field1
durante la creación de subregistros.
Nota: si modifica el valor del campo relacionado en la tabla Uno después de crear registros en la tabla Muchos, la opciónAutoasignar valor en el subformulario no tiene efecto y usted deberá asignar el valor del campo relacionado manualmente o utilizando el lenguaje.
Las opciones de Integridad referencial controlan la eliminación de registros en la tabla Muchos al borrar un registro en la tabla Uno. Normalmente, el usuario no puede eliminar registros en una tabla a menos que sea la tabla actual. Esto significa, por ejemplo, que para borrar registros en la tabla [Empleados], primero debe convertirla en la tabla actual. Para volver a una tabla la tabla actual, selecciónela en caja de diálogo lista de tablas en el entorno Diseño.
Dejar registros relacionados intactos: seleccionar este botón radio permite al usuario eliminar un registro de la tabla Uno, dejando intactos los registros correspondientes de la tabla Muchos. Esto deja registros de la tabla Muchos sin correspondencia con un registro relacionado de la tabla Uno. El único efecto es hacer que la información de la tabla Uno no esté disponible. Ningún registro de la tabla Uno se carga cuando un registro correspondiente al registro eliminado se carga en la tabla Muchos.
Eliminar registros relacionados: seleccionar este botón le indica a 4D que debe borrar automáticamente todos los registros relacionados en la tabla Muchos cuando un usuario elimine un registro de la tabla Uno. Esta opción asegura que los registros Muchos relacionados no se conviertan en “huérfanos” cuando se elimine el registro Uno correspondiente.
No eliminar si hay registros relacionados: seleccionar este botón radio hace impida que el usuario elimine un registro de la tabla Uno si tiene registros relacionados en la tabla Muchos. Esta opción permite asegurar que los registros no se eliminen por error. Note que puede borrar registros libremente de la tabla Muchos, sin importar la opción seleccionada.
Los botones radio Eliminar registros relacionados y No eliminar si hay registros relacionados refuerzan lo que se conoce como integridad referencial en teoría de bases de datos. Cuando el control de integridad referencial está vigente, 4D se asegura que cada registro de la tabla Muchos esté asociado a un registro único de la tabla Uno.
Si tiene varias tablas relacionadas, el control de integridad referencial se activa para cada relación como en una cadena. Por ejemplo, imagine que tiene la estructura de la siguiente imagen. Si elimina un registro de la tabla [CODIGOS_POSTALES] (tabla Uno) y la opción Eliminar registros relacionados ha sido seleccionada para cada relación, 4D primero elimina los registros correspondientes de la tabla [EMPRESAS] y luego elimina los registros de todas los empleados que trabajan para esas empresas en la tabla [EMPLEADOS].
Cuando hay una configuración contradictoria de control de integridad referencial, 4D no permite la supresión de registros. Por ejemplo, si tiene seleccionada la opción Eliminar registros relacionados para la relación entre las tablas [EMPRESA] y [CODIGOS_POSTALES] pero tiene seleccionada la opción No eliminar si hay registros relacionados para la relación entre las tablas [EMPLEADOS] y [EMPRESAS], no se efectuará ninguna eliminación y los registros de las tablas [EMPRESAS] y [EMPLEADOS] permanecerán intactos.
El área SQL del Inspector ofrece información útil para trabajar con la estructura vía el lenguaje SQL. Para las relaciones, el área indica las propiedades FOREIGN KEY y REFERENCES.
PROPIEDADES
Producto: 4D
Tema: Definir la estructura de la base de datos