In genere, per un sistema di ordinazione mi aspetto qualcosa del tipo
Product -< OrderLine >- Order
Nel tuo caso, potresti aggiungere una relazione "orecchio da coniglio" sul tuo Prodotto per fare riferimento a se stesso. Quindi il tuo outbound_shipment_contents perde name , type al nuovo product . È quindi possibile creare ricorsivamente l'albero degli elementi da prelevare come richiesto.