Есть таблица товаров, есть корзина а есть заказы. Вот в таблице заказов сохраняется списока товаров, кторые человек начал оформлять из корзины. Вот в ней можно и сохранить атрибуты товаров. Так как подобные атрибуты привязываются непосредственно к каждому заказу отдельно.
Если вы их туда привяжете, после оплаты только статус заказа изменится, а все атрибуты будут сохранены.
Часто бывает так что атрибуты так же влияют на конечную цену. Например, белый цвет может стоить на $5 дороже. Так что хранить атрибуты надо соответственно. Хотя с тем стилем что я сейчас делаю, я бы их просто сохранил как упакованый json в отдельном поле attributes.
Но это не всегда правильно. Нрпример вы продаете жилье в аренду. И атрибут такого товара будет дни в которые это жилье уже зарезервировано. Эту информацию надо использовать что бы показать покупателю свободные дни. С такими атрибутами, их лучше хранить в отдельных таблицах но все равно привязаных к заказам по айди заказа.