За последние 24 часа нас посетили 63035 программистов и 1741 робот. Сейчас ищут 904 программиста ...

Структура таблицы категорий

Тема в разделе "PHP и базы данных", создана пользователем rs_ssh, 15 ноя 2016.

  1. rs_ssh

    rs_ssh Активный пользователь

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    Как лучше всего организовать структуру категорий и под-категорий до 4-го уровня в MySql?
    У каждой категории(всего 15 главных категорий) есть под-категории.
    Так же у под-категории есть свои под-под-категории, и все они относятся к главной категории и к под-категории(ям):

    1. Категория(входят все под-категории) - Под-категория_1(под-категории: своя(1) и 2,3,4) - Под-категория_2(под-категории: своя(2) и 3,4) - Под-категория_3(под-категории: своя(3) и 4) - Под-категория_4(под-категории: своя(4)).

    2. Категория - Под-категория_1 - Под-категория_2 - Под-категория_3 - Под-категория_4
    3. Категория - Под-категория_1 - Под-категория_2 - Под-категория_3 - Под-категория_4
    4. Категория - Под-категория_1 - Под-категория_2 - Под-категория_3 - Под-категория_4
    и т.д.

    Например, создаём таблицу с id и name.
    Главные категории имеют id с 1 до 15, что делать с под-категориями и их отношением к своей главной категории и под-категории(ям)?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    SELECT t4.*
    FROM category t1
    LEFT JOIN category2 t2 ON t2.cat = t1.id
    INNER JOIN category3 t3 ON t3.cat = t2.id
    INNER JOIN category4 t4 ON t4.cat = t3.id
    WHERE t1.id = айди категории
     
  3. rs_ssh

    rs_ssh Активный пользователь

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    А можно всё в одну таблицу запихнуть, чтобы меньше JOIN-ов было, так сказать оптимизировать запрос к базе.
    Скажем, выделяем id для главных категорий 1-15, для под-категории первого уровня id 100-130, для под-категории второго уровня id 200-230 и т.д. И при выборе работать WHERE id IN ().
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    да можно, так составляют форумы, подфорумы, разделы

    разделы:
    ( ид_форум 1, ид_подфорум 1, ид_раздел 0)
    подфорумы:
    ( ид_форум 1, ид_подфорум 0, ид_раздел 0)