Каков наилучший способ хранения иерархических данных в 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
Другие вопросы по тегам