yo,
categories und states würde ich überdenken, ob es notwendig ist, für nur den namen jeweils eine tabelle zu benutzen.
options wird in dieser form probleme bereiten, weil in der entity mehrere beziehungen drinne stehen, die da meiner meinung nach nicht sein sollten. die muss man sauber auflösen und neue beziehungstabellen dafür anlegen.
die beziehungstabelle zwischen optionen und produkte braucht keine eigene id, sondern ein zusammengesetzter schlüssel reicht.
Ilja