Как спроектировать товары с вариативными ценами?

Есть товары и есть атрибуты, некоторые атрибуты меняют стоимость товара, некоторые - нет.
Пример:
телевизор - товар, диагональ - атрибут. 40 дюймов(значение атрибута) - 1000р, 50 дюймов - 2000р.
hdmi кабель - товар, атрибутов нет, цена - 100р.
Получается, должна быть какая-то дефолтная цена, и в случае наличия атрибута, который влияет на цену, он ее будет перекрывать.
То, что вышло у меня:
Таблица products - id, price
Таблица attributes - id, name
Таблица products_attributes - id, product_id, attribute_id, attribute_value, price
В products_attributes поле price является необязательным, если оно заполнено - цена берется из него, если нет - из таблицы products.
1 вопрос - является ли такая модель правильной?
2 - являются ли эти таблицы примером нормальных форм или надо что-то изменить, к примеру вынести цены товаров в отдельную таблицу?
Спасибо.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
Нормально, у меня точно так же)))
Только я еще вместе с ценами храню и кол-во там же. Так как приходит товар именно так - разбивка по опциям (в моем случае это РАЗМЕР одежды).
По поводу названия - есть некий устаканившийся стандарт, вот как это обзывается в десятке магазинных движков:
  • то, что не меняет цену - аттрибут,
  • что меняет цену - опция
5bcb33690d45c403058537.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы