powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посмотреть связи между таблицами
11 сообщений из 11, страница 1 из 1
Посмотреть связи между таблицами
    #39064493
e_dariya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Извините, если не в тот раздел.
Есть база данных oracle с неимоверным количеством таблиц. Не могу найти через какие промежуточные пункты связать две таблички. Есть ли какая-нибудь схема связей, где можно было бы все это посмотреть?
Работаю в plsql девелопере. Нужны ли какие-то особенные права доступа, чтоб это видеть.
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39064643
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не в тот раздел. Составить запрос, который покажет все возможные пути между парой таблиц, в принципе нетрудно (начало-конец задаются в строке 2):

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SQL> with params as
  2   (select 'AUTH_POINT' start_name, 'PROC_GBOOK' finish_name from dual),
  3  keys as
  4   (select table_name, constraint_name
  5      from dba_constraints
  6     where constraint_type in ('P', 'U')),
  7  refs as
  8   (select table_name, r_constraint_name
  9      from dba_constraints
 10     where constraint_type = 'R'),
 11  links as
 12   (select r.table_name, k.table_name r_table_name
 13      from refs r, keys k
 14     where r.r_constraint_name = k.constraint_name),
 15  tree as
 16   (select params.start_name || sys_connect_by_path(links.table_name, ' / ') path
 17      from links, params
 18     start with links.r_table_name = params.start_name
 19    connect by nocycle links.r_table_name <> params.finish_name
 20           and links.r_table_name = prior links.table_name)
 21  select distinct tree.*
 22    from tree, params
 23   where path like start_name || ' / % / ' || finish_name;
 
PATH
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPROCGBOOKSUBJECTS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / RUNNING_PROCESS / WAITING_FOR_STEP / PROC_GBOOK
 
11 rows selected
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39064786
e_dariya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer,
Спасибо!
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39076581
e_dariya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer, сколько времени выполняется?
что-то у меня не получается..
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39076618
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e_dariya, ну, с тридцатого сентября уже должен был выполниться.
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39076682
e_dariya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer, :) все никак не сложилось у меня довести его до конца. или ничего не возвращает, или выполняется уже больше часа
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39076705
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай мыло, где-то была корявая приблуда под винду для оракла, может она чем поможет )
По идее должна строить дерево связей:
- выводит имя таблиц и по каким полям связаны по FK
- строит или от указанной таблицы или к указанной таблице или сразу в оба направления
- можно выставлять глубину просмотра (точно не помню, но вроде имеется в виду от каждого узла) - дабы тоже слишком глубоко не лопатить
- отмечает циклические ссылки
- при необходимости выводит каменты к таблицам (если они есть), про каменты к полям не помню, давно дело было
А так есть вроде как специальный нормальный софт для таких дел.
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39076741
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e_dariya,

SQL Developer строит диаграмки и показывает связи.
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39077210
e_dariya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39077547
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e_dariyasoftwarer, :) все никак не сложилось у меня довести его до конца. или ничего не возвращает, или выполняется уже больше часа
Не совсем понял, Вы затрудняетесь определить, какой из вариантов имеет место? У меня он выполняется 0.2 - 0.3 секунды.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 
 
SQL> set linesize 1000
SQL> column path format a300
SQL> set timing on

SQL> with params as
  2   (select 'AUTH_POINT' start_name, 'PROC_GBOOK' finish_name from dual),
  3  keys as
  4   (select table_name, constraint_name
  5      from dba_constraints
  6     where constraint_type in ('P', 'U')),
  7  refs as
  8   (select table_name, r_constraint_name
  9      from dba_constraints
 10     where constraint_type = 'R'),
 11  links as
 12   (select r.table_name, k.table_name r_table_name
 13      from refs r, keys k
 14     where r.r_constraint_name = k.constraint_name),
 15  tree as
 16   (select params.start_name || sys_connect_by_path(links.table_name, ' / ') path
 17      from links, params
 18     start with links.r_table_name = params.start_name
 19    connect by nocycle links.r_table_name <> params.finish_name
 20           and links.r_table_name = prior links.table_name)
 21  select distinct tree.*
 22    from tree, params
 23   where path like start_name || ' / % / ' || finish_name;
 
PATH
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPROCGBOOKSUBJECTS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / OSSPDESCRRESPONSIBLE / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / WAITING_FOR_STEP / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / PROCESS_STEP / EXIT_CODES / WAITING_FOR_STEP / RUNNING_PROCESS / PROC_GBOOK
AUTH_POINT / SERVICES / REBILL_DILER_DOG / ATTRIBUTES / PDESCR / RUNNING_PROCESS / WAITING_FOR_STEP / PROC_GBOOK
 
11 rows selected
 
Executed in 0,234 seconds
 
SQL> select count(*) from dba_tables;
 
  COUNT(*)
----------
      5828
 
SQL> select constraint_type, count(*) from dba_constraints group by constraint_type order by 2 desc;
 
CONSTRAINT_TYPE   COUNT(*)
--------------- ----------
C                    14733
R                     2759
P                     2309
U                      658
O                      597
V                      349
?                        2
 
7 rows selected
...
Рейтинг: 0 / 0
Посмотреть связи между таблицами
    #39078309
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZive_dariya,

SQL Developer строит диаграмки и показывает связи.и dbforge
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посмотреть связи между таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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