Hello,
Je partirai sur 3 tables supplémentaires mais je suis loin d'être un expert en optimisation de BDD.
(Pour les noms de table, c'est comme tu le sens, je ne suis pas super inspiré ;) )
Une table "attributes" qui comprendrait les différents attributs de produit que tu veux mettre en place (tailles, pointure) -> ID, title et tout ce que tu veux
Une table "terms" qui comprendrait les différentes variantes des attributs (S, XS, L, 40, 42 etc...) -> ID, title, ID_attribute
Une table "products_terms" qui relie un produit à différent attribut (ex: tel t-shirt est disponible en L et XL, tel modèle de chaussure en 40 et 42 etc...) -> ID, id_terms et tout ce que tu veux en plus (ex: stock pour gérer le stock de tel chaussure, en 42)