Как в БД делают возможность разделять какой-то продукт по цветам и размерам в наличии?
EAV или поле типа jsonb под характеристики.
Проще всего - каждую разновидность продукта хранить как отдельный продукт, т.к. цены в зависимости от размеров могут ещё и различаться, да и наличие на складе тоже у каждой модификации своё. Просто при выводе ассортимента группировать вариации в один.