4D v19 R4 wird mit einem neuen ORDA Konzept ausgeliefert: Aliasen. Sie sind die logische und komplementäre Fortführung von berechneten Attributen.
Dieser Blogpost erklärt, was Aliases sind und hebt ihre Vorteile hervor, insbesondere wann man das eine oder das andere… oder beides verwenden sollte.
Was ist ein Alias?
Wie der Name schon sagt, ist ein Alias nichts anderes als ein Synonym oder eine Abkürzung für ein bestehendes Datenspeicherobjekt. Wie berechnete Attribute werden sie in der „Entitätsdatenklasse“ definiert, wie wir später sehen werden.
Dabei kann es sich z. B. um ein bestehendes Attribut in der Datenklasse selbst oder häufiger in einer anderen Datenklasse handeln. Wie ein berechnetes Attribut wird auch ein Alias verwendet, um auf einen Einzelwert, eine Entität oder eine Entitätsauswahl zu verweisen.
Aliase oder COMPUTED-Attribute?
Sie fragen sich vielleicht, warum Sie Aliase verwenden sollten, wenn Sie bereits berechnete Attribute zur Verfügung haben.
Die Regel ist einfach, und Sie können sie ohne Risiko anwenden:
Ein Alias sollte verwendet werden, wenn keine Berechnung erforderlich ist und das Ergebnis (Skalar, Entität oder Entitätsauswahl) als Pfad ausgedrückt werden kann.
z.B. VäterVater = Vater.Vater
Wenn eine Berechnung durchgeführt werden muss (Großschreibung, Verkettung, Suche, Formeln usw.), muss es sich um ein berechnetes Attribut handeln.
z. B.: vollname = großschreibung (nachname) + vorname
Ein EINFACHES UND konkretes Beispiel
Nehmen wir das klassische Beispiel der Firmen und Mitarbeiter.
Innerhalb der Datenklasse “ Employee“ benötigen Sie ein Attribut companyName.
Da es sich um ein einfaches Attribut handelt, das über einen Pfad zugänglich ist, genügt ein einfacher Alias. 4D optimiert Suchen, Abfragen und Sortierungen, als ob das Ziel direkt verwendet würde.
//Employees Class
Class extends Entity
Alias companyName company.name
Wenn Sie in der Datenklasse Firmen auf die Liste employees zugreifen wollen (diesmal eine Entitätsauswahl), reicht auch hier ein Alias.
//Companies Class
Class extends Entity
Alias companyEmployees employees
Wenn Sie dagegen in der Datenklasse Employee ein Attribut coworkers (Liste der Mitarbeiter mit demselben Vorgesetzten) wünschen, müssen Sie ein berechnetes Attribut erstellen, das eine Entitätsauswahl () ist und wie folgt berechnet wird:
//Employees Class
Class extends Entity
Function get coworkers()->$entitySelection : cs.Employees
$entitySelection := this.manager.directReports.minus(this)
Dasselbe gilt für die Unternehmenstabelle; ein berechnetes Attribut ist obligatorisch, wenn Sie die Liste der Abteilungsleiter usw. anzeigen möchten.
Beispiele, wo Aliase verwendet werden können
Die folgenden Beispiele basieren auf der unten beschriebenen physischen Struktur: Personen können Studenten oder Professoren (oder beides) sein und Sprachen lehren und lernen. Der Unterricht ist die zentrale Datenklasse, die Personen (Lehrer und Studenten) und Sprache miteinander verbindet.
Eine Tabelle „verflachen“
Sie möchten Beziehungen ausblenden und so tun, als gehörten die Attribute direkt zu einer Datenklasse und nicht zu einer anderen.
Beispiel: Anstatt professor.name, student.name und Language.name auf der Grundlage der Beziehung zwischen Unterricht, Personen und Sprache zu verwenden, können Sie die Datenklasse „Unterricht“ mit Hilfe von Aliasen reduzieren:
//LessonsEntity Class
Class extends Entity
Alias professorName professor.name
Alias studentName student.name
Alias languageName language.name
Dies ermöglicht die Anzeige von Lektionen über direkte Aliase!
„N->P“-BEZIEHUNGEN AUSBLENDEN
Die weniger wichtigen Zwischendatensätze können sogar ganz ausgeblendet werden, solange alle Beziehungen definiert sind.
Im obigen Beispiel kann man für jede Person definieren:
-
- die Lektionen, denen sie folgen
- die Stunden, die sie geben
- die Studenten, die sie haben (wenn sie Unterricht anbieten)
- die Professoren, die sie haben (wenn sie Unterricht halten)
//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
Schlussfolgerung
Schauen Sie sich die obige HDI an und erfahren Sie mehr über die Anwendungsfälle von Aliasen. Weitere Details finden Sie auch im Doc Center.
Weitere Details finden Sie in der Dokumentation hier.