Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Отношение "предок-потомок" и циклические ссылки / 9 сообщений из 9, страница 1 из 1
26.02.2007, 19:38
    #34356039
RebusA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
Народ, подскажите.
Ну например : 1.таблица служащий emp(emp_id, emp_name) emp_id primary key
2. Таблица отношений emp_parents(начальник - подчиненный) (p_emp_id, f_emp_id)
p_emp_id, f_emp_id являются foreign key emp(emp_id)
(p_emp_id, f_emp_id) primary key

Как избежать варианта когда Служащий1 приходится начальником Служащему2 и в тоже время
Служащий2 приходится начальником Служащему1.
Вот и немогу понять, это проблемы ссылочной целостности или процедурной и как это решается.

Если обратился не в ту ветку......отправьте по адресу :)

З.Ы. Все это будет под Oracle
...
Рейтинг: 0 / 0
26.02.2007, 19:58
    #34356072
Tyo
Tyo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
А почему не хотите в одной таблице держать и EMP_ID, и EMP_PARENT?
Проблемы те же, а на одну таблицу меньше
...
Рейтинг: 0 / 0
26.02.2007, 22:09
    #34356188
Bogdanov Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
RebusAВот и немогу понять, это проблемы ссылочной целостности или процедурной и как это решается.

Ссылочно это ограничение обеспечить не удастся. Либо процедурами, либо триггерами. Также надо не забыть, что циклы могут быть и большей длины чем 2.
...
Рейтинг: 0 / 0
27.02.2007, 01:15
    #34356346
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
RebusAКак избежать варианта когда Служащий1 приходится начальником Служащему2 и в тоже время Служащий2 приходится начальником Служащему1. Вот и немогу понять, это проблемы ссылочной целостности или процедурной и как это решается.
Хм. Во-первых, я бы не стал вводить такую терминологию. Есть целостность "вообще". Есть некоторые типовые виды проверок (например, ссылочная целостность) и поддерживаемые фичи для них (constraint-ы). Сейчас фич для проверки "ациклической целостности" нет, завтра их могут ввести, но странно считать, что проблема оттого перекочует в какую-то другую область.

На уровне constraint-ов эта задача имеет только весьма извратные решения, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table Подчинение ( должность_подчиненного, должность_начальника ) ;

create table Сотрудники ( сотрудник, должность_сотрудника, начальник, должность_начальника ) ;

alter table Сотрудники add foreign key ( начальник, должность_начальника )
  references Сотрудники ( сотрудник, должность_сотрудника ) ;

alter table Сотрудники add foreign key ( должность_сотрудника, должность_начальника )
  references Подчинение ( должность_подчиненного, должность_начальника ) ;
...
Рейтинг: 0 / 0
27.02.2007, 01:18
    #34356347
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
Пожалуй, добавлю, что таблицу Подчинение лучше было бы назвать например ДопустимыеПодчинения, и по смыслу это справочник, заполняемый один раз (и отсутствие циклов проверяется именно там).
...
Рейтинг: 0 / 0
27.02.2007, 10:43
    #34356750
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
> как это решается

Выбросьте нафиг все, что Вы здесь нарисовали. Постройте стандартную структуру данных для штатного расписания.

> Все это будет под Oracle

Зачем Вам Oracle, если Вы не умеете проектировать? Тренируйтесь на кошках.
...
Рейтинг: 0 / 0
27.02.2007, 10:59
    #34356798
RebusA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
Дело все в том что в моем случае, возможен вариант когда у одного потомка есть два или более предков :).
Вообщем всем большое спасибо за ответы и советы.
На этом мой вопрос не заканчивается, но это уже касается некоторых деталей реализации в оракле, так что буду писать в соответствующую ветку.
Еще раз всем спасибо.
...
Рейтинг: 0 / 0
27.02.2007, 11:08
    #34356838
RebusA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
guest_20040621> как это решается

Выбросьте нафиг все, что Вы здесь нарисовали. Постройте стандартную структуру данных для штатного расписания.

> Все это будет под Oracle

Зачем Вам Oracle, если Вы не умеете проектировать? Тренируйтесь на кошках.

Уважаемый, учится надо вам. Кто вам сказал что это штатное расписание?
И мне кажется что я не просил - "народ, сделайте за меня". Да, мне до проектировщика БД еще очень и очень далеко. Но как спроектировать обычное дерево я понимаю и стараюсь учиться.
Короче, что спорить :). Не моя вина что у вас, уважаемый guest_20040621 проблемы личного или какого-то другого характера. Да и не вас(гения от рождения) я собственно говоря спрашивал, я хотел услышать совет людей ОПЫТНЫХ или тех кто стремится таковыми стать.

Еще раз всем спасибо.
...
Рейтинг: 0 / 0
27.02.2007, 11:27
    #34356904
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отношение "предок-потомок" и циклические ссылки
Избежать только контролируя процедурно. Причем транзакции изменения таблицы emp_parents нужно сериализовать.
2 Tyo Так получится дерево а в варианте автора - сеть.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Отношение "предок-потомок" и циклические ссылки / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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