Parent-Child-Assets: wenn eine Dockingstation zum Laptop gehört
Das Beziehungsmodell, die drei Relationstypen und der Cycle Guard — für den Tag, an dem eine Dockingstation mit dem Laptop rausging und niemand den Faden verlieren will.
Eine Dockingstation ging mit dem Laptop raus. Zwei SFP-Transceiver kamen mit dem Switch. Acht RAM-Module kamen aus einem Server. Keines dieser Dinge ist ein unabhängiges Asset — sie gehören zu einem Parent, und sie als eigenständige Zeilen zu behandeln verliert die Beziehung in dem Moment, in dem jemand den Parent anfasst, ohne an die Children zu denken.
Die Relation
Jedes Asset kann auf ein Parent-Asset zeigen. Die Relation ist Asset-zu-Asset (nicht Asset-zu-Produkt oder Asset-zu-Palette) und trägt einen Typ: geerntet aus für eine Komponente, die aus einem Gerät kam, verbaut in für ein Teil, das darin sitzt, und gebündelt mit für ein Zubehör, das nebenher mitreist. Ein Laptop mit Dock hat den Laptop als Parent und das Dock als Child, gebündelt mit. Ein Switch mit zwei SFPs hat den Switch als Parent und jedes SFP als Child, verbaut in. Parent und Relationstyp werden gemeinsam gesetzt oder gar nicht — die Datenbank verweigert einen Parent ohne Typ und einen Typ ohne Parent.
Der Cycle Guard
Die Plattform verweigert eine Parent-Child-Relation, die eine Schleife bilden würde. Beim Wählen eines Parents lässt der Picker das Asset selbst und alles darunter schon weg; der Server macht dann die maßgebliche Prüfung, indem er die Kette des vorgeschlagenen Parents nach oben läuft und die Auswahl ablehnt, wenn das Child irgendwo darin auftaucht (A→B, B→C, C→A wird abgelehnt). Ist eine bestehende Kette bereits kaputt, weigert sich die Plattform, darauf weiterzubauen, statt so zu tun, als wäre alles in Ordnung. Eine Tiefenbegrenzung gibt es nicht — eine Kette ist entweder ein Baum oder eben keiner.
Was die Detailseite zeigt
Von einem Child sehen Sie das Asset-Tag seines Parents und springen dorthin. Von einem Parent sehen Sie seine Children und deren Status. Jede Änderung an einer Relation schreibt eine Activity-Zeile mit dem alten und dem neuen Parent, sodass „wann hat diese SSD aufgehört, zu diesem Server zu gehören“ eine Antwort mit Zeitstempel hat.
Warum explizit modellieren
Weil die Alternative ist, die Beziehung in ein Notizfeld zu schreiben, und ein Notizfeld überlebt weder eine Sortierung noch einen Filter noch einen Export. Die Relation explizit zu modellieren heißt, dass sie bleibt — und das Dock reist als eigenes verfolgtes Asset mit dem Laptop, statt sich in einer Beschreibung zu verstecken. Ein Baum ist eine Datenstruktur. Eine Notiz ist eine Hoffnung.