Beziehungen und korrelierte Daten modellieren¶
Eine Beziehung legt fest, wo ein zugehöriger Datensatz verankert ist und wie lange er verfügbar bleibt. Wähle das Konstrukt nach Ausgabeform und Lebensdauer, nicht nach ähnlich aussehender Syntax.
| Intent | Verwenden | Ergebnis |
|---|---|---|
| Separate Kindzeilen je Parent | verschachteltes <generate> |
Ein Kindprodukt mit expliziter Kardinalität je Parent |
| Eingebettete Objekte oder Listen in einer Zeile | <nestedKey> |
Strukturierte Daten im aktuellen Produkt; kein separates Kindprodukt |
| Einen oder mehrere Werte aus einer vorhandenen Quellzeile kopieren | <reference> |
Ein Auswahlereignis, dessen gemappte Felder korreliert bleiben |
| Ein früheres Produkt in einer späteren Top-Level-Stufe wiederverwenden | Memstore-Target und -Source | Laufinterne Produkt-Lineage über getrennte Erzeugungsstufen |
Parent- und Child-Produkte¶
Verschachtele <generate>, wenn jede Parent-Zeile eine begrenzte Anzahl separater Kindzeilen besitzt. Der Child-Count wird je unmittelbarem Parent ausgewertet; parent.<field> kopiert einen Wert aus diesem Parent in die Kindzeile.
1 2 3 4 5 6 7 8 9 10 | |
Damit entstehen zwei orders-Zeilen je customers-Zeile. Verwende this.parent.<field>, wenn der explizite Scope die Lesbarkeit verbessert. Bei tieferer Verschachtelung bezeichnet parent weiterhin nur den unmittelbaren Parent; kopiere jeden benötigten Schlüssel bewusst.
Verwende stattdessen <nestedKey>, wenn die wiederholten Objekte in derselben Ausgabezeile eingebettet bleiben und kein separat adressierbares Produkt werden sollen.
Korrelierte Referenzwerte¶
Verwende eine gemeinsame <reference> mit <field>-Kindern, wenn mehrere Ausgabewerte aus derselben ausgewählten Quellzeile stammen müssen. Unabhängige Referenzen oder Generatoren können unterschiedliche Zeilen wählen und die Korrelation zerstören.
1 2 3 4 5 6 7 8 9 10 11 | |
Die beiden gemappten Felder werden gemeinsam ausgewählt; das Paar aus Kunden-ID und Land bleibt erhalten. Eine Reference reichert die aktuelle Zeile aus einer bestehenden relationalen, MongoDB- oder gewichteten Projektdatei-Quelle an; sie erzeugt selbst kein Kindprodukt. Die vollständige <reference>-Spezifikation beschreibt Einzelwert-Mapping, geordnete und zyklische Auswahl, Eindeutigkeit, Gewichtung und unterstützte Kombinationen.
Mehrstufige Produkt-Lineage¶
Verwende Memstore-Target und -Source, wenn ein späteres Top-Level-Produkt ein früheres Produkt desselben Laufs konsumiert. targetEntity des Producers und die memstore://-Source-ID des Consumers müssen übereinstimmen. Das ist eine Stufengrenze und kein Parent-Scope: spätere Ausdrücke lesen die aktuelle Quellzeile über this.<field>. Siehe das validierte Memstore-Modell.
Review-Checkliste¶
- Das benötigte Ergebnis ist bewusst ein Kindprodukt, ein eingebetteter Wert, ein Lookup oder eine spätere Stufe.
- Parent-Schlüssel werden explizit kopiert, und die Kardinalität je Parent ist begrenzt.
- Korrelierte Reference-Felder teilen sich genau eine
<reference>-Auswahl. - Quellfamilie und Auswahlmodus werden von der referenzierten Elementspezifikation unterstützt.
- Referenzielle Integrität und Kardinalität werden in den Acceptance-Checks des Modells geprüft.
Für agentengenerierte Modelle enthält die Authoring-Referenz validierte Intent-Beispiele und Acceptance-Verträge; das XML oben bleibt das benutzerseitige Ausführungsmodell.