[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Товары и атрибуты
maximka787
Всем привет. Хочу посоветоваться с вами, тк сам немного запутался.

У меня есть 2 таблицы «товары» (id товара, артикул, описание) и «атрибуты» (id товара, цвет, цена)

Если бы цена на товар была одинакова в рамках одного артикула, вопросов вообще бы не было, но у каждого цвета разная цена, соответственно ячейку с ценой нужно добавить уже не в основную таблицу, а в таблицу с атрибутом. Вот это вено решение? Мне посоветовали делать цену в обеих таблицам, т.е. если есть атрибут то выводить цену из второй таблицы, если атрибутов у товара нет, то из первой. Но по–моему это не совсем верно. Я склоняюсь тогда уж к созданию обязательной записи во второй таблице о цене, даже если атрибут всего один.

_____________
..Работает - не трогай!
bestxp
Тогда тебе цену нужно вынести в отдельную таблицу, так будет удобнее,
а связью станет связь с id цвета, либо все цены лежат рядом с цветом

Тогда у тебя указание цвета станет обязательным.
Но дублирование свойства это не очень хорошо в этом случае, и даже на денормализацию не тянет
Michael
Это перед тобой так задачу поставили?

Определенный артикул - это же реальный товар со всеми своими характеристиками.

Т.е. по товару надо хранить набор атрибутов и соотвествующие им артикулы.
А по артикулу уже надо хранить цену и например кол-во на складе.

_____________
There never was a struggle in the soul of a good man that was not hard
mvg
Можно предположить что разный цвет - это разный артикул. И если мое предположение совпадает с вашим тогда можно подумать про такие таблицы:

«товары» (id товара (key), артикул (foreign key), цена) и «атрибуты» (артикул (id товара), цвет, вес, габариты, ...).
maximka787
Мужики, спасибо за ответы, начал думать по другому, но еще не до конца решил.

Сразу прошу прощения, ввел в заблуждение из-за артикулов и цен. Под артикулом я имею ввиду один вид товара. Лучше не брать вообще цвет, а например литраж, это более четко разъяснит ситуацию. Есть «бутылка Пепси» 1л, 0,5 литра. Задача вывести её как один товар (url), но с разным вариантом цен. И есть «Пирожок с малиной», у него вообще нет параметров и одна цена.
Какую лучше схему БД сделать? Как я понял:

products (productID, name, description)

attribute (attributeID, productID, price, count)

params (paramsID, value)

attribute2params (id, attributeID, paramsID, value)

Примерно так? Кстати в этом случае мне обязательно нужно будет выбрать хотя бы один параметр даже для пирожка. Или можно добавить цену еще и в первую таблицу и проверять потом есть ли модицикафии

_____________
..Работает - не трогай!
Michael
Вопрос непростой на самом деле.
Тот друпал магазин - ubercart - с которым я работаю, как раз с этими атрибутами и привел нас в кроличью нору.
Там для товара (id) хранится базовая цена, а каждый атрибут, навешанный на этот товар, может какую то сумму отнять или прибавить.
Соотв. работает и когда атрибутов нет, тогда базовая цена и есть цена.
А если есть атрибут, то можно базовую в ноль поставить, а атрибутом уже цену.

Но поищи, может лучше есть решения, у самого в планах такое.


_____________
There never was a struggle in the soul of a good man that was not hard
mvg
Если есть время то можно почитать про UML и потом проектировать БД дальше.

Еще перед проектированием можно какое-то средство автоматизации проектирования БД с использованием UML установить на свою рабочую станцию и в этой среде продолжить проектирование дальше...


Проектируя с использованием UML таблицы и вся БД красивее будет.
kaww
По-моему в вашем случае оптимален вариант, который предложил Michael (если я его верно понял), т.е. значения атрибута добавляет/отнимает от стоимости товара:
Цитата
product
id|name
1 |бутылка Пепси
attributes
id|name
1  |Oбъем

attribute_values
id|value|price_increment
1 |0.5  |25
2 |1    |48

product_attribute_values
product_id|attribute_id|value_id
1        |1          |2
maximka787
Всем спасибо за советы, буду реализовывать!

_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.