Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация атрибутов для товара / 12 сообщений из 12, страница 1 из 1
07.10.2009, 14:30
    #36237518
INOKENTiY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
Здравствуйте
Есть задача сделать для товаров интернет-магазина систему атрибутов. Цели две сделать простые обособленные атрибуты и сделать группы атрибутов, то есть в группу может входить несколько атрибутов например цвет красный, ширина 100мм, высота 100мм и этой группе назначается количество, цена. В oscommerce очень не удобно сделано, но идею табличек можно позаимствовать, возможно есть какие-то другие движки с хорошей реализацией данной проблемы.
Помогите пожалуйста спроектировать таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
-- Таблица для сохранения названия атрибута
CREATE TABLE `products_options` (
  `products_options_id` int( 11 ) NOT NULL default '0',
  `language_id` int( 11 ) NOT NULL default '1',
  `products_options_name` varchar( 255 ) NOT NULL default '',
  `products_options_length` int( 11 ) NOT NULL default '32',
  `products_options_size` int( 11 ) NOT NULL default '32',
  `products_options_rows` int( 11 ) NOT NULL default '4',
  `products_options_type` int( 11 ) NOT NULL,
  PRIMARY KEY  (`products_options_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- Таблица для сохранения значений атрибутов
CREATE TABLE `products_options_values` (
  `products_options_values_id` int( 11 ) NOT NULL default '0',
  `language_id` int( 11 ) NOT NULL default '1',
  `products_options_values_name` varchar( 255 ) NOT NULL default '',
  `products_options_values_description` text,
  `products_options_values_text` varchar( 255 ) NOT NULL default '',
  `products_options_values_image` varchar( 255 ) NOT NULL default '',
  `products_options_values_link` varchar( 255 ) NOT NULL default '',
  PRIMARY KEY  (`products_options_values_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- Таблица для связи атрибутов и их значений, много-ко-многим
CREATE TABLE `products_options_values_to_products_options` (
  `products_options_values_to_products_options_id` int( 11 ) NOT NULL auto_increment,
  `products_options_id` int( 11 ) NOT NULL,
  `products_options_values_id` int( 11 ) NOT NULL,
  PRIMARY KEY  (`products_options_values_to_products_options_id`)
) ENGINE=MyISAM AUTO_INCREMENT= 6  DEFAULT CHARSET=utf8 AUTO_INCREMENT= 6  ;

-- Таблица для привязки атрибутов и их значений к товару и установка цены, тут цена ставится в зависимости от каждого значения атрибута, добавил поле group_id если там не нуль тогда это группа и будут брать данные про цену и количество из таблицы products_group_attributes нижу
CREATE TABLE `products_attributes` (
  `products_attributes_id` int( 11 ) NOT NULL auto_increment,
  `products_id` int( 11 ) NOT NULL,
  `options_id` int( 11 ) NOT NULL,
  `options_values_id` int( 11 ) NOT NULL,
  `options_values_price` decimal( 15 , 4 ) NOT NULL,
  `price_prefix` char( 1 ) NOT NULL,
  `attributes_model` varchar( 255 ) default NULL,
  `attributes_stock` int( 4 ) default NULL,
  `options_values_weight` decimal( 15 , 4 ) NOT NULL,
  `weight_prefix` char( 1 ) NOT NULL,
  `sortorder` int( 11 ) default NULL,
  `group_id` int( 11 ) default NULL,
  PRIMARY KEY  (`products_attributes_id`),
  KEY `PRODUCTS_ID_INDEX` (`products_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

-- я решил сделать еще одну табл
CREATE TABLE `products_group_attributes` (
  `group_attributes_id` int( 11 ) NOT NULL auto_increment,
  `group_attributes_name` varchar( 100 ) default NULL,
  `options_values_price` decimal( 15 , 4 ) NOT NULL,
  `price_prefix` char( 1 ) NOT NULL,
  `attributes_model` varchar( 255 ) default NULL,
  `attributes_stock` int( 4 ) default NULL,
  `sortorder` int( 11 ) default NULL, 
   PRIMARY KEY  (`group_attributes_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
Мне этот вариант не очень нравится...
...
Рейтинг: 0 / 0
07.10.2009, 16:01
    #36237838
Simpliest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
INOKENTiY в группу может входить несколько атрибутов например цвет красный, ширина 100мм, высота 100мм и этой группе назначается количество, цена.
Эм? Какие еще группы атрибутов?

И кому назначается количество и цена? :)

Т.е. все что имеет габариты 100х100 и красный цвет будет стоить одинаково? :)
И пофиг кусок шелка это, картина, или напольная плитка :)
...
Рейтинг: 0 / 0
07.10.2009, 16:09
    #36237876
INOKENTiY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
нет чуточку не так вот смотрите http://www.nokianclub.com.ua/product_info.php?products_id=4
вот шина Nokian Hakkapeliitta 4 но у нее есть куча моделей, вот и есть группы атрибутов из Размера, Типа, Сезонности и тд.
...
Рейтинг: 0 / 0
07.10.2009, 17:39
    #36238145
Simpliest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
INOKENTiY
вот шина Nokian Hakkapeliitta 4 но у нее есть куча моделей, вот и есть группы атрибутов из Размера, Типа, Сезонности и тд.
Так просто не получится.
Это у вас получаются произвольное число ключевых полей в случае выборки по полю цена.

Как вариант -
Рекомендую сам товар представить как группу товаров. А дальше с каждой моделью работать как с обычным товаром.

Т.е.
категория "шины"
---подкатегория "Nokian"
------подкатегория "Hakkapeliitta 4"
---------ИД1 зимняя красная размер цена
---------ИД2 летняя красная размер цена
---------ИД3 зимняя розовая размер цена
...
Рейтинг: 0 / 0
07.10.2009, 18:02
    #36238215
INOKENTiY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
во многих движках магазинов разделяют
# Характеристики товаров
# Параметры товаров
не могу понять зачем
и каким путем мне лучше реализовать для товара Радиус,Ширина, Высота, Типа, Сезонности и тд.
с учетом того что должна получится форма поиска, такая как тут http://2motor.ru/
чего-то совсем запутался? не хочется лепить просто первое, что на ум пришло
...
Рейтинг: 0 / 0
07.10.2009, 18:04
    #36238223
INOKENTiY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
то есть каждый параметр должен быть подчиненным выходит, тогда такая форма поиска никогда не приведет к пустому результату
...
Рейтинг: 0 / 0
07.10.2009, 18:23
    #36238263
Simpliest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
INOKENTiYво многих движках магазинов разделяют
# Характеристики товаров
# Параметры товаров
не могу понять зачем


Понятия не имею, магазины не писал.

Единственный смысл, например, в том, что

характристики товаров являются обязательными и влияют на цену.

параметры - это нечто описательное, т.е. могут использоваться для облегчения поиска, а могут и вообще отсутствовать.
...
Рейтинг: 0 / 0
07.10.2009, 18:23
    #36238264
INOKENTiY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
просто применять для параметров Adjacency List или Nested Set мне кажется диким, и с другой стороны не вижу другого пути, что бы сделать такую форму поиска
...
Рейтинг: 0 / 0
07.10.2009, 18:28
    #36238272
Simpliest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
INOKENTiYто есть каждый параметр должен быть подчиненным выходит, тогда такая форма поиска никогда не приведет к пустому результату
Одно с другим не связано.

Можно доступные для выбора (в форме поиска) параметры фильтровать на основании уже выбранных.

Т.е. пользователь заведомо не сможет выбрать прочие параметры, которые не попали под 1й примененный фильтр.

Например

Цвет волос

Пол

Если мы выбрали "фиолетовые" волосы и среди найденных записей нет "мужчин", то в поиске в поле Пол у нас будет только 1 ваиант "Женщина" и выбрать "мужчина" мы не сможем.
...
Рейтинг: 0 / 0
08.10.2009, 00:35
    #36238665
INOKENTiY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
Simpliest
Одно с другим не связано.

Можно доступные для выбора (в форме поиска) параметры фильтровать на основании уже выбранных.

Т.е. пользователь заведомо не сможет выбрать прочие параметры, которые не попали под 1й примененный фильтр.

Например

Цвет волос

Пол

Если мы выбрали "фиолетовые" волосы и среди найденных записей нет "мужчин", то в поиске в поле Пол у нас будет только 1 ваиант "Женщина" и выбрать "мужчина" мы не сможем.

да это понял, чего то не подумал, аяксом потом подтягивать можно.

хотел бы услышать еще мнение по поводу групп атрибутов, делать так как посоветовал Simpliest, так в принципе проще
...
Рейтинг: 0 / 0
08.10.2009, 16:08
    #36240155
INOKENTiY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
Simpliest
Одно с другим не связано.

Можно доступные для выбора (в форме поиска) параметры фильтровать на основании уже выбранных.

Т.е. пользователь заведомо не сможет выбрать прочие параметры, которые не попали под 1й примененный фильтр.

Например

Цвет волос

Пол

Если мы выбрали "фиолетовые" волосы и среди найденных записей нет "мужчин", то в поиске в поле Пол у нас будет только 1 ваиант "Женщина" и выбрать "мужчина" мы не сможем.

подумал еще раз, это прийдется сделать лишние запросы на каждый вариант, выбрали фиолетовые, что бы сформировать следующий список нужно проверить для каждого товара с цветом "фиолетовый" или исполняется условие пол "мужчина" и условие пол "женщина" если не выполняется не добавлять в список для выбора. Это нормально?
...
Рейтинг: 0 / 0
08.10.2009, 16:19
    #36240203
Simpliest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация атрибутов для товара
INOKENTiY,

Зависит от посещаемости и насколько удобным ты хочешь это сделать для пользователя.

Вариантов несколько

1. не делать много запросов, но выводить пользователю сообщение "под ваши условия поиска нет товаров" .
2. делать много запросов. При маленькой нагрузке/посещаемости это не критично (впрочем если криво напишешь запросы то можешь положить и при маленькой :) ).
3. делать много запросов и кешировать их результаты в memcache, файлах или еще где-то (при большой нагрузке кешировать все равно придется.)

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация атрибутов для товара / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]