Лучший дизайн структуры данных - PullRequest
2 голосов
/ 16 мая 2010

В настоящее время в моем приложении есть одна таблица, которая доставляет мне немного хлопот. Проблема под рукой, у меня есть объект значения, который сопоставлен с этой таблицей. Когда данные возвращаются мне в виде массива объектов-значений, я должен затем пройти через этот массив и начать рекурсию, сопоставив ParentID с родительскими ObjectID.

Столбец ParentID имеет значение null (действует как родитель) или содержит значение ObjectID.

Я знаю, что должен быть лучший способ создать эту структуру данных, чтобы мне не приходилось делать рекурсивные циклы, чтобы сопоставить ParentID с их ObjectID.

Любая помощь с этим очень ценится.

Вот таблица в форме описания:

+----------------+------------------+------+-----+---------------------+-----------------------------+
| Field          | Type             | Null | Key | Default             | Extra                       |
+----------------+------------------+------+-----+---------------------+-----------------------------+
| ObjectID       | int(11) unsigned | NO   | PRI | NULL                | auto_increment              |
| ObjectHeight   | decimal(6,2)     | NO   |     | NULL                |                             |
| ObjectWidth    | decimal(6,2)     | NO   |     | NULL                |                             |
| ObjectX        | decimal(6,2)     | NO   |     | NULL                |                             |
| ObjectY        | decimal(6,2)     | NO   |     | NULL                |                             |
| ObjectLabel    | varchar(255)     | NO   |     | NULL                |                             |
| TemplateID     | int(11) unsigned | NO   | MUL | NULL                |                             |
| ObjectTypeID   | int(11) unsigned | NO   | MUL | NULL                |                             |
| ParentID       | int(11) unsigned | YES  | MUL | NULL                |                             |
| CreationDate   | datetime         | YES  |     | 0000-00-00 00:00:00 |                             |
| LastModifyDate | timestamp        | YES  |     | NULL                | on update CURRENT_TIMESTAMP |
+----------------+------------------+------+-----+---------------------+-----------------------------+e

1 Ответ

2 голосов
/ 16 мая 2010

Вы можете использовать модель вложенного множества. Смотрите очень хорошее объяснение здесь: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

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