Campos de enlace (n:m)
Un campo de enlace conecta dos tablas n:m – cada fila puede hacer referencia a varias filas del lado de destino, y viceversa. Técnicamente, detrás hay una tabla intermedia (tabla de unión) con una columna por cada lado.
Al crearlo eliges:
- la tabla de destino,
- el nombre de columna en el lado de destino (la dirección inversa – un campo de enlace siempre se crea como un par simétrico, una columna en cada lado de la relación),
- y el manejo de la tabla de unión:
- Generar nueva – IllusionDB crea la tabla intermedia por sí mismo.
- Usar existente – eliges una tabla intermedia ya existente junto con sus dos columnas de clave foránea.
El valor de un campo de enlace siempre es una lista de filas vinculadas. En la vista de tabla, la celda muestra para ello una insignia con el número (“3 entradas”, también con cero) – un clic abre una ventana con la lista completa: por cada fila, el campo de visualización de la fila vinculada, un icono de lápiz para abrir el registro vinculado y una “×” para eliminar el vínculo, más una búsqueda para añadir más vínculos. La misma interfaz aparece de forma idéntica en el formulario de edición de un registro individual – la cuadrícula y el formulario se comportan aquí deliberadamente igual (consulta también Registros hijos, que usa el mismo principio de insignia, pero allí de forma puramente de lectura, sin añadir/eliminar).
Un campo de enlace puede – igual que un campo de clave foránea – apuntar también a la propia tabla, para relaciones n:m entre filas de la misma tabla.
Si en cambio se trata de una relación de clave foránea puramente 1:n (sin tabla intermedia) y se quieren mostrar desde el lado “padre” todas las filas hijas correspondientes, consulta Registros hijos.
Cambiar la conexión a posteriori -- deliberadamente no es posible
A diferencia de los campos lookup, rollup y de registros hijos, en un campo de enlace la conexión propiamente dicha (tabla de destino, lado opuesto, tabla de unión) no se puede cambiar a posteriori mediante “Editar campo” – es una decisión de diseño deliberada: un recableado posterior podría corromper los datos ya almacenados en la tabla de unión. Si un campo de enlace debe apuntar a otra tabla de destino o tabla intermedia, solo queda el camino de eliminarlo y crearlo de nuevo.
El nombre de columna de un campo de enlace, en cambio, se puede sobrescribir con total normalidad, como en cualquier otro tipo de campo, mediante el mismo modal “Editar campo”.