Каков наилучший способ хранения иерархических данных в Mysql для более чем одного корня?
Я прочитал так много блогов и ссылок, чтобы сохранить иерархические данные в базе данных mysql, такие как вложенный набор модальных *Transitive Clousure Modal* Child Parent Hierchy. но я немного запутался, может кто-нибудь, пожалуйста, предложите мне, каков наилучший метод для хранения иерархии для более чем одного корня.
e.g
Root1
|
|---Child 1
| |--Child 1 of 1
| |--Child 2 of 2
|
Root 2
|
|--Child 2
| |--Child 1 of 2
| |--Child 2 of 2
Спасибо заранее:)
1 ответ
Когда вы используете таблицу для хранения иерархии, каждому объекту в иерархии требуется родитель. Таким образом, ваш узел может иметь следующие столбцы:
nodeid int not null not zero the id of the node in this row
parentid int not null, but can be zero the id the node's parent
nodename varchar the node's name
etc etc. other attributes of the node
С этой разметкой таблицы любой узел без родителей (то есть любой узел с parentid = 0
) является корневым узлом. Вы можете иметь столько их в своей таблице, сколько требует ваше приложение.
Пример, который вы показали, может быть представлен так:
nodeid parentid nodename
------ -------- --------
1 0 Root1
2 1 Child 1
3 2 Child 1 of 1
4 2 Child 2 of 1
5 0 Root2
6 5 Child 2
7 6 Child 1 of 2
8 6 Child 2 of 2