Название: Хранение дерева в mySQL Отправлено: NetWorm от Сентябрь 21, 2012, 20:48 Вобщем имеется древовидная структура. Пример зал театра.
Основной зал |-Амфитеатр левая сторона |-Ряд 01 |-Ряд 02 |-Ряд 03 |-Амфитеатр правая сторона |-Ряд 01 |-Ряд 02 |-Ряд 03 Вот суть такая. Это можно представить в виде одной таблицы с полями.. id, name, parent В данном случае она будет выглядеть вот так id|Name |parent 1|Основной зал |NULL - т.е. самый верхний уровень 2|Амфитеатр левая сторона|1 - ссылка на верхний уровень 3|Ряд 01 |2 - ссылка на "Амфитеатр левая сторона" 4|Ряд 02 |2 - ссылка на "Амфитеатр левая сторона" Вопрос. Как мне получить данные например Ряд 01 | Основной зал. т.е. получить через Ряд 01 мы можем получить строку Амфитеатр, а через амфитеатр можем получить Основной зал. Сложность в том что уровней может быть разное количество. Название: Re: Хранение дерева в mySQL Отправлено: trot от Сентябрь 22, 2012, 09:58 Рекурсивные запросы - with recursive ...., но в mysql к сожалению нет рекурсивных запросов. Посмотрите здесь - http://club.shelek.ru/viewart.php?id=306.
Название: Re: Хранение дерева в mySQL Отправлено: xokc от Сентябрь 22, 2012, 18:04 Способов хранить иерархические данные в реляционной БД великое множество, начиная от примитива id-parent (как у тебя) до представления деревьев в виде XML и использования XPath индексов для доступа к данным (как у MSSQL). Всё зависит от того перечня действий с деревом, который тебе нужен. Если нужны всего лишь получение всех потомков и предков узла достаточно создать дополнительную таблицу, в которой хранить тройки id-parent-level для всех узлов (где level - уровень вложенности узла).
|