Las relaciones "n a n"

Los enlaces múltiples

¿Cuando se dan esas famosas relaciones "n a n"?

Muy fácil. Vamos a ver un ejemplo que entenderás rápidamente. En una casa de estudios hay MATERIAS y también hay ALUMNOS. ¿Cómo es la relación entre esas dos tablas? Veamos... Una materia tiene muchos alumnos y un alumno toma muchas materias. Por lo tanto es una relación "n a n": muchos alumnos muchas materias. Esto se grafica así:

La tabla ALUMNO-MATERIA también es llamada TABLA PIVOTE. Es la que relaciona dos tablas. En cada uno de sus registros se guarda el número de la materia y el número del alumno. ¿Qué contiene? Típicamente es lo que relaciona la instancia, como por ejemplo, el trimestre en el cual ese alumno tomó esa materia, la nota que obtuvo, la cantidad de ausencias...

Sin embargo, se pueden dar casos en que no hay nada que guardar, sencillamente que existe una relación.

El manejo de tablas pivotes tiende a ser un poco complejo para el usuario común, ya que el ingreso de un registro requiere que se hagan dos enlaces, uno a cada una de las tablas padres.

En Net2Client hay dos formas de hacer estos enlaces, la forma natural que es utilizando las tablas pivotes y la forma "trampeada" que es con un enlace múltiple. Este no se puede utilizar en todos los casos, pero a veces, nos puede simplificar la vida enormemente.

El enlace múltiple

Suponte que tenemos dos tablas:

  • Tabla de SISTEMAS
  • Tabla de MÓDULOS

La primera tiene información sobre sistemas y la segunda sobre módulos. Un sistema tiene muchos módulos y un módulo puede estar en muchos sistemas. Una forma de almacenar la información sería la siguiente:

Sistema Nombre Módulos que tiene
1 CRM para abogados ,15,18,30,40,

Fíjate que el sistema 1 tiene 4 módulos, los módulos 15,18,30 y 40. En vez de usar una tabla pivote, N2C te permite tener un enlace múltiple en el cual se guardan los números de los "hijos", separados por comas. (Hay una coma al inicio y una al final, que facilitan las búsquedas. Adivinanza: Adivina por qué).

En los módulos no se guarda ninguna información sobre los sistemas. Para saber en que sistemas está el módulo 18 se debe hacer un query buscando aquellos registros de sistemas que en el campo de Enlace Múltiple a Empleados contengan el valor ",18," (con una coma inicial y final. ¿Ya entendiste para que la coma al principio y al final?)

Cuando usar cada tipo de enlace

El enlace múltiple no debe usarse nunca si la cantidad de hijos que puede tener un registro es grande.

Los enlaces múltiples no deben usarse sino en ciertas ocasiones especiales. Sin embargo, son una solución práctica que muchas veces pueden evitar añadir una tabla adicional en una relación n a n. En este caso como la cantidad de componentes de un módulo no es tan grande es manejable y se evita el tener que montar una tercera tabla Proyecto-Componente.