Как правильно организовать структуру базы данных для товаров и дерева категорий?

Здравствуйте!

Помогите, пожалуйста, разобраться.

Использую MySQL (InnoDB) и PHP.

Есть интернет магазин, в нем товары и категории.

products
id (PRIMARY)
title
price
category_id (foreign key on delete set null)

categories
id (PRIMARY)
title
parent_id

Категории иерархические с неограниченным уровнем вложенности.

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

Сейчас, для добавления, я собираю массив из дерева категории и разом вставляю в таблицу.
Но возникла проблема с добавлением и изменением дерева категорий:
1. Если удаляется категория в списке
2. Если меняется уровень вложенности
3. Если меняется только название категории

Категорий будет не много и я вначале подумал, что можно каждый раз, при сохранении категорий, удалять все в таблице categories и добавлять заново. Но потом дошло, что будут меняться id категорий и соответственно, значение category_id в таблице products будет неверным.

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

Заранее спасибо!
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@iljaGolubev
categories
id (PRIMARY)
title
parent_id
order

1. Если удаляется категория в списке - foreign set null (или default)
2. Если меняется уровень вложенности - менять только order у дерева
3. Если меняется только название категории - только название и менять
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 15:51
3000 руб./за проект
25 апр. 2024, в 15:31
70000 руб./за проект
25 апр. 2024, в 15:26
15000 руб./за проект