Russian Qt Forum
Ноябрь 22, 2024, 17:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Базы данных
>
Хранение дерева в mySQL
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Хранение дерева в mySQL (Прочитано 6409 раз)
NetWorm
Гость
Хранение дерева в mySQL
«
:
Сентябрь 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 мы можем получить строку Амфитеатр, а через амфитеатр можем получить Основной зал.
Сложность в том что уровней может быть разное количество.
Записан
trot
Гость
Re: Хранение дерева в mySQL
«
Ответ #1 :
Сентябрь 22, 2012, 09:58 »
Рекурсивные запросы - with recursive ...., но в mysql к сожалению нет рекурсивных запросов. Посмотрите здесь -
http://club.shelek.ru/viewart.php?id=306
.
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Хранение дерева в mySQL
«
Ответ #2 :
Сентябрь 22, 2012, 18:04 »
Способов хранить иерархические данные в реляционной БД великое множество, начиная от примитива id-parent (как у тебя) до представления деревьев в виде XML и использования XPath индексов для доступа к данным (как у MSSQL). Всё зависит от того перечня действий с деревом, который тебе нужен. Если нужны всего лишь получение всех потомков и предков узла достаточно создать дополнительную таблицу, в которой хранить тройки id-parent-level для всех узлов (где level - уровень вложенности узла).
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...