Parent-child assets: wanneer een docking station bij de laptop hoort
Het relatiemodel, de drie relatietypes en de cycle guard — voor de dag dat een docking station met de laptop meeging en je het spoor niet wil verliezen.
Een docking station werd met de laptop meegestuurd. Twee SFP-transceivers kwamen met de switch mee. Acht RAM-modules kwamen uit één server. Geen van die dingen zijn onafhankelijke assets — ze horen bij een parent, en ze als losstaande rows behandelen verliest de relatie zodra iemand de parent oppakt zonder aan de children te denken.
De relatie
Elke asset kan naar een parent asset wijzen. De relatie is asset-naar-asset (niet asset-naar-product of asset-naar-pallet) en ze draagt een type: geoogst uit voor een component die uit een toestel getrokken is, gemonteerd in voor een part dat erin zit, en gebundeld met voor een accessoire dat ernaast meereist. Een laptop met een dock heeft de laptop als parent en de dock als child, gebundeld met. Een switch met twee SFP's heeft de switch als parent en elke SFP als child, gemonteerd in. Parent en relatietype worden samen gezet of helemaal niet — de database weigert een parent zonder type en een type zonder parent.
De cycle guard
Het platform weigert een parent-child relatie aan te maken die een lus zou vormen. Wanneer je een parent kiest, laat de picker de asset zelf en alles eronder al weg; de server doet daarna de gezaghebbende controle door de keten van de voorgestelde parent naar boven te lopen en de keuze te weigeren als de child daar ergens in voorkomt (A→B, B→C, C→A wordt geweigerd). Is een bestaande keten al corrupt, dan weigert het platform erop verder te bouwen in plaats van te doen alsof er niets aan de hand is. Er is geen dieptelimiet — een keten is een boom of ze is het niet.
Wat de detailpagina toont
Vanaf een child zie je de asset tag van zijn parent en spring je ernaartoe. Vanaf een parent zie je zijn children en hun statussen. Elke wijziging aan een relatie schrijft een regel in de Activiteit met de vorige en de nieuwe parent, zodat "wanneer hoorde deze SSD niet langer bij die server" een antwoord met tijdstempel heeft.
Waarom dit expliciet modelleren
Omdat het alternatief is om de relatie in een notitieveld te coderen, en een notitieveld overleeft geen sortering, geen filter en geen export. De relatie expliciet modelleren betekent dat ze blijft bestaan — en de dock reist mee met de laptop als eigen gevolgde asset, in plaats van verstopt te zitten in een omschrijving. Een boom is een datastructuur. Een notitie is een hoop.