jueves, 4 de octubre de 2007

Singular de Plural ( i )

Hola de nuevo a todos.

Esta vez vamos a intentar arrojar algo de luz a unos punteros poco conocidos y por ello poco usados en Velneo, pero básicos a la hora de plantear nuestras bases de datos y ahorrarnos así muchas líneas de proceso en la parte derecha del mapa; los punteros singular de plural.

Hay dos tipos de punteros singular de plural; singular de plural por posición y singular de plural por índice.

Antes de entrar a fondo en los entresijos de este tipo de punteros veamos el concepto singular de plural.

Singular de plural tiene sentido dentro de una relación uno a muchos. Una relación de este tipo la encontraremos entre una tabla maestra y una submaestra suya, o entre una tabla maestra y otra tabla maestra con un puntero a maestro que apunte a la primera.


Para entender este tipo de relaciones el recurso más fácil, que yo sigo empleando a pesar de los años, es lo que dicen todos los manuales de Velneo:

  1. Plantea las dos frases posibles: las Facturas de un Cliente o los Clientes de una Factura.
  2. La frase cierta es la que nos dice qué tabla es maestra y cual es submaestra o maestra con puntero a maestro.

En el sencillo ejemplo que hemos empleado la frase cierta puede ser las Facturas de un Cliente, lo cual nos dice que Clientes es la tabla maestra y Facturas es la tabla submaestra o maestra con un puntero a la tabla maestra Clientes.


Cuando nos encontramos este tipo de relación entre tablas siempre hemos de establecer en la segunda tabla un índice acepta repetidas con el campo puntero a maestro, y así en la maestra podremos definir un histórico sobre la segunda por el índice mencionado.


Si no establecemos ese histórico podemos encontrarnos ciertos problemas posteriores si modificamos (cosa rara) el campo código de la maestra, ya que si no existe el histórico entre la maestra y la submaestra, la herencia de ese código por parte de la submaestra o tabla de segundo nivel puede verse afectada.


Bien, visto esto pasemos a los punteros singular de plural.

Un puntero singular de plural se establece entre una tabla maestra y una submaestra o maestra con puntero a la primera maestra, de forma que desde la primera podamos apuntar a un registro concreto de la segunda.

En el ejemplo sencillo que hemos comentado antes, estableceríamos un puntero desde un Cliente a una de sus muchas Facturas.

A cuál de sus facturas? Eso es lo que vamos a definir en el puntero singular de plural.

Si utilizamos un puntero singular de plural por posición podremos acceder de forma inmediata a la primera Factura de un Cliente, o a la última, símplemente indicando en la fórmula que resuelve el puntero "1" para localizar la primera Factura o la variable del sistema "n" para localizar la última Factura.


Con este tipo de puntero podremos acceder por posición a cualquier registro de la tabla submaestra o maestra con puntero a maestra; al primero, al último, al segundo, tercero, al penúltimo, al que se encuentre más cercano a la mitad de la lista, etc, símplemente indicando la fórmula para localizarlo en la resolución del puntero.


Ahora bien, en muchos casos la localización de ese registro concreto de la segunda tabla no será tan trivial como en este ejemplo. Puede que queramos localizar la última factura a una fecha concreta, o que supere un determinado importe, por ejemplo.

Para este tipo de localización deberemos usar el otro tipo de puntero singular de plural; por índice.

2 comentarios:

  1. ¿Singular de plural es algo así como decir:
    posición
    cargar lista:Tabla:codigo
    sel. por posicion

    ó por índice
    CargarLista:tabla:índice:resolución

    en los procesos?
    ¿En que parte se usan más esos tipos de índices?

    ResponderEliminar
  2. Hola heber,

    Los punteros singular de plural son tipos de campo, y hay de dos tipos; por posición y por índice.

    Como punteros que son, apuntan desde un registro de una tabla a un determinado registro de un histórico suyo.

    Por ejemplo, desde un cliente pueden apuntar a la primera factura de ese cliente.

    Su resolución en el caso de ser por posición se realiza utilizando un enlace a histórico y una fórmula que determina la posición del registro (1; el primero, n; el último, etc... )

    Por proceso se podría simular su funcionamiento con un cargar lista seleccionar por posición, o cargando una lista por índice resolviendo sus partes.

    Pero la verdadera utilidad de este tipo de campo es que es un puntero definido en la estructura de la base de datos y no hace falta ningún proceso adicional (parte derecha) para calcularlos. Si están definidos en la parte izquierda Velneo se encarga de todo y el programador sólo debe utilizarlos ya que su resolución es automática.

    Un saludo,

    ResponderEliminar