powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Деревья в базе данных
6 сообщений из 6, страница 1 из 1
Деревья в базе данных
    #32396911
zinger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите структуру базы, для хранения такой структуры.

Организация
|
+ -- фелиал1
|          |
|          + ---бугалтерия
|                 |
|                    +-----Петров
|
|
+ -- фелиал2
           |
           + ---бугалтерия
                 |
               +----Сидаров

С рисунка видно что узел " бугалтерия " одинаков для двух ветвей. Вот это и смущает меня
...
Рейтинг: 0 / 0
Деревья в базе данных
    #32396926
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно вот так:

Tree_table( Dic_table(
id_tree Int, <----| |-> id_dic Int,
id_parent Int ,---| | value VarChar2(500));
id_dic Int-----------|
);
...
Рейтинг: 0 / 0
Деревья в базе данных
    #32396932
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Tree_table( 
id_tree Int, < --|  
 
id_parent Int ,-|   
id_dic Int); ----------- | 
 
                        |       Dic_table( 
                        | ---> id_dic Int, 
 
                               value VarChar2( 500 ));


...
Рейтинг: 0 / 0
Деревья в базе данных
    #32396972
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь смотри: Иерархические структуры, не требующие сопровождения

---------------
Работай с умом, а не до ночи
...
Рейтинг: 0 / 0
Деревья в базе данных
    #32397207
VladSh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С рисунка видно что узел " бугалтерия " одинаков для двух ветвей. Вот это и смущает меня

Смущать не должно, так как в филиале № 1 своя бухгалтерия, а в филиале № 2 - своя.
Поэтому структура подойдет стандартная:
id
parentid
name
kodid

где kodid - ссылка на справочник скажем категорий (в нем строки: центр, филиал, бухгалтерия, плановый отдел, отдел продаж,..., МОЛ,...
Этот справочник может пригодиться, например, для раздельного учета доходов и затрат.
Помимо kodid могут быть ссылки и на другие таблицы (адреса, телефоны,....)

ps
собственно, получился повтор ответа bas-а

--
Шумов В.
www.acdplus.ru
...
Рейтинг: 0 / 0
Деревья в базе данных
    #32408941
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для таких целей юзаю примерно такую схему

0. Имя записи (содержание....что там прописано..т.е.)
1. Уник_код_строки
2. Код_родит_строки
3. Вид записи - это можно из отдельного справочника - типов записей.
ПО сути это - однозначно определяет что в строке дерева ...сотрудник
али отдел...али что еще
4. Тип записи - строка или узел - для будущих выборок например, токо узлов

5. Код_линка (ярлык). Если это не NULL значит эта строка дерева тупо "ссылается" на любую другую строку любой иной ветки дерева. При выборке - по этому коду - зачитывается "0. Имя записи" вместо текущего...

Именно такой Код_линка (ярлык) позволяет с одной строны - для всех "ярлыков" - иметь свою иерархию, и уже из них - получать то что надо.

Например, в дереве может быть сначала три ветки

+- Сотрудники
-- иванов
-- петров
+- Отделы
-- отдел_1
-- отдел_2
+- должности
-- первая
-- вторая

Потом создаются ветки = смесь из новых строк + ярлыков
+-Фирма (тип записи = фирмы)
+-филиал (тип записи = филиалы)
-- ярлык на отдел1
-- ярлык на Иванова

так как строки содержащие "ярлык на" имеют всегда свои ID, ParentID - то они могут быть произвольно назначены в собственную иерархию.

Если в интерфейсе есть включатель фильтра по "3. Вид записи" - то легко все смотреть для разных целей.

При желании, термин "тип записи" - можно также, хранить в самом дереве, в своей иерархии - чтобы можно было всегда иметь неограниченное кол-во типов записи.

Если Ярлык - это ссылка на другой Узел, имеющий свои строки, в том числе и ярлыки на другие.... - то для автоматич_расшифровки - легко использовать или сами селекты - или спец_процедуру, что вызывает сама себя - по рекурсии (если в рекорде - ярлык - еще раз делать саму себя).

селекты - это конструкция типа

select .....from
connect by ...........
start with ID in (select ....)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Деревья в базе данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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