Parent-child assets: wanneer een docking station bij de laptop hoort
Het relatiemodel, de cycle guard en hoe verkoop van de parent de children oplost - voor de dag dat een docking station met de laptop meegaat.
Een docking station werd met de laptop shipped. Twee SFP transceivers kwamen met de switch mee. Acht RAM modules kwamen uit één server. Geen van die dingen zijn echt onafhankelijke assets — ze horen bij een parent, en ze als standalone rows behandelen verliest de relatie zodra iemand de parent verkoopt zonder aan de children te denken.
De relation
Elke asset kan een parent_asset_id hebben die naar een andere asset wijst. De relation is asset-to-asset (niet asset-to-product of asset-to-pallet). Een laptop met een dock heeft de laptop als parent en de dock als child. Een switch met twee SFPs heeft de switch als parent en elke SFP als child.
De cycle-guard
Het platform weigert een parent-child relation aan te maken die een cycle zou vormen. De picker loopt de bestaande relations af en weigert elke keuze die een loop sluit (A→B, B→C, C→A wordt geweigerd). De walk is bounded: een relation chain boven de configured depth wordt ook geweigerd, omdat de "relationship" voorbij een paar links geen betekenis meer draagt.
Wat gebeurt bij sale
Verkoop de parent en het platform vraagt: children meenemen of loskoppelen? Meenemen verplaatst de children naar de buyer op het sale event van de parent, met hun eigen line items in de settlement. Loskoppelen markeert de parent als sold en laat de children unattached — handig wanneer de dock wordt bijgehouden voor refurbishment en de laptop naar een buyer gaat.
History loopt beide kanten op
De asset detail page toont de family tree vanuit de asset die je bekijkt. Vanuit een child kun je naar de parent en siblings navigeren. Vanuit een parent kun je alle children en hun statuses zien. De history van grade changes, location moves en sale events toont de hele tree, niet alleen de row die je opende.
Waarom dit expliciet modeleren
Omdat het alternatief is om de relation in een notes field te coderen, en een notes field overleeft geen sort, filter of export. De relation expliciet modelleren betekent dat ze blijft bestaan — en de dock reist mee met de laptop als eigen tracked asset, in plaats van verborgen te zitten in een beschrijving.