Мне нужно создать таблицы MySQL, которые представляют древовидную структуру, например:
Root
|- Chapter 1
| |- Chapter 1.1
| | |- Article 1.1.1
| | |- Article 1.1.2
| |- Article 1.2
| |- Chapter 1.3
| |- Chapter 1.3.1
| | |- Article 1.3.1.1
| | |- Article 1.3.1.2
| |- Article 1.3.2
| |- Article 1.3.3
|- Chapter 2
|-Chapter 2.1
| |- ...
|- Chapter 2.2
|- ...
Проще говоря, существует два типа сущностей: глава и статья.Статья - это наименьшая сущность, в которой нет дочернего элемента, в то время как глава может содержать подглаву или статьи как дочернюю сущность.Каждая сущность будет иметь идентификатор и имя.
У порядка детей нет установленных правил, это может быть глава, затем статья, затем снова глава.
Другая проблема заключается в том, когда главаперемещается из одной главы в другую главу, все дети также должны быть перемещены соответственно.Например, когда я перемещаю главу 1.3.1 в главу 1.1 (таким образом, глава 1.3.1 становится главой 1.1.3), тогда статью 1.3.1.1 и статью 1.3.1.2 также следует переместить и стать статьей 1.1.3.1 и статьей1.1.3.2.И в то же время статьи 1.3.2 и 1.3.3 станут соответственно статьями 1.3.1 и 1.3.2.
Итак, что я спрашиваю, так это как разработать таблицу базы данных таким образом, чтобыпредставить эти отношения?И как будет выглядеть SQL для добавления нового элемента / удаления элемента и изменения положения элементов?(Я могу использовать Ajax для обработки взаимодействия перестановки и использовать PHP для генерации нумерации иерархии)
Кроме того, поскольку дерево обычно довольно длинное, я хочу избежать обновления всех элементов только потому, что только одинэлемент перемещен.(Не уверен, если это желание технически возможно.)