ORDA – Genealogie – první díl

Automaticky přeloženo z Deepl

Všichni se shodneme na tom, že ORDA je skvělou funkcí 4D V17. Jde o určitý druh revoluce ve způsobu myšlení a programování. Na 4D databáze už nikdy nebudeme pohlížet stejně jako dříve.

ORDA umožňuje koncipovat pokročilé aplikace v kratším čase, s čitelnějším a čistším kódem. Abychom vám ukázali sílu ORDA, připravili jsme pro vás sérii tipů rozdělenou do tří dílů. V první epizodě si ukážeme, jak by se nyní měly odkazy považovat spíše za entity a kolekce entit, a ukážeme si, jak mohou být nyní seznamy založeny na výběrech entit, nikoli na výběrech nebo polích.

Genealogie ke stažení – první díl

Použití rekurzivních vztahů

Abychom demonstrovali sílu 4D a ORDA, použijeme vysoce rekurzivní databázi pomocí jediné tabulky s názvem PEOPLE.

Tato tabulka obsahuje pět hlavních polí: Příjmení, Jméno, Datum narození, Pohlaví a ID (které je samozřejmě jedinečné).
Pak následují další tři pole: OtecID, MatkaID a PartnerID, která spojují každou osobu s dalšími třemi osobami, pokud existují (partner) nebo pokud jsou známé (matka a otec).

Definice vztahů

Nyní se zaměříme na definici vztahů. V obou směrech (1 k N i N k 1) lze vztahy pojmenovat. Při použití ORDA budou tato jména velmi významná a užitečná. Ve směru mnoho k jednomu je název nejen řetězcem, ale i entitou tabulky PEOPLE, stejně jako entita PEOPLE, kde vztah vzniká. Ve směru jedna ku mnoha je to ještě více, jméno představuje výběr entit.

Aniž bychom příliš předbíhali, můžeme si domyslet, že s objektovým zápisem budeme moci pomocí PEOPLE.Father, stejně jako PEOPLE.ChildrenAsFather, dosáhnout buď na jednu osobu (otec), nebo na skupinu osob (děti).

blank

Nový druh seznamboxu

blank

Dosud byly obsahem seznamboxů (zdrojem dat) buď pole, nebo výběry. Od nynějška může obsah pocházet také z kolekce nebo výběru entit. Podívejme se tedy, jak lze v rámci seznamboxu použít výběr entit.

Nejprve je třeba vytvořit výběr entit pomocí nové funkce ds. V tomto příkladu vytvoříme jednoduchý entitní výběr obsahující všechny LIDI seřazené podle data narození, příjmení a jména. To lze provést v jediném řádku, jak je znázorněno níže. To je prozatím vše, co musíte vědět o adrese ds!

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

Jakmile získáte výběr entity people, stačí ji nastavit jako vlastnost pole seznamu a máte – téměř – hotovo!

„TO“ je fantastické

Stejně jako u běžných seznamových boxů je třeba definovat obsah každého sloupce. V našem případě, pokud použijeme výběr entit, bude obsah každého sloupce definován jako výraz. K tomu použijeme nové klíčové slovo („This„), které bude odkazovat na aktuální položku výběru entit.

Pro zobrazení jmen a narozenin people může být výraz jednoduchý jako např:
Tento.Lastname
This: Tento.Firstname
Toto: Tento.Lastname + " " +This.Firstname
This.Birthday

Nyní přichází ta síla a zábava: pokud chcete zobrazit Příjmení Otce, Narozeniny Matky nebo Křestní jméno Partnera, stačí použít názvy entit, které jste uvedli v definicích vztahů (Otec, Matka, Partner atd.), a napsat:

Father.Lastname
This.Mother.Birthday
This.Parter.Firstname

Samozřejmě můžete jít ještě dál, pokud chcete znát jména čtyř prarodičů Partnera aktuálního people, a to tak, že napíšete:

Toto.Partner.Father.Father.Lastname
This.Partner.Father.Mother.Lastname
This.Partner.Mother.Father.Lastname
This.Partner.Mother.Mother.Lastname

Poslední krok (pro dnešek!): Chci také zobrazit počet dětí a sourozenců, které tato osoba má. Mohu to udělat ?
Jistě, to je docela snadné. Pro děti stačí použít výběr entity ChildrenAsFather definované v definici vztahu. Jako každý výběr entit má i tento výběr vlastnost length. Stačí definovat výraz takto:
This.ChildrenAsFather.length + This.ChildrenAsMother.length // jedna z nich se bude rovnat nule, ChildrenAsFather.length pro ženy a naopak.

U sourozenců budete muset „jít nahoru“ k matce (nebo otci) a „jít dolů“ k dětem. Výraz by tedy byl :
Toto. Mother.ChildrenAsMother.length - 1 // minus 1 to remove the current people from the number of his/her siblings :-)

blank

A zde je výsledek… bez jediného řádku kódu !

blank

Na pokračování, zůstaňte naladěni!

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.