powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Дерево в БД ???
12 сообщений из 12, страница 1 из 1
Дерево в БД ???
    #32015771
Gonza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно в базу поместить бесконечную структуру типа дерево с бесконечным кол-ом ветвей (типа дерева каталогов в проводнике) и умудриться с ним работать.
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32015838
Фотография SergLet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ы
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32016922
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что сложного-то
хранишь 3 поля id, idродителя, имя узла
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32058492
seroga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32058495
seroga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вот и обламайся:

насос1 -
-----статор-
-------------гайка_статора
-----ротор-
-------------гайка_ротора
-----гайка_заковыристая_1
насос2 -
-----статор-
-------------гайка_статора
-----ротор-
-------------гайка_ротора
-----гайка_заковыристая_2

дык вот:

статор и ротор у насосов одинаковые, только гайки у них разные, если по твоему то у статора будет два родителя насос1 и насос2, на всех родителей id не напасешься :)
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32058560
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32058645
denipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все просто, я сделал так: все дерево хранится в одной таблице с 2-мя полями
1 - так называемый классификатор
2 - название элемента
Принцип следующий:
001. - видеонаблюдение
002. - контроль доступа
001.001. - видеонаблюдение->видеомониторы
001.002. - видеонаблюдение->видеокамеры
002.001. - контроль доступа->контрольные панели
001.001.001. видеонаблюдение->видеомониторы->Samsung
001.001.002. и так далее
Работает много быстрее чем с несколькими таблицами
и вообще удобно
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32058657
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одной таблицей можно обойтись если все ветки уникальны, т.е. имеют каждый одного родителя. Если некоторые узлы могут иметь несколько родителей (см.seroga Guest) то необходимо 2 таблы. Первая содержит перечень сущностей, вторая их связи по типу
id, id_parent, id_table1(FK на первую таблу).
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32058810
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у узла может быть несколько родителей - это не дерево, это сеть... Там все намного хуже :((
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32059076
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2noir
> Если у узла может быть несколько родителей - это не дерево, это сеть... Там все намного хуже :((

Согласен, но эту сеть можно загнать в дерево и работать с ним без проблем.
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32059115
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, это вообще-то чисто терминологический вопрос к БД отношения не имеющий...

Но все-таки называть деревом структуру, по своей сути деревом не являющуюся плохо - возможна путаница. Ты ведь когда хранишь дерево в массиве, не называешь "массивом" и само дерево?
...
Рейтинг: 0 / 0
Дерево в БД ???
    #32059484
Серена
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2noir
>Но все-таки называть деревом структуру, по своей сути >деревом не являющуюся плохо - возможна путаница. Ты >ведь когда хранишь дерево в массиве, не >называешь "массивом" и само дерево?

Да нет, ты не понял меня. Если работать с сущностями у которых несколько родителей - это сеть. А вот если работать со ссылками на сущность то по ссылкам можно построить нормальное сбалансированное дерево. Ведь ссылок то на одну сущность может быть сколько угодно. И никакой путаницы - все просто и логично. Все дело в структуре данных.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Дерево в БД ???
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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