SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.02.2008 08:56:42

Юрий
Участник
Откуда: Владивосток
Зарегистрирован: 09.11.2007
Сообщений: 12

Хранение деревьев в базе (множественные вложения)

Мне нужно сделать чтобы на сайте можно было создавать множество разделов и подразделов, а потом выводить их в виде дерева. Посоветуйте как это можно сделать. Какие данные нужно записывать в базу, чтобы хранить информацию о дереве?

Неактивен

 

#2 14.02.2008 11:27:03

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Хранение деревьев в базе (множественные вложения)

Например
id - номер раздела
parent - номер родительского раздела
name - имя раздела
и.т.д.

Если parent=0, то раздел корневой. Недостаток такого хранения в том, что формировать само дерево потребуется средствами PHP после того, как Вы получите из базы все данные id и parent всех записей таблицы. Если элементов несколько сотен, то оптимизации быстродействия не потребуется.

Неактивен

 

#3 15.10.2009 15:48:31

yla
Участник
Зарегистрирован: 15.10.2009
Сообщений: 2

Re: Хранение деревьев в базе (множественные вложения)

rgbeast написал:

Например
id - номер раздела
parent - номер родительского раздела
name - имя раздела
и.т.д.

Если parent=0, то раздел корневой. Недостаток такого хранения в том, что формировать само дерево потребуется средствами PHP после того, как Вы получите из базы все данные id и parent всех записей таблицы. Если элементов несколько сотен, то оптимизации быстродействия не потребуется.

rgbeast, Здравствуйте, подскажите пожалуйста, возможно ли одним запросом построить из таблицы дерево?

Таблица с такими полями:

id
type
parent
level

Просто если записей много и обходить рекурсивно через php - будет очень много запросов (:

Неактивен

 

#4 15.10.2009 17:32:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранение деревьев в базе (множественные вложения)

Выберите всю таблицу и постройте дерево в памяти приложения? wink
Дерево имеет нелинейную структуру, как Вы хотите получить его в виде таблицы?

Неактивен

 

#5 15.10.2009 17:53:27

yla
Участник
Зарегистрирован: 15.10.2009
Сообщений: 2

Re: Хранение деревьев в базе (множественные вложения)

paulus написал:

Выберите всю таблицу и постройте дерево в памяти приложения? wink
Дерево имеет нелинейную структуру, как Вы хотите получить его в виде таблицы?

Думал как нить можно запросам) Спасибо за ответ!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson