Текущий архив: 2004.02.06;
Скачать: CL | DM;
Вниз
Многоуровневая группировка данных Найти похожие ветки
← →
chtr © (2004-01-06 13:22) [0]Добрый день.
Делаю структуру БД. Надо создать базу товаров с неограниченным количеством уровней группировки. Родился такой вариант:
Таблица details:
id - счетчик
grpid - группа
name - наименование
Таблица grp:
id - счетчик
up - верхний уровень
name - название группы
Но как потом с этим работать? Через TreeView? Может есть готовые компоненты. Или структура должна быть другая?
(Институтов не кончал, книжек не читал :) а надо срочно)
← →
Vlad © (2004-01-06 13:41) [1]
> chtr © (06.01.04 13:22)
Только зачем использовать две таблицы? Достаточно одной.
id | grp_id | name
TreeView строится с помощью несложной рекурсивной процедуры.
← →
Рамиль © (2004-01-06 13:41) [2]Таблица details:
id - счетчик
name - наименование
Таблица Groups
id
PDetails - ссылка на id таблицы details
PGrp - ссылка на id таблицы grp
Таблица grp:
id - счетчик
name - название группы
> (Институтов не кончал, книжек не читал :) а надо срочно)
А вот это сложно...
← →
chtr © (2004-01-06 13:49) [3]
> Рамиль © (06.01.04 13:41) [2]
По моему неоправданное усложнение?
Значит готовых компонентов нет :(
← →
Vlad © (2004-01-06 13:56) [4]Есть. TDBTreeView на Torry.net - $35
← →
Рамиль © (2004-01-06 13:57) [5]
> По моему неоправданное усложнение?
Если группы строго иерархичны, то может быть. А если есть группы одного уровня и несколько на одну мат ценность?
← →
chtr © (2004-01-06 14:02) [6]
> А если есть группы одного уровня и несколько на одну мат
> ценность?
Не мой случай. Все равно спасибо.
2 Vlad отдельное спасибо.
← →
Vlad © (2004-01-06 14:18) [7]Есть хорошая статья по поводу древовидного хранения данных
http://sdm.viptop.ru/articles/sqltrees.html
← →
jeka_t (2004-01-16 10:12) [8]Vlad, Подскажи пожалуйста рекурсивную процедуру для постройки дерева.
← →
Vlad © (2004-01-16 10:25) [9]
> jeka_t (16.01.04 10:12) [8]
А чего подсказывать ? Обычную процедуру построения дерева можешь написать ? А рекурсивная - тоже самое, только вызывает сама себя до тех пор, пока не кончатся вложенные Nodes
← →
Academic © (2004-01-16 10:52) [10]Если информации много, то дерево я строю по мере открытия узлов.
Идея не нова но дает хорошие результаты. А ссылки на базу, можно хранить в TTreeNide.Data
← →
Digitman © (2004-01-16 11:45) [11]
> chtr © (06.01.04 13:22)
id - счетчик (первичный ключ)
rootid - корневая группа (необязательно, нужно для обеспечения уникальности атрибутов узла, для корневого узла = Id)
level - уровень группировки узла, начиная от корня (необязательно, для быстрого поиска и доступа)
parentid - родительсткая группа (для корневого узла = Null)
what - признак принадлежности данного узла (подгруппа или деталь)
name - наименование
additional_info - дополнительные атрибуты узла (если необходимо, могут фигурировать в уникальной идентификации узла по совокупности его доп.атрибутов)
← →
HSolo © (2004-01-16 12:45) [12]http://delphi.vitpc.com/helloworld/dbtreeview.htm
Страницы: 1 вся ветка
Текущий архив: 2004.02.06;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.019 c