Вот диаграмма классов, которая может помочь вам понять, как вы должны строить отношения.

Размер и цвет будут option_types
, size1
, size2
, Black
, White
et c будет go в option_values
variants
с option_value_variants
будет содержать варианты, такие как Black Shirt of Size1