In my e-commence app (for café/restaurants) I currently have the following database structure.

The cart is the shopping cart, in which you can add products, a temporary place before the products/an order is sent to the server. The ProductCart is a line item, many products (could be the same) with the different quantities, sizes, frying levels etc. When a order is sent, the cart is cleared and the products in the cart is transfered to the ProductOrder entity (an Order).
I now want to extend this further, with the ability of the products having ingredients and this is where it gets tricky and too complex for my head and database skills :-). As well as the (same) products can have different sizes and frying levels (hence the line item) a product should have the ability to have many different ingredients (add ons) for example a pizza, where you could choose the topping. This is what I have tried so far:

But I am not sure if this is the right structure or way to do it?
This is my suggestion.
Remove
ProductOrderandOrderentities. They are the same asProductCartandCart.Now
ProductCartshould have an attribute likesynchronizedthat is1or0based if it has been sent to server or not.Through this you should simplify a lot your model. About
Ingredient…entities they seem ok to me.