Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Вниз

Создать дерево в БД.   Найти похожие ветки 

 
worldmen ©   (2005-08-11 11:51) [0]

Как создать деревья в БД?
Пример Отдел_1
          |- должность1
          |- должность2
      Отдел_2
          |- должность1
          |- должность3


 
Sergey13 ©   (2005-08-11 11:54) [1]

А что конкретно представляет трудность?


 
ANB ©   (2005-08-11 12:10) [2]

В начинающим надо перенести.


 
worldmen ©   (2005-08-11 12:18) [3]

Насколько я знаю дерево создается в одной таблице. И ссылка с одного поля идет на другое (дочернее). Как пишется Create teble...?


 
ANB ©   (2005-08-11 12:20) [4]

Дык у тебя по задаче классический мастер-детал. Тут явно 2 таблицы нужны. Зачем тут дерево ?


 
Reindeer Moss Eater ©   (2005-08-11 12:23) [5]

create table wooden_table(
id number,
pid number,
name varchar(x)
)


 
linesoft ©   (2005-08-11 12:25) [6]

>создается в одной таблице. И ссылка с одного поля идет на другое
Я где-то пропустил что-то интересное !!!?


 
sniknik ©   (2005-08-11 12:27) [7]

стандартно
Create teble tebleName (ID Int, IDParent Int, Name Char(30))

но у тебя двухуровневый справочник (пример), больше не будет?
тогда дерево не нужно, лучше разнести в  отделы и должности в разные таблицы и сделать связь.
а деревья это всетаки нечто другое, для неопределенного количества узлов и неравномерное.


 
worldmen ©   (2005-08-11 12:28) [8]

> Тут явно 2 таблицы нужны.
Я так и сделал, но думал деревом будет удобней выводить информацию в компонент TTreeView.


 
ANB ©   (2005-08-11 12:28) [9]


> linesoft ©   (11.08.05 12:25) [6]
- стандартный способ создания деревьев. В оракле можно его обычным запросом развернуть в любую сторону. Тольк циклов быть не должно.


> Reindeer Moss Eater ©   (11.08.05 12:23) [5]
- а констрейнты ?


 
msguns ©   (2005-08-11 12:29) [10]

>ANB ©   (11.08.05 12:20) [4]
>Дык у тебя по задаче классический мастер-детал. Тут явно 2 таблицы нужны. Зачем тут дерево ?

В деревню ! В глушь ! В Саратов ! К тетке !

Структура предмприятия - типичное "дерево". Ну ты даешь ;)))


 
ANB ©   (2005-08-11 12:31) [11]


> worldmen ©   (11.08.05 12:28) [8]
- не будет удобнее. Народ захочет видеть не только названия отделов и должностей - и ты попал. Плюс, таблица в виде дерева плоховато обрабатывается стандартными средствами. Если очень хочешь смотреть в виде дерева - возьми Quantum Grid. Он умеет связки деревом показывать.


 
ANB ©   (2005-08-11 12:32) [12]


> msguns ©   (11.08.05 12:29) [10]
- это структура отделов - дерево. А мешать должности и отделы в одну таблицу - изгал полный.


 
msguns ©   (2005-08-11 12:33) [13]

>sniknik ©   (11.08.05 12:27) [7]
>отделы и должности в разные таблицы и сделать связь.

Должности - отдельная таблица-справочник.
Структура же с любым кол-вом "этажей" (уровнем вложенности) спокойно "влазит" в одну таблицу, типовую структуру (рыбу) которой ты сам же и привел ;)


 
worldmen ©   (2005-08-11 12:36) [14]


> а деревья это всетаки нечто другое, для неопределенного
> количества узлов и неравномерное

Я понял. Спасибо.


 
sniknik ©   (2005-08-11 12:37) [15]

msguns ©   (11.08.05 12:33) [13]
можно всю базу(любую) загнать в одну таблицу... удобнее разносить в разные.

для показанного примера я бы сделал именно 2 таблици, отделы и должности (с полем ссылки на отдел). но никак не дерево.


 
ANB ©   (2005-08-11 12:40) [16]


> msguns ©   (11.08.05 12:33) [13]
- а кто имел что то против ?


 
msguns ©   (2005-08-11 13:17) [17]

Все штатное спокойно влазит в одну таблицу:

ID            - UID записи
PARENTID      - UID узла
ROOTFLAG      - Признак узла (если false, то это строка должн)
DID           - Ссылка на справочник должностей (nil для узлов)
<Категория, разряд, кол-во, оклад по штату и т.д.-для узлов пусто>


 
Nikolay M. ©   (2005-08-11 13:26) [18]

Обчитайся про деревья :)

http://sdm.viptop.ru/articles/sqltrees.html


 
Sergey13 ©   (2005-08-11 13:33) [19]

2[17] msguns ©   (11.08.05 13:17)
>Все штатное спокойно влазит в одну таблицу:
В такой горшок.... тьфу.
В такую таблицу (если ROOTFLAG сделать более емким) можно все что угодно засунуть.
8-)


 
sniknik ©   (2005-08-11 13:49) [20]

msguns ©   (11.08.05 13:17) [17]
да это всем понятно. стандартное дерево (+- пара дополнительных информационных полей ничего не меняет)

но посмотри на пример. внимательно. зачем оно там нужно? только изза желания впихнуть в одну таблицу? не нужно там этого.

вот если бы нужно было держать структуру, типа
группа фирм 1
        |- концерн 1
               |- фирма 1
                     |- Отдел 1
                           |- Должность 1
                           |- Должность 2
                           + неотределенное их количество
                     |- Отдел 2
               |- фирма 2
                     |- Нет структуры только создана
               + неотределенное их количество
               |- Должность 1
               |- Должность 2
        |- концерн 1
               |- фирма 1
               |- фирма 2
               + неотределенное их количество
               |- Отдел 1
        + неотределенное их количество
        |- Отдел 1
        |- Должность 1
группа фирм 2
        |- Должность 1 - структура только создана все фирмы пока "бумажные", должность уже есть, этот человек все организовывает  
+ неотределенное их количество


т.е. структура с разветвленной и неопределенной вложенностью, в офисе "группы фирм" и в "концернах" естественно тоже есть отделы/должности, и есть должности вне отделов непосредственно от "фирмы" и т.д. ну вот если чтото типа этого. то да, двумя руками за дерево. а по тому что в примере максимум 2 связанные таблици (две таблици вместо одной тут это упрошение а не усложнение ;о).


 
Rule ©   (2005-08-11 14:38) [21]

на ibase.ru  достаточно материала про деревья для понимания
http://ibase.ru/devinfo/treedb.htm
http://ibase.ru/devinfo/treedb2.htm
http://sdm.viptop.ru/articles/sqltrees.html

там ещё есть, но этого вполне достаточно для осознания сущности вопроса и реализации на практике решения



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.037 c
3-1123755014
Валерий
2005-08-11 14:10
2005.09.25
Непонятки с IN в динамическом SQL-е


14-1125902965
Андрей Жук
2005-09-05 10:49
2005.09.25
У меня украли номер ICQ


4-1122901949
Shopot
2005-08-01 17:12
2005.09.25
Как отловить сообщение в дочернем потоке?


14-1125422503
TJulia
2005-08-30 21:21
2005.09.25
Редактирование видео


1-1125396434
Shakal
2005-08-30 14:07
2005.09.25
Плейлист в Delphi?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский