ORDA – Sag Hallo zu den Aliasen

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.

HDI: ORDA ALIASES

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!

blank

„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.

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.