dic 21

¿Que es la abstracción?

Posted in analisis, optimización

Vamos a analizar una de las piezas fundamentales de cualquier aplicación de gestión, las Entidades, y lo vamos a hacer mostrando varios diseños y observando los detalles en cada uno de ellos.

En el siguiente ejemplo, vemos una estructura básica de entidades, que cualquiera hemos creado en los inicios,

Esque tablas básicas sin abstracción

En esta estructura, vemos como tenemos 3 tablas para las entidades: clientes, proveedores y agentes comerciales.

  • La tabla de Agentes es maestra de clientes, de esta forma, un agente puede tener varios clientes en su cartera, pero cada cliente solo puede pertenecer a un agente, y solo a uno.
  • La tabla de Clientes tambien es maestra y a su vez, historica de agentes.
  • Y la tabla de Proveedores es maestra

Las 3 tablas tienen enlaces a Formas juridicas, Formas de pago y Divisas, asi un proveedor puede tener una Forma de pago asignada por defecto, una forma juridica y un tipo de moneda. Y esto mismo es aplicable a Clientes y también a Agentes.

Y bién, si tanto se parecen las tres tablas, que tienen los mismos enlaces a tablas maestras, ¿porque no creamos una tabla común llamada Entidades?

Si hay una respuesta afirmativa a ésta pregunta, eso es la “abstracción”, en definitiva, es sacar la esencia del esquema sin perder funcionalidad en el trayecto.

Y si analizamos lo dicho anteriormente,

Un cliente, es una persona fisica o juridica

Tiene un domicilio fiscal,

tiene una Forma de pago,

trabaja con una moneda determinada

Un proveedor, tambien es una persona fisica o jurídica

y también tiene un domicilio fiscal,

y tiene una Forma de pago,

y trabaja con una moneda determinada

Y un agente, pues lo mismo.

Si todos son tan parecidos en tantos aspectos, porque no crear una única tabla Entidades donde reunirlos a todos. ¡Pues SI, es posible! Y fijate si es posible, que aquí te dejo el esquema,

Esquema de tablas básicas con abstracción

Pero, ¿hay diferencias?

¡Pues claro que hay diferencias!, en la ficha del cliente acumulamos normalmente las ventas realizadas, y en el proveedor las compras, y en el agente el total de ventas y las comisiones

Y ¿como podemos solucionar esto?

Pues muy facilmente, solo tendremos que crear los campos apropiados en la tabla entidades, Total-Ventas, Total-Compras, Total-Comisiones.

Pero si una entidad es cliente, ¿para que queremos los campos de Total-Compras, y Total-Comisiones en su ficha?

Pues en este caso, esos campos no se utilizarian, y su contenido sería “0”.

Y si estan todos juntos, ¿como puedo mostrar únicamente los clientes? y que los proveedores y los agentes no se vean.

Pues aquí tenemos otro inconveniente, pero también tiene solución. Usaremos campos booleanos para definir si una entidad es cliente, es proveedor o es agente o también puede ser varias cosas a la vez, y tendremos que duplicar indices por codigo, nombre, etc. y quizá tengamos que duplicar mas cosas, pero no tenemos otra opción. Si queremos abstraer las tres tablas en una sola, la tabla resultante va ser mas compleja de manejar que las 3 tablas anteriores por separado.

Y es en este punto dónde debemos reflexionar sobre el tema, y valorar las ventajas de tener una tabla única, o tener 3 tablas separadas. Porque a medida que abstraemos cualquier ocpión del programa, se hace mas dificil de mantener.

Además, ya hemos dicho que hay muchos campos que serán comunes a todas las entidades, como, Nombre, Dirección, C.Postal, Poblacion, Telefonos, etc. pero tendremos muchos mas campos que solo serán utiles cuando la entidad sea cliente, y otros solo para proveedores y otros solo para agentes.

El problema no es el espacio que este archivo va a ocupar en el disco, pues ahora no hay problemas de capacidad. El problema puede estar en el tratamiento de esos datos a la hora de realizar cambios en la estructura de la tabla (simplemente tendremos que tener mas precaución), ya que cualquier cambio en Clientes, puede afectar también a proveedores y a agentes si no tenemos cuidado.

A todo esto debemos añadir que si los datos estan en tablas separadas, no se mezclaran los datos, pero si una empresa es cliente y proveedor al mismo tiempo, tendras que duplicar sus fichas. Pero te aseguras que no se van a mezclar datos y las tablas son mas sencillas.

Si acabas de iniciarte en la herramienta, demasiada abstracción quizá no sea buena idea.

Después de leer esto, tú eres el único que debes tomar ésta decisión,

¡Abstracción! O ¡sencillez!

PDF    Enviar artculo en formato PDF   
comments: 5 »