[x] Contains appropriate constraints/details (primary and foreign keys, not null, indexed, unique)
[x] Contains bullet points after the table that state which foreign keys will reference to which table, or references to the associations which will be made
[ ] Correctly formatted
[ ] schema is written in a table format
[ ] table names, column names, and foreign keys are lowercased, snake_cased and back_ticked
I saw for price you have an integer datatype. That's totally ok, just a heads up, though, you would have to have all your items in whole numbers (can't have $11.99, $3.50, etc.). Again, it's up to you if you're ok with that, but you could change the data type to float if you want decimals.
As of now, seems like you're going to have an integer referring to an item & a user in your cart and your user & products have a cart_id. This would only allow you to have one item per user. It might be better to instead have an orders table that contains all the info of a product & references a user. That way, when a user adds to cart, they'll create a new instance of the order that save to the db & when they remove an item, it simply deletes it from the db. I think it would simplify your structure quite a bit overall, I'm planning on having one on ones throughout the week so we can talk about it then!
Think about if you want pictures for your products. If you do, you'll have to incorporate AWS into your db. Check out that link I sent you as a reference!
back_ticked