Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Древовидное отображение. Подскажите идею. / 15 сообщений из 15, страница 1 из 1
29.11.2004, 17:38
    #32804576
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Одно из требований к проектируемой системе - отображение в древовидной форме данных.
Данные структурированы примерно так:
Свойства объекта:

-Географические
--улица
--дом
--...
-Физические
--потолок
---навесной
---обычный
---....
--пол
-...

Для того, чтобы показать эти свойства в виде дерева, я построил таблицу tree:
id int
name varchar()
parent int

Таблица main, в которой хранятся данные об объектах :
id int
dom varchar()
...
т.е., все свойства.

Я не знаю, как связать таблицу tree и main, чтобы обеспечить такую функциональность в клиенте: щелкает клиент по дереву на самый верхний узел (например "Географические") и ему открывается например грид, в котором все свойства географические. Но щелкая по самому нижнему в иерархии свойству- получает значения только этого свойства (например - "пол").

И вообще, возможно ли такое реализовать?

Может быть, разносить данные о каждом верхнем уровне (Географические, Физические, ...) в разные таблицы и делать потом таблицу tree главной, а остальные - подчиненными ей?
...
Рейтинг: 0 / 0
29.11.2004, 17:46
    #32804595
e_basil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Таблица Objects - главная
в ней объекты строятся иерархически
Таблица Properties - подчиненная связана чкрез id
...
Рейтинг: 0 / 0
29.11.2004, 17:51
    #32804606
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Я правильно понял: Objects - это моя tree? В ней у меня хранится инфа о структуре дерева.
Но как связать её с подчиненной таблицей, если в подчиненной не должно быть свойств верхнего уровня? (Географические, Физические)?
...
Рейтинг: 0 / 0
29.11.2004, 18:11
    #32804662
e_basil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
один из вариантов:
Код: plaintext
< свойства для этого элемента отсутствуют >
...
Рейтинг: 0 / 0
29.11.2004, 18:22
    #32804694
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Да, но как реализовать вот это?

Savkaщелкает клиент по дереву на самый верхний узел (например "Географические") и ему открывается например грид, в котором все свойства географические. Но щелкая по самому нижнему в иерархии свойству- получает значения только этого свойства (например - "пол").
...
Рейтинг: 0 / 0
30.11.2004, 10:03
    #32805154
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
2 Savka
ИМХО, ты слегка не в ту сторону роешь. Иногда имеет смысл в дереве добираться например до конкретного дома по цепочке а-ля "Город-Район-Улица-Дом-Объект". А какой смысл в показе только пола например? Тем паче, что инфа по конкретному объекту все равно уже скорее всего целиком на клиенте. В общем интерфейс типа Проводника. Слева дерево адреса, справа подробная инфа по выбранному объекту.
Хотя может быть я не понял задачи.
...
Рейтинг: 0 / 0
30.11.2004, 10:18
    #32805183
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Серега, это как раз то, что мне нужно. Я просто неверно сформулировал задачу.

Как в таком случае должна выглядеть структура базы?
...
Рейтинг: 0 / 0
30.11.2004, 10:28
    #32805205
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Я, правда, пока не совсем себе представляю, какой толк в таком отображении данных.
Вот, к примеру, надо человеку посмотреть последних 10 введнных объектов, или все объекты, которые находятся по такой то улице. Тогда что?
...
Рейтинг: 0 / 0
30.11.2004, 10:42
    #32805237
Simon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
вообще не плохо было бы написать еще какой сервер бд используется
если оракл то там есть иерархические запросы с помощью которых все очень просто делается

делаешь
id integer
obj_type тип объекта если нужно
obj_name название если нужно
parent_id если нужно

корень там где parent_id = null
...
Рейтинг: 0 / 0
30.11.2004, 10:46
    #32805246
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
SavkaКак в таком случае должна выглядеть структура базы?
Ну, это тебе лучше знать.
Схематично (как вариант)
1.Адреса объектов
ИД
ИДродителя
Наименование

1.Объекты
ИД
ИДадреса
Реквизиты (вот тут надо думать как организовать - то-ли полей насоздавать с избытком, то ли ссылки на "части объекта" (отдельная(ые) таблица(ы)) типа "кухня","комната", "санузел" и т.п.)

Вот только сомневаюсь я, что древо - это хороший способ ( в данном случае ) с точки зрения производительности. Ибо деревья - это довольно тормозная и неудобная штука в плане программирования, особенно для групповых операций . Может тебе лучше сделать адреса на основе КЛАДРа или типа того? Т.е. весь адрес по отдельным полям (ссылками на справочник адресов) забить в каждый объект (и город и район и улицу). И при выборе в каждом уровне фильтровать последующий уровень. Проще будет в дальнейшем, ИМХО. Например найти все варианты по определенному району с кухней>10м.
Меньше нормализации - больше нормальности.
...
Рейтинг: 0 / 0
30.11.2004, 10:48
    #32805252
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
В догонку.
Визуально, второй "мой" вариант, в принципе можно нарисовать как дерево.
...
Рейтинг: 0 / 0
30.11.2004, 10:57
    #32805267
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Серега
1.Адреса объектов
ИД
ИДродителя
Наименование

1.Объекты
ИД
ИДадреса
Реквизиты (вот тут надо думать как организовать - то-ли полей насоздавать с избытком, то ли ссылки на "части объекта" (отдельная(ые) таблица(ы)) типа "кухня","комната", "санузел" и т.п.)


Получается, что эти две таблицы надо связывать по ИД. И если кто-то добавляет новый объект, то на каждом клиенте надо будет перестраивать дерево.

И, что еще хуже, при разрастании самой базы - все это будет изрядно тормозить. (Мне так кажется).
Но вот хочется клиенту отображения типа проводника и все тут.

А что такое "КЛАДР"?
...
Рейтинг: 0 / 0
30.11.2004, 10:58
    #32805270
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Simonвообще не плохо было бы написать еще какой сервер бд используется

Используется PostgreSQL
...
Рейтинг: 0 / 0
30.11.2004, 11:14
    #32805301
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
SavkaИ, что еще хуже, при разрастании самой базы - все это будет изрядно тормозить. (Мне так кажется).
Будет однозначно. Может и не катастрофически (как сделаешь ), но будет.

SavkaНо вот хочется клиенту отображения типа проводника и все тут.

Дерево можно нарисовать и не на деревянной структуре.

SavkaА что такое "КЛАДР"?
Всероссийский классификатор адресов. Можно найти на сайтах налоговиков да и вообще в инете дофига.
...
Рейтинг: 0 / 0
30.11.2004, 15:45
    #32806043
Savka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидное отображение. Подскажите идею.
Спасибо за советы. :)
Дерево я действительно буду просто рисовать, а не загонять в него все узлы из бд.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Древовидное отображение. Подскажите идею. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]