@morozkolog

Как правильно Сформировать URL?

Здравствуйте . Подскажите как правильно сформировать URL ну или вообще правильный ли мой ход мыслей . Суть задачи:
Есть сайт , на сайте товары , у товаров есть категории, у категорий подкатегории (их может быть несколько) . К примеру : категория - телефон, подкатегории - б/у , смартфон , товар - Nokia 3250 . URL должен быть : название сайта/телефон/бу/смартфон/Nokia 3250 . Как мне правильно составить таблицы в БД - что бы выполнялось минимальное количество запросов к БД, у меня сейчас такой вариант : 1 таблица - категории (поля: categotyID, categoryName, categoryParentId, categotyUrl) 2 таблица - товар (поля : IDtovara, categoryID ну и описание товара и так далее ). И как сформировать этот URL ? Спасибо заранее
  • Вопрос задан
  • 394 просмотра
Решения вопроса 1
tvolf
@tvolf
Как я понимаю, основная проблема в наименее затратном формировании строки списка подкатегорий ?
Если есть ограничение на максимально возможное количество категорий у товара, то самый простой вариант, наверное, формировать полный список категорий в одном SQL запросе, связывая JOIN-ами таблицу категорий саму с собой необходимое кол-во раз. Если же нет, то можно рассмотреть, например, способ хранения иерархических данных в БД, имеющий название materialized path. Там, конечно, есть свои сложности с добавлением и переносом поддеревьев внутри дерева, но зато формирование списка категорий будет выполняться очень просто. На хабре в свое время, вроде бы, была обзорная статья по способам хранения иерархических данных в реляционных БД.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
В свое время делал нечто подобное, в итоге вытаскивал все категории и строил дерево рекурсивной функцией. так как движок писали сами поверх Зенда - в админке добавили метод - при добавлении новых категорий в кэше грохалось старое и сохранялось новое готовое дерево, работало быстро и просто. Хотя конечно это не тру )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы