ORDA – Dite ciao agli alias

Tradotto automaticamente da Deepl

4D v19 R4 viene fornito con un nuovo concetto di ORDA: Alias. Sono la continuazione logica e complementare degli attributi calcolati.

Questo post del blog spiega cosa sono gli alias e ne evidenzia i vantaggi, in particolare quando utilizzare l’uno o l’altro… o entrambi.

HDI: ALIAS ORDA

Che cos’è un alias?

Come suggerisce il nome, un alias non è altro che un sinonimo o una scorciatoia per un oggetto del datastore esistente. Come gli attributi calcolati, sono definiti nella “classe di dati dell’entità”, come vedremo più avanti.

Può trattarsi, ad esempio, di un attributo esistente nella stessa classe di dati o, più spesso, di un altro attributo. Come un attributo calcolato, un alias viene utilizzato per fare riferimento a un valore scalare, a un’entità o a una selezione di entità.

Alias o attributi calcolati?

Ci si potrebbe chiedere perché usare gli alias quando sono già disponibili gli attributi calcolati.

La regola è semplice e si può applicare senza rischi:

Un alias dovrebbe essere usato se non è necessario un calcolo e il risultato (scalare, entità o selezione di entità) può essere espresso come un percorso.
Ad esempio, padrePadre = padre.padre

Se deve essere eseguito un calcolo (capitalizzazione, concatenazione, ricerca, formule, ecc.), deve essere un attributo calcolato.
Ad esempio: fullname = maiuscolo (cognome) + nome

Un esempio semplice e concreto

Prendiamo l’esempio classico delle Aziende e dei Dipendenti.

All’interno della classe di dati Employee, si vuole un attributo companyName.
Trattandosi di un semplice attributo accessibile tramite un percorso, è sufficiente un semplice alias. 4D ottimizzerà le ricerche, le query e gli ordinamenti come se il target fosse usato direttamente.

//Employees Class
Class extends Entity
Alias
companyName company.name

Allo stesso modo, nella classe di dati Aziende, si vuole accedere all’elenco di employees (questa volta, una selezione di entità); sarà sufficiente anche un alias.

//Companies Class
Class extends Entity
Alias
companyEmployees employees

D’altra parte, se nella classe di dati Employee si vuole un attributo coworkers (elenco di dipendenti con lo stesso manager), si dovrà creare un attributo calcolato che sarà una selezione di entità () calcolata in questo modo:

//Employees Class
Class extends Entity

Function get coworkers
()->$entitySelection : cs.Employees
$entitySelection := this.manager.directReports.minus(this)

Lo stesso vale per la tabella aziendale; un attributo calcolato sarà obbligatorio se si vuole visualizzare l’elenco dei capi reparto, ecc.

Esempi in cui si possono usare gli alias

I seguenti esempi si basano sulla struttura fisica descritta di seguito: Le persone possono essere studenti o professori (o entrambi) e insegnare e imparare le lingue. Le lezioni sono la classe di dati centrale che collega le persone (insegnanti e studenti) e le lingue.

“Appiattire una tabella

Si desidera nascondere le relazioni e rendere “come se” gli attributi appartenessero direttamente a una classe di dati piuttosto che a un’altra.

Ad esempio, piuttosto che utilizzare professor.name, student.name e Language.name in base alla relazione tra Lezioni, Persone e Lingua, si può preferire appiattire la classe di dati Lezioni utilizzando gli alias:

//LessonsEntity Class
Class extends Entity

Alias professorName professor.name
Alias studentName student.name
Alias languageName language.name

In questo modo sarà possibile visualizzare le Lezioni usando gli alias diretti!

blank

NASCONDERE LE RELAZIONI “N->P

Le classi di dati intermedie Lessons possono anche essere nascoste completamente, purché siano definite tutte le relazioni.
Nell’esempio precedente, è possibile definire per ogni persona:

    • le lezioni seguite
    • le lezioni impartite
    • gli studenti che hanno (se offrono lezioni)
    • i professori che hanno (se seguono le lezioni)

//PeopleEntity Class
Class extends Entity
// entity selection of followed lessons

Alias followedLessons learning.language
// entity selection of given lessons

Alias givenLessons teaching.language
// entity selection of professors
Alias professors learning.professor
// entity selection of students
Alias students teaching.student

Conclusione

Consultate l’HDI qui sopra e approfondite i casi d’uso degli alias. Inoltre, si possono trovare ulteriori dettagli nel doc center.

Per ulteriori dettagli, la documentazione è disponibile qui.

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.