Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание иерархии товаров в интернет магазине 
V
    Опции темы
vicod
Дата 6.9.2008, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: 2
Всего: 2



стоит задача создания приложения типа интернет магазин. хочу сделать иерархию товаров. соотвественно у меня должна быть возможность добавления/удаления достаточного числа категорий и подкатегорий товаров и связывание с ними соответствующих товаров. какой класс выполняет эту функциональность? ну или вообще как это по-умному сделать?
PM MAIL   Вверх
niasilil
Дата 6.9.2008, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



Взять готовый open source php проект и его настоить. Их туча в инете. На java готовые нормальные проекты наверное тоже есть, но я не знаю. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
vicod
Дата 6.9.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: 2
Всего: 2



Цитата(niasilil @ 6.9.2008,  06:40)
Взять готовый open source php проект и его настоить. Их туча в инете. На java готовые нормальные проекты наверное тоже есть, но я не знаю.

 smile 
не пойдёт, я это делаю в учебных целях, для себя
PM MAIL   Вверх
niasilil
Дата 7.9.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



Цитата(vicod @ 6.9.2008,  09:43)
Цитата(niasilil @ 6.9.2008,  06:40)
Взять готовый open source php проект и его настоить. Их туча в инете. На java готовые нормальные проекты наверное тоже есть, но я не знаю.

 smile 
не пойдёт, я это делаю в учебных целях, для себя

в учебных целях работа с готовыми пакетами не менее интересна и полезна. Я бы очень рекомендовал это делать, потом пригодится. 
Но делать магазин на java в учебных целях - это сложно, потому что требуются некоторые знания J2EE. 

Если просто для себя, то можно обойтись базой данных и одной таблицей. Например иметь поля category, parent category и рекурсивным поиском искать результат. Или еще проще - в качестве категории выбрать полный путь. 
Если базы данных не хочется, то можно просто использовать файловую структуру для категорий. Один файл - один вид товара, одна директория - одна категория товара. 
Вобщем, вариантов много можно придумать, зависит от сложности и необходимых умений на данный момент. 
Для учебных целей - идеально базу данных. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
vicod
Дата 8.9.2008, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: 2
Всего: 2



Цитата(niasilil @ 7.9.2008,  16:45)
можно обойтись базой данных и одной таблицей. Например иметь поля category, parent category и рекурсивным поиском искать результат

тут если можно поподробней

вообще я так смотрю мне бы классно подошёл DefaultMutableTreeNode, но встаёт вопрос как это всё хранить в базе?
PM MAIL   Вверх
niasilil
Дата 8.9.2008, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



Цитата(vicod @ 8.9.2008,  01:12)
Цитата(niasilil @ 7.9.2008,  16:45)
можно обойтись базой данных и одной таблицей. Например иметь поля category, parent category и рекурсивным поиском искать результат

тут если можно поподробней

вообще я так смотрю мне бы классно подошёл DefaultMutableTreeNode, но встаёт вопрос как это всё хранить в базе?

Да, tree будет очень хорошо. 
Теперь задача сводится к построению дерева из таблицы. 
Читаем елемент root, потом читаем все елементы, у которых parentCategory='root', потом по каждому если детей больше чем ноль, то повторяем чтение и добавляем в дерево. Помнится, такие задачки были у меня в курсе "advanced database". Если таблица маленькая, то делать один sql запрос и дерево строить уже в памяти из результатов. 
Начать надо с того чтобы сделать чтобы дерево работало. Потом чтобы читать значения из базы данных. 
Вобщем, да, хорошая практика будет, думается мне. И не очень сложно. Пару дней потратить на рисование дерева, потом денек на подключение базы данных. Ну и еще денек на построение алгоритма чтения. Ну это так, оптимистично. smile


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
Бонифаций
Дата 8.9.2008, 04:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Я бы предпочел не строить иерархию товаров.  Потому что это связывает Вам же руки.  К примеру если у вас корневое деление по фирмам, то чтобы найти все телевизоры, вам придется просмотреть все дерево. 

А если коневое деление по типу товара тогда придется просмотреть все дерево, чтобы найти (скажем) все товары , произведенные Sony.

Разумнее добавлять товарам теги. И делать выборки по тегам. К примеру К монитору теги "мониторы", "Viewsonic","LCD".





--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
vicod
Дата 8.9.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: 2
Всего: 2



Цитата(niasilil @ 8.9.2008,  03:25)
Цитата(vicod @ 8.9.2008,  01:12)
Цитата(niasilil @ 7.9.2008,  16:45)
можно обойтись базой данных и одной таблицей. Например иметь поля category, parent category и рекурсивным поиском искать результат

тут если можно поподробней

вообще я так смотрю мне бы классно подошёл DefaultMutableTreeNode, но встаёт вопрос как это всё хранить в базе?

Да, tree будет очень хорошо. 
Теперь задача сводится к построению дерева из таблицы. 
Читаем елемент root, потом читаем все елементы, у которых parentCategory='root', потом по каждому если детей больше чем ноль, то повторяем чтение и добавляем в дерево. Помнится, такие задачки были у меня в курсе "advanced database". Если таблица маленькая, то делать один sql запрос и дерево строить уже в памяти из результатов. 
Начать надо с того чтобы сделать чтобы дерево работало. Потом чтобы читать значения из базы данных. 
Вобщем, да, хорошая практика будет, думается мне. И не очень сложно. Пару дней потратить на рисование дерева, потом денек на подключение базы данных. Ну и еще денек на построение алгоритма чтения. Ну это так, оптимистично. smile

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

я наверно сделаю примерно чтобы выглядело как на форуме что-то типа Форум -> Программирование -> Java -> Java: Общие вопросы на страницах

т.е вот например если в магазине такие категории
user posted image
если к примеру у меня в товарах будет книжка по jee, то юзер доберётся до неё если пройдёт путь root > books > java > ee.

ну вообщем на странице root > books > java > ee я буду отображать все товары у которых в поле category отмечено ee и т.д

как Вам такое?
PM MAIL   Вверх
cube
Дата 8.9.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 11.4.2007

Репутация: 2
Всего: 3



Знаешь это дело твое как представить это

В любом случае это будет дерево, т.е. каждый элемент которого будет иметь родителя, открой fcenter.ru там вся продукция организаванна деревом, открой sunrize.ru открой их прайс лист онлайн, там будет все организованно списками, но в базе данных это всеравно дерево, тоже самое что и на фцентре, просто ты выбираешь категорию получаешь список, потом подкатегорию и т.п.


PM MAIL   Вверх
ivg
Дата 8.9.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 33
Всего: 81



Цитата(Бонифаций @  8.9.2008,  07:33 Найти цитируемый пост)
Разумнее добавлять товарам теги. И делать выборки по тегам. К примеру К монитору теги "мониторы", "Viewsonic","LCD".

Поддерживаю. smile 
PM MAIL   Вверх
niasilil
Дата 10.9.2008, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



теги (tags ?)  по большому счету это такая же идея что и дерево, если товар можно класть в несколько каталогов. Ну так и с деревом ничего не мешает сделать many-to-many relationship, книга может лежать в нескольких каталогах, каталог содержит много книг. 
Что то типа таких таблиц:

item {item_id, item_name, item_description, ...}
category{category_id, parent_category_id, description, ...}
item_in{item_id, category_id}

vicod - вроде пофигу какое дерево использовать, это всё нюансы. Недостаток - при больших количествах данных у тебя уже придется делать много sql запросов, то есть придется оптимизировать. Но это дело десятое, потому что для любого небольшого магазина такая оптимизация нафиг не нужна. А вот когда проект вырастет, то придется немного оптимизировать. Но это уже совсем другая песня. 

Если в таблицу item_in записывать полный путь вместо сфеупщкн_id, то и таблица category не нужна. Может быть проще. А может и не быть, это уж как посмотреть. 
Вобщем, удачи. У этой задачи много решений и, что удивительно, много правильных. Надо выбрать то, которое позволит изучить необходимые инструменты. 

P.S. Я прошу прощения, я по русски не знаю как звучат многие понятия, так javascript:%20sendForm('submit');уж получилось. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
vicod
Дата 10.9.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: 2
Всего: 2



всем спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.