Más allá de las Bases de Datos Relacionales

Más allá de las bases de Datos Relacionales

(Versión de 6.x,  pendiente de adaptara a V7)

Velneo, sorprende cuando empiezas a trabajar, pero sorprende mucho más a medida que vas descubriendo las peculiaridades de su base de datos por mucho que hayas trabajado en otros sistemas. Es entonces con el tiempo, cuando recuerdas haber leído que esto realmente era un nuevo paradigma dentro de la programación.

Vamos a mostrar unos pequeños ejemplos para comprobar lo que siempre repetimos en nuestros artículos, blogs y comentarios:

“Si estas empezando y escribiendo procesos de mas de 4 ó 5 líneas, probablemente estés programando a la vieja usanza, gastando horas en balde y complicando tus programas”

Imaginemos una aplicación típica de gestión con las siguientes tablas: Clientes, Artículos (o Rubros), Albaranes (o Remitos), Líneas de Detalle

Supongamos que estamos en un formulario de un cliente y queremos mostrar o saber ¿Qué otros clientes han comprado los mismos artículos que el Cliente en Cuestión?

Si ya pensaste la solución unos minutos, ahora pregúntate:

¿El proceso que estás pensando te llevaría escribirlo más de 6 líneas aunque sea Velneo?

No te preocupes, es normal que tras muchos años en el “Lado Oscuro”, tiendas a escribir líneas y líneas para resolver problemas que desde la lógica de Velneo tienen solución inmediata.

Analicemos de forma real, es decir como pensaríamos si esta operación la tuviéramos que realizar “solo” con nuestra mente. No limites la lógica a los enlaces y herramientas de una base de datos relacional.

¿Que haríamos pensando de forma natural?

1º Buscaríamos todos los albaranes o remitos del cliente y haríamos una lista.
2º Repasaríamos las líneas de detalle y haríamos una nueva lista con todos los artículos que encontramos, sin repetirlos.
3º Partiendo de esa lista de artículos, buscaríamos en todas las líneas de Albaran de todos los clientes, aquellas que contenga alguno de estos artículos
4º Una vez tuviéramos la lista de líneas que contienen estos artículos, obtendríamos todos sus albaranes o remitos a los que pertenecen.
5 º Con ella obtendremos una lista de los clientes en cuestión.

Pues Bien en Velneo sería exactamente lo mismo, partiendo del origen ficha de cliente:

Quizás debas volver a leer el enunciado, para darte cuenta de la complejidad en cualquier otro lenguaje.

Veamos otro caso muy distinto, para darnos cuenta de que Velneo es realmente un nuevo paradigma de la programación.

Imaginemos que tenemos que informatizar un sistema de reserva de alquileres de coches para obtener los vehículos disponibles a una fecha, ante la solicitud de un cliente.

¿Si tenemos que presupuestar el costo en horas de hacer funcionar algo parecido, de cuanto tiempo estamos hablando?, ¿Cuántas líneas de procesos debemos realizar?

Me atrevería a asegurar que no cuesta mas allá de 10 minutos desarrollar esta solución con Velneo.

¿Increíble? No, tan solo utilizar singulares de plural, punteros a hermano y alguna actualización.

Primero esbocemos cual sería nuestra estructura básica de tablas: Vehículos, Clientes, Alquileres y opcionalmente Gamas.

Alquileres tendría un puntero a Maestro al Vehiculo que se reserva y otro al cliente que hace la reserva. Al revés, desde cada uno de ellos una relación a Histórico (Uno a muchos, de un vehiculo o cliente a todos sus alquileres). En el ejemplo aparece el Maestro de Gamas, pero no vamos a hacer ninguna referencia más ya que no es parte esencial del problema.

Alquileres tendría la fecha de entrega y la fecha de devolución entre sus campos necesarios.

La tabla de Alquileres necesitará tener el índice: Vehiculo + Fecha de Alquiler.

Con este índice podemos crear inmediatamente un Puntero a Hermano, al siguiente/Anterior alquiler del mismo vehiculo ordenado por fecha.

Por tanto en la tabla de alquileres, podemos crear un campo que sea Días Disponibles, (Día de Entrega del siguiente alquiler – Día de Devolución del que estoy)

Listo, la primera parte resuelta

Ahora nos queda la segunda, de un vehiculo, averiguar si el vehiculo esta disponible o no y mostrar lo que ya resolvimos (¿Cuantos días esta disponible?).

Para eso utilizaríamos un singular de plural. Esta herramienta consiste en apuntar a una reserva del vehiculo de todas las que tiene.

Resumiendo todos los Alquileres de un Vehiculo ordenados por fecha será su Histórico de Alquileres utilizando el índice Alquiler+fecha, será una relación plural, de 1 a muchos.

Por tanto un puntero de Vehículos a uno se sus alquileres, será una relación 1 a 1, a uno de todos, de los plurales.

Eso es lo que significa el puntero “Singular del plural “, con el que apuntar a uno de ellos.

¿En este caso a cual nos interesa? ¿Al primero, al último, a una fecha concreta o a la inmediatamente anterior….?

De todas las posibilidades que hay en este caso elegiremos “Singular del Plural por Índice”. Piensa que no solo jugamos con las posibilidades del puntero, sino también con las múltiples composiciones del índice por la que hacemos la relación uno a muchos.

Un índice del tipo Vehiculo + Importe, resolvería cuestiones completamente distintas.

Un Índice del tipo Vehiculo + Fecha + Hora Entrega, nos haría afinar la solución.

Por tanto tendremos un puntero desde el Vehiculo al alquiler de ese vehiculo inmediatamente anterior a la fecha deseada en cada momento.

Como veis, todo Real. Exactamente resuelto a como lo resolvería nuestra mente.

Creo que me ha costado bastante mas escribirlo que hacerlo.

Seguramente la solución final me obligara a trabajar un poco mas, definir algún campo auxiliar, usar actualizaciones en lugar de campos formula para optimizar, si sabes Velneo comprenderás que esto es cuestión de unos minutos más.

Se me ocurre un ejemplo más, para entender la potencia de esta base de datos.

¿Habéis pensado que un puntero a maestro, puede apuntar sobre la misma tabla?

Lo incomprensible es que esto no lo solucionen ya otras bases de datos, puesto que obedecen a relaciones lógicas y muy comunes en la realidad.

Imaginemos una tabla de socios de un club, en la que un socio trae a otro y así sucesivamente. Por tanto en la tabla de socios, además del campo Código, deberemos tener un nuevo campo que llamaremos Captador. Este campo será un puntero a la misma tabla de socios, ya que apuntara a otro socio.

De esta manera tendremos un puntero sobre la misma tabla Socio-Captador y una relación histórica sobre este mismo índice, resolviendo que socio capto a este y cuantos socios ha captado este y por supuesto incluso de forma recursiva hasta el infinito.

Habremos solucionado un gran problema con un puntero y un enlace a histórico sin necesidad de ninguna solución puente, sin tenernos que preocupar del tema en ninguna parte del programa más.

¿Habéis desarrollado aplicaciones que contengan escandallos complejos?
Si es así sabéis de su dificultad. Basta pensar en el típico caso de un componente “A” que pertenece a un compuesto “B” y este a su vez es componente de un compuesto “C” y así hasta el infinito.

Ahora podemos valorar la potencia que nos pueden dar estos enlaces recursivos sobre la misma tabla, sin necesidad de tablas puente u otros inventos, para resolver lo que las relaciones de Velneo hacen de forma natural.

¿Más ejemplos? Vosotros mismos, tan solo preguntaros, por qué en las soluciones Velneo el stock se lleva a nivel de movimiento evitando recalcular para averiguar las existencias a cualquier fecha o lo mismo en los saldos de contabilidad.

Sencillamente porque la base de datos ya lo resuelve por si misma.

Ahora piensa que las actualizaciones, funcionan sobre todos estos tipos de enlace, estos enlaces son concurrentes y además puedes utilizar toda esta potencia en todos los sitios incluidos Valores Iniciales, Campos Formulas, Procesos, Punteros Indirectos, etc. Además piensa que tienes también punteros indirectos, de los cuales no hemos hablado y que cuesta todavía mas creer que realmente funcionan a la perfección. Parece magia pero no lo es.

Eso si, hay que cambiar el Chip. Piensa en Real.

No te agobies con la potencia de Velneo. Hace poco hablé con un programador que después de 3 años con la herramienta, todavía se asombraba de la potencia del Valor Inicial, sirve para lo más simple y obvio y para lo más inimaginable y complicado, pero eso será otro artículo.

Programar en Velneo es muy rápido, aprovechar toda su potencia, cuestión de años.

Tan solo hay que aplicar lo que una y mil veces nos repitieron en la Facultad, “Todo lo que se pueda definir en Base de Datos, se debe definir en Base de Datos”, la diferencia es que aquí es mucho más.

Anuncios

Acerca de Miguel Pérez Oliver
Consultor de Velneo, Responsable Captación Latam y España (Hoy) . General Manager Iber Corporation, Fl,Usa (2 Años) Director de Producción y Compras Satiber (3 Años) CIO Grupo Iber (7 Años, 6 empresas internacionales y 400 usuarios) Programador Independiente (2 Años) Responsable Proyecto Sial (Sistema Informático para la Administración Local) Responsable Soporte área de Levante Microinformática , grupo Bull (2 Años) Experiencia en diversos lenguajes de programación, bases de Datos, dirección departamentos informática, organización, producción, comercial y gestión de compras. Mperez@velneo.com

4 Responses to Más allá de las Bases de Datos Relacionales

  1. Pingback: Cómo analizar una aplicación en Velneo, las diferencias « Miguel Pérez Oliver 米盖尔·佩雷斯·奥利维尔

  2. Pingback: Analisis en Velneo V7, algunas ideas a tener en cuenta « Miguel Pérez Oliver 米盖尔·佩雷斯·奥利维尔

  3. Pingback: Velneo es igual a ahorrar tiempo y dinero | Velneo 6.X

  4. Pingback: Velneo es igual a ahorrar tiempo y dinero | Web de Velneo V7

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: