База для каталога товаров

  • Автор темы Автор темы Name
  • Дата начала Дата начала

Name

Новичок
База для каталога товаров

Как бы базу пограмотнее спроектировать.

Ничего особенного.
Есть
Группа товаров
Мониторы
Принтеры
Подгруппа товаров
15 ,17, 19
Матричные, струйные

Делаю три таблицы
Группа товаров
id, name_ru
Подгруппа товаров
id, group_id, podgroup_id, name_ru
Прайс
id,group_id,podgroup_id,tovar, price

Что то неправильно скорее всего.
(неакуратьненько как то)
Как бы поуниверсальнее (если будет много вложеностей)


Западные источники прелагают, вообще мне не очень понятно
Группы и подгрупы хранить в одной таблице
id | category
0 | Монитор (Категории)
0 | Принтеры
1 | 15 (подкатегории)
 
http://phpclub.net/talk/search.php?s=&action=showresults&searchid=42485&sortby=lastpost&sortorder=descending
выбери все постинги про деревья в SQL.
 
если нужен произволный уровень вложенности, то делаешь таблицу Группы товаров:
id - первичный ключ
perent_id - внешний ключ на родителя (null, если это корневая группа)
ну и name
 
если нужен произволный уровень вложенности, то делаешь таблицу Группы товаров:
Почитал кое что. Вроде въехал.
Однако буквально вчера искал инфу по этой теме
наткнудся на топик где человек тоже хотел сделать категории, подкатегории в одной таблице
однако ему сказали, мягко выражаясь (ты не прав), мол категории надо хранить в отдельной таблице и все тут.

И насколько такой вариант хранения данных подходит для каталога товаров
в смысле может гиморно это поддерживать в будущем (delete, update) или еще что.
 
Огород городишь... Зачем, нафиг, три таблицы? Одной - достаточно. Я реализовал все в одной таблице:
id
kat
kat_1
...
kat_n
name
Все! Далее просто грамотно делаются запросы к базе, тобишь WHILE kat=xxx, kat1=xxx и т.д. По моему это хороший вариант. Ведь если куча подгрупп - то, по твоему, следует создавать такую же кучу баз?
 
Мда.. Frenk, огород городишь ты. Тебе ещё многому учиться надо...

2Name: глянь http://dev.e-taller.net/dbtree/
на самом деле, держать категории в отдельной таблице - это очень хорошо (и, что главное, быстро).
 
Вот у буржуев накопал такую структуру.

Category
| id | parent_id | name |

[/b]Products[/b]
| id | name | description | price

[/b]Products_categories[/b]
| product_id | category_id |

Что скажете.
Только не понятно зачем третья таблица получается отношение many to many.
Можно наверное category_id засунуть в таблицу Products.
 
Ну, учится - всегда полезно!
Однако думается, что в зависимости от требования к дереву(к задаче), надо выбирать наиболее подходящее решение. Думаю, что использование приведенных su1d классов ненужно, хотя все это, конечно, круто.
2Name: Когда остановишь свой выбор на какой-либо структуре - отпиши, pls, интересно.
 
для 2х-уровневых каталогов вот так можно

c_topics:
id
topics_id (0 for topics)
title
....

c_products:
id
topic_id (=c_topics.id)
title
...

c_prices:
id
product_id (=c_products.id)
store_id
value
....

не универсально но таблицы подразделов не надо :)
 
Автор оригинала: Name
Вот у буржуев накопал такую структуру.

Category:
| id | parent_id | name |

Products:
| id | name | description | price |

Products_categories
| product_id | category_id |

Что скажете.
Только не понятно зачем третья таблица получается отношение many to many.
Можно наверное category_id засунуть в таблицу Products.
Самое что ни на есть грамотное решение! И нечего шишку парить!
 
mahoune в чем его грамотность ? где ты собираешься хранить подгруппы ?
 
А таблица Category зачем?
Та и хранишь дерево категорий товаров?! Или я опять не на том поезде?

Ну и соответственно в Products_categories задаешь связи Товаров к категориям! Хотя это для случая если один товар может относится к нескольким категориям! Иначе можно просто category_id поместить в таблицу products
 
>А таблица Category зачем?
ладно, где тогда группы ?
 
Demiurg ты не выспался :) ?
Таблица Category содержит в себе категории и подкатегории.

| id | parent_id | name |
| 1 | 0 | Mouse |
| 2 | 1 | Genius |
| 3 | 1 | Microsoft |

что не понятно?
 
В итоге я сделал так:

Category
| id | parent_id | name |

Products
| id | cat_id | cat_parent_id | firm_id | name | description | price |

Добавил cat_parent_id что бы выводить подгрупы
Хватает для трех уровневого каталога, с увеличение подгруп надо добавлять
в product поля cat_parent_id. Во всяком случае у меня так получилось.
 
Name
вот http://dev.e-taller.net/dbtree/ разберись с этим, и в будущем не будет проблем с деревьями, любого уровня вложенности.
Там любую ветвь дерева за один запрос вытащить можно.
 
Сверху