I’m trying to build a strong database that’s normalized and has room to expand if needed. Does this look like I might have problems? Could this be more efficient? Most importantly, is this database normalized the best it could be? Thanks for having a look!

EDIT I
I’ll try and explain my many to many relationships.
Attributes: This site plans of carrying guns, ammunition, accessories, and etc … each product can have many attributes and some could have one. For example, ammunition for a rimfire, handgun, and centerfire will have the same attributes while shotguns will have different attributres. So my thought is that in order to make attributes flexible I needed to have the tables set-up like I have in my example. Hopefully that makes sense – I did struggle with this.
Supplier: There can be multiple suppliers for a product.
Images – Products will have a main picture and an unknown amount of additional images.
Categories: A product could appear in multiple categories. Example, a firearm could appear in semiautomatic rifles as well as tactical firearms.
Reviews: A single product will have multiple reviews.
PLEASE DISREGARD the “new field” fields in the product table. That is unattended, I forgot to remove those before the screenshot.
EDIT II
I redesigned the schema using everyone’s suggestions. Please take a look and see if I’m getting closer. I really appreciate everyone’s time on this 😉

Why do you need to have many-to-many relationship between
productandattributes? Can an attribute belongs to multiple product as well? If not, remove theproduct_attributestable. Create a column calledattribute_idon the tableproducta reference it to tableattributeson columnattribute_id.I also think that the relationship between
productandimagestable is only one-to-many. Delete the tableimagesand create a new column in tableproduct_imagescalledimage_path. Do this also withproductandreviews.I found many many-to-many relationship in your schema.
Always remember that joining a table is very expensive for the application level.