Характеристики товаров в инет-магазине.

Don Arana

Новичок
Характеристики товаров в инет-магазине.

Привет всем!
Раздумываю над тем, как бы сделать систему, при которой добавление и вывод характеристик товара удобно и логично.

Идея:

У товара есть характеристики.
Нужна возможность добавления новой характеристики+её значения, а также выбор из уже имеющихся характеристик.

Т.е.

1. Нужна общая таблица со списком характеристик.
table_descriptions
PHP:
+----------------------------+-------------------+
|    id INT [PRIMARY KEY]    | name VARCHAR(255) |
+----------------------------+-------------------+
|               1            |         Вес       |
+----------------------------+-------------------+
|               2            |       Размер      |
+----------------------------+-------------------+
|               3            |       Объем       |
+----------------------------+-------------------+
2. Нужна таблица для значений характеристик товаров.
table_values
PHP:
+------------------+---------------+---------------+
|    descr_id      |  product_id   |      value    |
+------------------+---------------+---------------+
|         1        |       23      |      55 г.    |
+------------------+---------------+---------------+
|         1        |       17      |      19 г.    |
+------------------+---------------+---------------+
|         3        |       23      |       5 Mb    |
+------------------+---------------+---------------+
|         2        |       23      |      10 мм    |
+------------------+---------------+---------------+
где table_values.descr_id = table_descriptions.id и table_values.product_id = table_products.id (таблица товаров).


Как вы думаете, это оптимальная идея или можно по-другому сделать??

Заранее большое спасибо Вам.
 

Crystal

Новичок
Don Arana
Я так же делал. И в скриптах магазинов, которые видел, тоже было такое выполнение. Так что, думаю, это довольно оптимально.
 

Don Arana

Новичок
Crystal
Спасибо!
Просто я не видел это на примерах других интернет магазинов, вот и решил проверить.
 

GribNick

Новичок
прикрути еще поле для сортировки параметров у товара
чтобы было проще их последовательно выводить
 

Анатолий

Новичок
Don Arana
Это действительно хороший способ. У меня работает на некоторых сайтах, практически так же реализованные каталоги товаров.

Хотя первый раз когда у меня возникла такая проблема, я ломал голову около недели. :)
 

Don Arana

Новичок
Анатолий
Спасибо!
Я тоже сначала тупил, но задумываться никогда сильно не задумывался.
А сегодня с утра решил обдумать проблему основательно и тут же осенило ;)
 

Rammstein

PHPClub::News
Don Arana
+100 :D
Долго мучался. Думал, что нужно помещать каждый тип товаров в отдельную таблицу. Я рад. Молодца :)

-~{}~ 01.11.05 18:57:

Ещё тут допёрло. Нужно как минимум три таблицы под значения: обыная, даты, тексты и целые числа. Иначе производительность будет падать сильно.
 

Don Arana

Новичок
Ещё тут допёрло. Нужно как минимум три таблицы под значения: обыная, даты, тексты и целые числа. Иначе производительность будет падать сильно.
Не понял :) А можно поподробнее?
 

Анатолий

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

SelenIT

IT-лунатик :)
...несколько таблиц table_values под каждый тип данных. Для того чтобы уменьшить размер таблиц по вертикали...
...и для того, чтобы можно было нормально сортировать/группировать/искать товары по этим характеристикам, используя соответствующие индексы.
 

Анатолий

Новичок
Автор оригинала: SelenIT
...и для того, чтобы можно было нормально сортировать/группировать/искать товары по этим характеристикам, используя соответствующие индексы.
Как раз таки мне, кажется, нормально сортировать, группировать и т.д. удобнее когда все записи в одной таблице. Или я не прав?
 

Rammstein

PHPClub::News
Автор оригинала: Анатолий
Наверное, имеестся в виду сделать несколько таблиц table_values под каждый тип данных. Для того чтобы уменьшить размер таблиц по вертикали. Это усложнит код, но увеличит быстродействие. Но как мне кажется "овчинка" того не стоит. На много в быстродействии не выиграешь. Я не думаю что там будет таблица с миллионами записей.
Ну предположим тебе нужно хранить текст в 5k символов. varchar для этого не катит. но опять же выделять text под 5значное число как-то жалко :) и неправильно
 

MpaK69

Новичок
а если разложить свойства по разным таблицам

как для одного товара например достать 3 свойства из 1ой таблицы, 2 из другой и т.п.?
 

Анатолий

Новичок
Автор оригинала: Rammstein
Ну предположим тебе нужно хранить текст в 5k символов. varchar для этого не катит. но опять же выделять text под 5значное число как-то жалко :) и неправильно
Все понял... :)
Вот теперь согласен, что завести несколько таблиц рациональнее.

-~{}~ 03.11.05 09:12:

Автор оригинала: MpaK69
а если разложить свойства по разным таблицам

как для одного товара например достать 3 свойства из 1ой таблицы, 2 из другой и т.п.?
По ID'шнику товара. Ведь в каждой таблице есть поле product_id
 
Сверху