Por lo general, para un sistema de pedidos esperaría algo como
Product -< OrderLine >- Order
En su caso, podría agregar una relación de "oreja de conejo" en su Producto para referirse a sí mismo. Así que su outbound_shipment_contents
pierde name
, type
al nuevo product
. A continuación, puede construir recursivamente el árbol de elementos para elegir según sea necesario.