![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| vicod |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 2 Всего: 2 |
стоит задача создания приложения типа интернет магазин. хочу сделать иерархию товаров. соотвественно у меня должна быть возможность добавления/удаления достаточного числа категорий и подкатегорий товаров и связывание с ними соответствующих товаров. какой класс выполняет эту функциональность? ну или вообще как это по-умному сделать?
|
|||
|
||||
| niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
Взять готовый open source php проект и его настоить. Их туча в инете. На java готовые нормальные проекты наверное тоже есть, но я не знаю.
-------------------- SCJP 5.0, SCJD |
|||
|
||||
| vicod |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 2 Всего: 2 |
не пойдёт, я это делаю в учебных целях, для себя |
|||
|
||||
| niasilil |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
в учебных целях работа с готовыми пакетами не менее интересна и полезна. Я бы очень рекомендовал это делать, потом пригодится. Но делать магазин на java в учебных целях - это сложно, потому что требуются некоторые знания J2EE. Если просто для себя, то можно обойтись базой данных и одной таблицей. Например иметь поля category, parent category и рекурсивным поиском искать результат. Или еще проще - в качестве категории выбрать полный путь. Если базы данных не хочется, то можно просто использовать файловую структуру для категорий. Один файл - один вид товара, одна директория - одна категория товара. Вобщем, вариантов много можно придумать, зависит от сложности и необходимых умений на данный момент. Для учебных целей - идеально базу данных. -------------------- SCJP 5.0, SCJD |
||||
|
|||||
| vicod |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 2 Всего: 2 |
тут если можно поподробней вообще я так смотрю мне бы классно подошёл DefaultMutableTreeNode, но встаёт вопрос как это всё хранить в базе? |
|||
|
||||
| niasilil |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
Да, tree будет очень хорошо. Теперь задача сводится к построению дерева из таблицы. Читаем елемент root, потом читаем все елементы, у которых parentCategory='root', потом по каждому если детей больше чем ноль, то повторяем чтение и добавляем в дерево. Помнится, такие задачки были у меня в курсе "advanced database". Если таблица маленькая, то делать один sql запрос и дерево строить уже в памяти из результатов. Начать надо с того чтобы сделать чтобы дерево работало. Потом чтобы читать значения из базы данных. Вобщем, да, хорошая практика будет, думается мне. И не очень сложно. Пару дней потратить на рисование дерева, потом денек на подключение базы данных. Ну и еще денек на построение алгоритма чтения. Ну это так, оптимистично. -------------------- SCJP 5.0, SCJD |
||||
|
|||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 1 Всего: 40 |
Я бы предпочел не строить иерархию товаров. Потому что это связывает Вам же руки. К примеру если у вас корневое деление по фирмам, то чтобы найти все телевизоры, вам придется просмотреть все дерево.
А если коневое деление по типу товара тогда придется просмотреть все дерево, чтобы найти (скажем) все товары , произведенные Sony. Разумнее добавлять товарам теги. И делать выборки по тегам. К примеру К монитору теги "мониторы", "Viewsonic","LCD". -------------------- Бонифаций. |
|||
|
||||
| vicod |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 2 Всего: 2 |
ну, мне кажется, необходимость DefaultMutableTreeNode вообще отпадает. разве что для того чтобы обеспечить некое кеширование. я наверно сделаю примерно чтобы выглядело как на форуме что-то типа Форум -> Программирование -> Java -> Java: Общие вопросы на страницах т.е вот например если в магазине такие категории ![]() если к примеру у меня в товарах будет книжка по jee, то юзер доберётся до неё если пройдёт путь root > books > java > ee. ну вообщем на странице root > books > java > ee я буду отображать все товары у которых в поле category отмечено ee и т.д как Вам такое? |
||||||
|
|||||||
| cube |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: 2 Всего: 3 |
Знаешь это дело твое как представить это
В любом случае это будет дерево, т.е. каждый элемент которого будет иметь родителя, открой fcenter.ru там вся продукция организаванна деревом, открой sunrize.ru открой их прайс лист онлайн, там будет все организованно списками, но в базе данных это всеравно дерево, тоже самое что и на фцентре, просто ты выбираешь категорию получаешь список, потом подкатегорию и т.п. |
|||
|
||||
| ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
||||
|
||||
| niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| vicod |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 2 Всего: 2 |
всем спасибо!
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |