ORDA – Genealogía – Episodio uno

Traducido automáticamente de Deepl

Todos estamos de acuerdo en que ORDA es una gran característica de 4D V17. Una especie de revolución en la forma de pensar y programar. Las bases de datos 4D nunca serán vistas de la misma manera que antes.

ORDA permite concebir aplicaciones avanzadas en menos tiempo, con un código más legible y limpio. Para mostrarte el poder de ORDA hemos preparado una serie de consejos para ti, divididos en tres episodios. En este primer episodio, demostraremos cómo los enlaces deben considerarse ahora más como entidades y colecciones de entidades, y te mostraremos cómo los listboxes pueden basarse ahora en selecciones de entidades, en lugar de selecciones o arrays.

Descargar Genealogía – Episodio uno

Uso de relaciones recursivas

Para demostrar el poder de 4D y ORDA, usaremos una base de datos altamente recursiva usando una sola tabla llamada PEOPLE.

Esta tabla contiene cinco campos principales: Apellido, Nombre, Fecha de nacimiento, Sexo e ID (que obviamente es único).
Luego vienen tres campos más: ID del padre, ID de la madre e ID de la pareja, que conectan a cada persona con otras tres personas si existen (pareja) o si son conocidas (madre y padre).

definición de la relación

Ahora vamos a centrarnos en la definición de la relación. En ambas direcciones (1 a N y N a 1), las relaciones pueden ser nombradas. Utilizando ORDA, estos nombres van a ser muy significativos y útiles. En la dirección de muchos a uno, el nombre no es sólo una cadena, es una entidad de la tabla PEOPLE, de la misma manera que la entidad PEOPLE donde se origina la relación. En la dirección de uno a muchos es aún más, el nombre representa una selección de entidades.

Sin anticipar demasiado, se puede adivinar que con la notación de objeto, se podrá utilizar PEOPLE.Father, así como PEOPLE.ChildrenAsFather, para llegar a una sola persona (el padre) o a un grupo de personas (los hijos).

blank

Un nuevo tipo de listbox

blank

Hasta ahora, el contenido de los cuadros de lista (la fuente de datos) eran matrices o selecciones. A partir de ahora, el contenido también puede proceder de una colección o de una selección de entidades. Así que vamos a ver cómo se puede utilizar una selección de entidades dentro de un cuadro de lista.

En primer lugar, hay que crear la selección de entidades utilizando la nueva función ds. En este ejemplo, crearemos una simple selección de entidades que contenga todas las PERSONAS ordenadas por su cumpleaños, apellido y nombre. Esto se puede hacer en una sola línea, como se muestra a continuación. ¡Esto es todo lo que tiene que saber por ahora sobre ds!

people:= ds.PEOPLE.all().orderBy("Cumpleaños asc, Apellido asc, Nombre asc")

Una vez que obtengas la selección de la entidad people, sólo tienes que establecerla como una propiedad del cuadro de lista y ya estás -casi- listo.

«Esto» es fantástico

Como en los cuadros de lista normales, hay que definir el contenido de cada columna. En nuestro caso, siempre que utilicemos una selección de entidad, el contenido de cada columna se definirá como una expresión. Para ello, utilizaremos una nueva palabra clave («This«) que se referirá al elemento actual de la selección de entidades.

Para mostrar people nombres y cumpleaños, la expresión puede ser tan simple como:
Esto.Lastname
Esto.Firstname
Esto.Lastname + " " +Este.Firstname
Esto.Birthday

Ahora viene el poder y la diversión: si quieres mostrar el Apellido del Padre, el Cumpleaños de la Madre, o el Nombre del Socio, sólo tienes que usar los nombres de las entidades que diste en las definiciones de las relaciones (Padre, Madre, Socio, etc.) y escribir:

Esto.Father.Lastname
Este.Mother.Birthday
Esto.Parter.Firstname

Por supuesto, puedes ir más allá si quieres conocer los nombres de los cuatro abuelos del Socio de la actual people escribiendo:

Esto.Partner.Father.Father.Lastname
Esto.Partner.Father.Mother.Lastname
Este.Partner.Mother.Father.Lastname
Esto.Partner.Mother.Mother
.Lastname

Un último paso (¡por hoy!): También quiero mostrar el número de hijos y hermanos que tiene esta persona. ¿Puedo hacerlo?
Claro, es muy fácil. Para los hijos, basta con utilizar la selección de entidad HijosComoPadre definida en la definición de la relación. Como toda selección de entidad, tiene una propiedad de longitud. Simplemente defina la expresión así:
This.ChildrenAsFather.length + This.ChildrenAsMother.length // uno de ellos será igual a cero, ChildrenAsFather.length para las mujeres y viceversa.

Para los hermanos tendrás que «subir» a la madre (o al padre) y «bajar» a los hijos. Así que la expresión sería :
Esto. Mother.ChildrenAsMother.length - 1 // minus 1 to remove the current people from the number of his/her siblings :-)

blank

Y aquí está el resultado… ¡sin una sola línea de código!

blank

Continuará, ¡esté atento!

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.