feb 23

Tablas de extensión

Posted in novedades, v7

Ante la salida de la nueva versión 7.12, no me queda más remedio que felicitar de nuevo al equipo de Velneo por la cantidad y sobre todo por la calidad de las novedades que nos han ofrecido en esta y en las anteriores versiones.

Si las 2 versiones anteriores ya nos aportaban material de estudio para no aburrirse con vJavaScript, esta no se queda corta en funcionalidades y como siempre, es difícil decidir cual de ellas es mejor que el resto, sobre todo, porque cada cual tiene sus propias preferencias.

Pero no he iniciado este artículo para valorar cada una de esas funcionalidades, sino para hablar de una en concreto: La tabla de extensión.

  • ¿Qué es?
  • ¿Para qué sirve?
  • ¿Cómo se utiliza?
  • ¿Cuando debo usarla?

Son algunas de las preguntas más frecuentes que nos vamos a realizar todos en algún momento del desarrollo y que voy a intentar responder en este artículo.

¿Qué es una tabla de extensión?

Una tabla de extensión, es aquella que nos va a permitir añadir campos a otra tabla, manteniendo intacta la estructura de la tabla principal.

Esta tabla mantiene una relación de 1 a 1 con respecto a la tabla maestra principal. Es decir, que la tabla de extensión es plural de la tabla principal, pero cada registro de la tabla principal, solo va a tener un registro en la tabla extendida (o ninguno) y cada registro en la tabla extendida, siempre va a tener un registro en la tabla principal.

Y la relación entre esos registros siempre va a ser establecida por medio del campo #ID de la tabla principal.

¿Para que sirve?

Vamos a recurrir en primer lugar a un ejemplo muy común para intentar explicar de forma sencilla los problemas que podemos resolver con este tipo de tablas:

Imagina que tenemos una tabla de Entidades, en la que, como ya sabemos, vamos a tener todos los datos comunes a Clientes, Proveedores, Agentes, etc. Y esos datos comunes son: Dirección, Población, NIF, Telefonos, etc.

Pero claro, con esos datos, la ficha del cliente se queda coja, nos faltan datos de facturación para ese cliente, pero no debemos incluir la forma de pago y otras condiciones particulares en la ficha de entidades, porque en esa ficha, también habrá proveedores y estos campos quedarán vacíos, o mejor dicho, ni siquiera deberían aparecer.

Pues aquí es donde entra en juego la tabla de extensión. Para solucionar este problema, creamos una tabla de extensión llamada Clientes, y en ella incluimos solo los campos propios del cliente, como: Forma de pago, Nº vencimientos, Periodo de facturación, etc. Pero además, al estar asociada a la tabla Entidades, también tenemos a nuestra disposición todos los campos de la entidad: nombre, dirección, población, etc.

¿Cómo se utiliza?

Si partimos de la base de que ya tenemos la tabla de Entidades en funcionamiento, ahora disponemos de un nuevo tipo de tabla llamado “Maestro de extensión”. Así que, creamos un nuevo objeto tabla de tipo “Maestro de extensión” y le indicamos la tabla “Entidades” como tabla principal y a partir de ahí, la creamos como cualquier otra tabla de las que usamos habitualmente.

En ejecución, esa relación de 1 a 1 de la que hablábamos al principio, implica que:

  1. Cuando creo un cliente, obligatoriamente tengo que crear una entidad o asociarlo a una entidad existente.
  2. Cuando creo una entidad, no necesariamente estoy obligado a crear el cliente, aunque puedo hacerlo desde la propia ficha de la entidad.

Veamoslo de otra forma:

  • Si queremos ver todas las entidades: Cargamos lista (ENTIDADES, ID) y retornamos la lista a la salida (obteniendo así todas las entidades de la tabla)
  • Si queremos ver todos los clientes: Cargamos lista (CLIENTES, ID) y retornamos la lista a la salida (obteniendo así todos los clientes de la tabla)
  • Pero si queremos ver todas las entidades que a su vez son clientes: Cargamos lista (CLIENTES, ID), Cargamos maestros(ENTIDADES) y retornamos la lista a la salida (obteniendo así todas las entidades que tienen ficha de cliente). Esto es así, porque aunque la relación es de 1 a 1, la tabla de Clientes sigue siendo “plural” de Entidades.

¿Cuando debo usarla?

Cómo pasa en multitud de ocasiones, parece que cuando hay una novedad interesante, hay que usarla para todo, y no se trata de eso, se trata de usar cada objeto cuando realmente es necesario.

El ejemplo que hemos puesto antes es uno de los muchos casos donde si es recomendable el uso de una tabla de extensión.

Pero además, las tablas de extensión son, una solución extraordinaria para la personalización de bases de datos. ¿Qué significa esto? Significa qué, podemos trabajar sobre cualquier proyecto heredado y personalizar cualquiera de sus tablas maestras, sin necesidad de alterar la estructura original de la aplicación, lo que nos permite tener una aplicación base muy generalista que posteriormente, vamos a poder verticalizar o especializar para diversos sectores e incluso llegando al desarrollo a medida.

Ya tengo una tabla de Clientes y es Maestra, ¿Puedo convertirla en Maestra de extensión?

Creo que no, pero aunque se pudiera, te recomiendo que no lo hagas.

La forma correcta de operar, es crear una Tabla maestra de extensión nueva y después, copiar todos los campos de una tabla a la otra, salvo el #ID, y los indices nuevos (que por cierto, son indices complejos).

Además, necesitaras crear nuevos formularios de mantenimiento de datos, ya que hay diferencias que deberían solucionarse con las nuevas fichas de extensión (que no es lo mismo que la tabla de extensión). El resto de los objetos visuales, seguramente si que podrás aprovecharlos.

¡Rizando el rizo!

  • ¿Podemos extender una tabla extendida?, posible si que es, a fin de cuentas, una tabla extendida, sigue siendo una tabla maestra con un #ID de clave única y por tanto, una tabla extendida, puede ser a su vez, la tabla principal para otra tabla extendida. Otra cosa es que tenga sentido crear una relación de este tipo, pero para casos raros, haberlos ¡hailos!

Ya se, no he hablado de como crear objetos visuales para el mantenimiento de este tipo de tabla, pero no quiero “extender” este artículo innecesariamente, llegando a originar el aburrimiento de mis apreciados lectores 😉 . Pero no os preocupeis, otro día será.

PDF    Enviar artculo en formato PDF   
comments: 6 »