4D v19 R4 je dodáván s novým konceptem ORDA: Aliasy. Jsou logickým a doplňujícím pokračováním vypočtených atributů.
Tento příspěvek na blogu vysvětluje, co jsou aliasy, a zdůrazňuje jejich výhody, zejména kdy použít jeden nebo druhý… nebo oba.
Co je to alias?
Jak název napovídá, alias není nic jiného než synonymum nebo zkratka existujícího objektu datového skladu. Stejně jako vypočtené atributy jsou definovány v „datové třídě entity“, jak uvidíme později.
Může to být například existující atribut v samotné datové třídě nebo častěji uvnitř jiné třídy. Stejně jako vypočtený atribut se alias používá k odkazu na skalární hodnotu, entitu nebo výběr entity.
Aliasy nebo VÝPOČTOVÉ atributy?
Možná si říkáte, proč byste měli používat aliasy, když už máte k dispozici vypočtené atributy.
Pravidlo je jednoduché a můžete ho použít bez rizika:
Alias by měl být použit, pokud není potřeba žádný výpočet a výsledek (skalár, entita nebo výběr entity) lze vyjádřit jako cestu.
Např. fathersDad = father.father
Pokud je třeba provést nějaký výpočet (velká písmena, spojování, vyhledávání, vzorce atd.), musí se jednat o vypočtený atribut.
Např.: plné jméno = velké písmeno (příjmení) + křestní jméno
Jednoduchý a konkrétní příklad
Vezměme si klasický příklad Společnosti a Zaměstnanci.
Uvnitř datové třídy Employee chcete mít atribut companyName.
Protože se jedná o jednoduchý atribut přístupný přes cestu, stačí jednoduchý alias. 4D bude optimalizovat vyhledávání, dotazy a třídění, jako by byl cíl použit přímo.
//Employees Class
Class extends Entity
Alias companyName company.name
Stejným způsobem chcete v datové třídě Firmy přistupovat k seznamu employees (tentokrát se jedná o výběr entit); postačí i alias.
//Companies Class
Class extends Entity
Alias companyEmployees employees
Naproti tomu, pokud v datové třídě Zaměstnanci chcete atribut coworkers (seznam zaměstnanců se stejným manažerem), budete muset vytvořit vypočtený atribut, který bude výběrem entit () vypočteným takto:
//Employees Class
Class extends Entity
Funkce get coworkers()->$entitySelection : cs.Employees
$entitySelection := this.manager.directReports.minus(this)
Totéž platí pro tabulku firmy; vypočtený atribut bude povinný, pokud chcete zobrazit seznam vedoucích oddělení atd.
Příklady: KDE lze použít aliasy
Následující příklady budou vycházet z níže popsané fyzické struktury: Lidé mohou být studenty nebo profesory (nebo obojí) a vyučovat a učit se jazyky. Výuka je centrální datová třída, která spojuje Lidé (učitelé a studenti) a Jazyk.
„Zploštění“ tabulky
Chcete skrýt vztahy a vytvořit „jakoby“ atributy patřily přímo k datové třídě, a ne k jiné.
Například: Místo použití professor.name, student.name a Language.name na základě vztahu mezi třídami Lekce, Lidé a Jazyk můžete datovou třídu Lekce raději zploštit pomocí aliasů:
//LessonsEntity Class
Class extends Entity
Alias professorName professor.name
Alias studentName student.name
Alias languageName language.name
To umožní zobrazit Lekce pomocí přímých aliasů!
SKRÝT VZTAHY „N->P“
Zprostředkující datové třídy Lessons mohou být dokonce zcela skryty, pokud jsou definovány všechny vztahy.
Ve výše uvedeném příkladu lze definovat pro každou osobu:
-
- lekce, které následují
- lekce, které dávají
- studenti, které mají (pokud nabízejí lekce)
- profesoři, které mají (pokud sledují výuku)
//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
Závěr
Podívejte se na výše uvedené HDI a zjistěte více o případech použití aliasů. Další podrobnosti najdete také v centru dokumentů.
Další podrobnosti najdete v dokumentaci zde.