Normalmente, para um sistema de pedidos, eu esperaria algo como
Product -< OrderLine >- Order
No seu caso, você pode adicionar uma relação "orelha de coelho" em seu Produto para se referir a si mesmo. Portanto, seu
outbound_shipment_contents
perde name
, type
para o novo product
. Você pode então construir recursivamente a árvore de itens para escolher conforme necessário.