powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Очень прошу помощи
10 сообщений из 10, страница 1 из 1
Очень прошу помощи
    #34296538
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос такой.Вот у меня есть например Таблицы: "Отдел","Департамент","Сотрудники".
Все они связаны между собой в ввиде иерархической структуры,т.е.:
Код: plaintext
1.
2.
3.
4.
----Департамент
       |
       |__Отдел
       |__Сотрудники
..............................
Пользователю такая иерархия показывается в интерфейсе в виде дерева.
Как быть,если пользователь например вздумал создать дополнительную подкатегорию в категории сотрудники,нужно ли при этом создавать отдельную таблицу на эту новую подкатегорию,или как-то можно обойтись без нее,если можно обойтись,то как тогда хранить всю эту структуру.
Дело в том,что таких подкатегорий пользователь может создавать столько,сколько он захочет,поэтому создавать таблицу в базе на каждую такую подкатегорию наверное не есть правильно,а как тогда подскажите.
Спасибо
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34296571
JulTВопрос такой.Вот у меня есть например Таблицы: "Отдел","Департамент","Сотрудники".
Все они связаны между собой в ввиде иерархической структуры,т.е.:
Код: plaintext
1.
2.
3.
4.
----Департамент
       |
       |__Отдел
       |__Сотрудники
..............................
Пользователю такая иерархия показывается в интерфейсе в виде дерева.
Как быть,если пользователь например вздумал создать дополнительную подкатегорию в категории сотрудники,нужно ли при этом создавать отдельную таблицу на эту новую подкатегорию,или как-то можно обойтись без нее,если можно обойтись,то как тогда хранить всю эту структуру.
Дело в том,что таких подкатегорий пользователь может создавать столько,сколько он захочет,поэтому создавать таблицу в базе на каждую такую подкатегорию наверное не есть правильно,а как тогда подскажите.
Спасибо
Вообще-то, вся иерархия вполне может описываться одной таблицей:
Код: plaintext
1.
Иерархия(id Parent,id Child, Name)
Это снимает ограничения на количество дочерних веток и уровень вложенности...
А уж как ее отображать в пользовательском интерфейсе - Ваши проблемы...
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34296608
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С JulTВопрос такой.Вот у меня есть например Таблицы: "Отдел","Департамент","Сотрудники".
Все они связаны между собой в ввиде иерархической структуры,т.е.:
Код: plaintext
1.
2.
3.
4.
----Департамент
       |
       |__Отдел
       |__Сотрудники
..............................
Пользователю такая иерархия показывается в интерфейсе в виде дерева.
Как быть,если пользователь например вздумал создать дополнительную подкатегорию в категории сотрудники,нужно ли при этом создавать отдельную таблицу на эту новую подкатегорию,или как-то можно обойтись без нее,если можно обойтись,то как тогда хранить всю эту структуру.
Дело в том,что таких подкатегорий пользователь может создавать столько,сколько он захочет,поэтому создавать таблицу в базе на каждую такую подкатегорию наверное не есть правильно,а как тогда подскажите.
Спасибо
Вообще-то, вся иерархия вполне может описываться одной таблицей:
Код: plaintext
1.
Иерархия(id Parent,id Child, Name)
Это снимает ограничения на количество дочерних веток и уровень вложенности...
А уж как ее отображать в пользовательском интерфейсе - Ваши проблемы...
вот какая иерархия должна быть приблизительно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
1
1.1
1.1.1------1.1.1.1
               1.1.1.2-------1.1.1.2.1----
               ..........
               
1.2--------1.2.1
2
2.1
причем это еще не предел,может быть и глубже вложенности
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34296715
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например иерархия поверх уже существующих таблиц:
Иерархия(ChildType,ChildID,ParentType,ParentID) - типы соответсвуют таблицам.
Таблицам - view вида
"Тип1" as select ('Тип1' Type, t.xxx ID, t.zzz Name from Table1)

Внешнее соединение со всеми view позволит иметь данные для отображения дерева.

Но что с типами записей и связей. Нужно ли их ограничивать?
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34296884
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTпричем это еще не предел,может быть и глубже вложенностиВы нас уровнями вложенности не пугайте, а то мы все под стол запрячемся и отвечать не сможем со страха :)

Я бы на вашем месте их ложил исходную задачу как есть, без утайки и примеров из серии "предположим".

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


Вспоминая обсуждение в форуме Оракла - если нужно просто "обобщенное общее дерево", то сделал бы следующее:
1) Создал бы таблицу, в которой хранил само дерево - его узлы.
2) Создал таблицу - Тип узла - в каждом узле вставлял ссылку на тип узла.

далее можно прыгать и плясать вокруг всевозможных атрибутов узла и пр.
и думать заводить их динамически или просто перечислить как поля таблицы.
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34297060
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyДля того примера, который вы предложили - я бы сделал не три таблицы, а две.А я бы сделал 3 таблицы.

1. оргструктура (подразделения) - дерево с произвольным уровнем вложенности.
2. сотрудники.
3. связь сотрудник <---> подразделение с указанием роли в этом подразделении.
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34297190
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg3. связь сотрудник <---> подразделение с указанием роли в этом подразделении.Прямо как Слесарь-гениколог
Лишнее это ИМХО.
Не вижу живых примеров надобности такого подчинения.
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34297251
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely alexeyvg3. связь сотрудник <---> подразделение с указанием роли в этом подразделении.Прямо как Слесарь-гениколог
Лишнее это ИМХО.
Не вижу живых примеров надобности такого подчинения.

Не лишнее. Здесь существует три сущности: шатное расписание (таблица 1), человек (таблица 2) и приказ о назначении человека на должность (таблица 3).

Если удалить таблицу 3, то при любом кадровом изменении придётся менять штатное расписание.
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34297310
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab Bely alexeyvg3. связь сотрудник <---> подразделение с указанием роли в этом подразделении.Прямо как Слесарь-гениколог
Лишнее это ИМХО.
Не вижу живых примеров надобности такого подчинения.

Не лишнее. Здесь существует три сущности: шатное расписание (таблица 1), человек (таблица 2) и приказ о назначении человека на должность (таблица 3).

Если удалить таблицу 3, то при любом кадровом изменении придётся менять штатное расписание.Минуточку.... Это другое. В изначальном примере вообще не было ничего про должности и штатное расписание.
Да и фразу "3. связь сотрудник <---> подразделение с указанием роли в этом подразделении." - я понимаю как: один человек числиться в разных департаментах на разных должностях.

А это к штатному рассписанию - ну никаким боком не относится.
...
Рейтинг: 0 / 0
Очень прошу помощи
    #34297453
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyДа и фразу "3. связь сотрудник <---> подразделение с указанием роли в этом подразделении." - я понимаю как: один человек числиться в разных департаментах на разных должностях.

Это не единственное применение такой связи. Она будет "стрелять" при увольнении человека, освобождении от должности или назначении на другую должность. При работе на одной должности двух людей (каждый по 1/2 ставки). Временное исполнение обязанностей, временный перевод на другую работу и т.д. и т.п.

В общем это я всё к тому, что в исходном примере таблица "Сотрудники" лишняя (ряд нужно было продолжить таблицами "Группа", "Должность") или пример чисто абстрактный.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Очень прошу помощи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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