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.