Si cada producto (hamburguesa) lleva N items de receta, y cada item puede aparecer en N productos... eso implica una relación N:N entre productos e items, una relación que denominaríamos "receta".
Y eso son tres tablas:
Cita: Producto -> Receta <- MateriaPrima
Además, es totalmente innecesario crear dos tablas, una para vegetales y otra para carnes, cuando lo único que cambia entre ambas tablas es qué son los elementos. En ese caso bien puede ser un atributo adicional que determine su clase, o bien se trata de una relación con una entidad jerárquica (padre/hijo). Este ultimo modelo implicaría cinco tablas, pero de otra forma.
Cita: Producto -> Receta <- MateriaPrima
MateriaPrima <- materiaVegetales
MateriaPrima <- materiaCarnes
¿Se va entendiendo?
Sólo se justificaría separar vegetales y carnes si y sólo si ambas entidades tienen atributos distintos, cosa que no se da en tu modelado.