ORDA – Genealogia – Episodio 1

Tradotto automaticamente da Deepl

Siamo tutti d’accordo che ORDA è una grande funzionalità di 4D V17. Una sorta di rivoluzione nel modo di pensare e di programmare. I database 4D non saranno più visti nello stesso modo di prima.

ORDA permette di concepire applicazioni avanzate in minor tempo, con un codice più leggibile e pulito. Per mostrarvi la potenza di ORDA abbiamo preparato per voi una serie di consigli, suddivisi in tre episodi. In questo primo episodio vi mostreremo come i collegamenti debbano essere considerati più come entità e collezioni di entità e come le listbox possano essere basate su selezioni di entità, piuttosto che su selezioni o array.

Scarica Genealogia – Episodio uno

Usare le relazioni ricorsive

Per dimostrare la potenza di 4D e ORDA, useremo un database altamente ricorsivo, utilizzando una singola tabella chiamata PEOPLE.

Questa tabella contiene cinque campi principali: Cognome, Nome, Data di nascita, Sesso e ID (che ovviamente è unico).
Poi ci sono altri tre campi: FatherID, MotherID e PartnerID che collegano ogni persona ad altre tre se esistono (Partner) o se sono conosciute (Mother e Father).

definizione delle relazioni

Concentriamoci ora sulla definizione delle relazioni. In entrambe le direzioni (da 1 a N e da N a 1), le relazioni possono essere denominate. Utilizzando ORDA, questi nomi diventeranno molto significativi e utili. Nella direzione molti a uno , il nome non è solo una stringa, ma è un’entità della tabella PEOPLE, allo stesso modo dell’entità PEOPLE da cui ha origine la relazione. Nella direzione uno a molti è ancora di più, il nome rappresenta una selezione di entità.

Senza anticipare troppo, si può intuire che con la notazione a oggetti, si potrà usare PEOPLE.Father, così come PEOPLE.ChildrenAsFather, per raggiungere una singola persona (il padre) o un gruppo di persone (i figli).

blank

Un nuovo tipo di casella di riepilogo

blank

Finora il contenuto delle caselle di riepilogo (l’origine dei dati) era costituito da array o selezioni. D’ora in poi, il contenuto può provenire anche da un insieme o da una selezione di entità. Vediamo quindi come si può utilizzare una selezione di entità all’interno di una casella di riepilogo.

Prima di tutto, è necessario creare la selezione di entità utilizzando la nuova funzione ds. In questo esempio, creeremo una semplice selezione di entità contenente tutte le PERSONE ordinate per compleanno, cognome e nome. Questo può essere fatto in una sola riga, come mostrato di seguito. Questo è tutto ciò che si deve sapere per ora su ds!

people:= ds.PEOPLE.all().orderBy("Birthday asc, Lastname asc, Firstname asc")

Una volta ottenuta la selezione dell’entità people, basta impostarla come proprietà della casella di riepilogo e il gioco è fatto!

“QUESTO” è fantastico

Come nelle normali caselle di riepilogo, il contenuto di ogni colonna deve essere definito. Nel nostro caso, finché usiamo una selezione di entità, il contenuto di ogni colonna sarà definito come un’espressione. Per farlo, utilizzeremo una nuova parola chiave (“This“) che si riferirà all’elemento corrente della selezione di entità.

Per visualizzare i nomi e le date di nascita di people, l’espressione può essere semplice come:
Questo.Lastname
Questo.Firstname
Questo.Lastname + " " +Questo.Firstname
Questo.Birthday

Ora arriva il potere e il divertimento: se si vuole visualizzare il cognome del padre, la data di nascita della madre o il nome del partner, basta usare i nomi delle entità che sono stati dati nelle definizioni delle relazioni (padre, madre, partner, ecc.) e scrivere:

Questo.Father.Lastname
Questo.Mother.Birthday
Questo.Parter.Firstname

Naturalmente, si può andare oltre se si vogliono conoscere i nomi dei quattro nonni del partner dell’attuale people scrivendo:

Questo.Partner.Father.Father.Lastname
Questo.Partner.Father.Mother.Lastname
Questo.Partner.Mother.Father.Lastname
Questo.Partner.Mother.Mother.Lastname

Un ultimo passo (per oggi!): Voglio anche visualizzare il numero di figli e fratelli che questa persona ha. Posso farlo?
Certo, è abbastanza facile. Per i figli, basta utilizzare la selezione dell’entità ChildrenAsFather definita nella definizione della relazione. Come ogni selezione di entità, ha una proprietà length. È sufficiente definire l’espressione in questo modo:
This.ChildrenAsFather.length + This.ChildrenAsMother.length // uno di essi sarà uguale a zero, ChildrenAsFather.length per le donne e viceversa.

Per i fratelli è necessario “salire” fino alla madre (o al padre) e “scendere” fino ai figli. Quindi l’espressione sarebbe :
Questo. Mother.ChildrenAsMother.length - 1 // minus 1 to remove the current people from the number of his/her siblings :-)

blank

Ed ecco il risultato… senza una sola riga di codice!

blank

Per continuare, rimanete sintonizzati!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.