Подтвердить что ты не робот

Поиск всех связанных таблиц в данной таблице

Я работаю над разработкой с более чем 700 таблицами. Мне нужно увидеть список всех связанных таблиц в данной таблице. Можете ли вы порекомендовать приложение, способное обеспечить такую ​​вещь.

4b9b3361

Ответ 1

Если ваша база данных поддерживает представления схемы информации (большинство из них), вы можете запустить этот запрос:

SELECT
    c.CONSTRAINT_NAME,
    cu.TABLE_NAME AS ReferencingTable, cu.COLUMN_NAME AS ReferencingColumn,
    ku.TABLE_NAME AS ReferencedTable, ku.COLUMN_NAME AS ReferencedColumn
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS c
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cu
ON cu.CONSTRAINT_NAME = c.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ku
ON ku.CONSTRAINT_NAME = c.UNIQUE_CONSTRAINT_NAME

Это приведет к отображению списка всех ссылочных ограничений (внешних ключей), таблицы/столбца источника (ссылки), а также таблицы/столбца первичного ключа (ссылки).

Если вы хотите увидеть ссылки на определенную таблицу, просто добавьте:

WHERE ku.TABLE_NAME = 'SomeTable'

Ответ 2

Простое и простое решение для получения связанных таблиц данной таблицы с использованием встроенной процедуры.

exec sp_fkeys 'Your_PK_TABLE_NAME'

Ответ 3

В зависимости от продукта базы данных вы можете запросить представления INFORMATION_SCHEMA следующим образом:

Select FK.TABLE_SCHEMA, FK.TABLE_NAME
From INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS As RC
    Join INFORMATION_SCHEMA.TABLE_CONSTRAINTS As PK
        On PK.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME
    Join INFORMATION_SCHEMA.TABLE_CONSTRAINTS As FK
        On FK.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
Where PK.TABLE_SCHEMA = 'dbo'
    And PK.TABLE_NAME = '<target table name>'   

Ответ 4

MS Visio Pro может отлично справиться с обратным проектированием схемы db для различных баз данных (через ODBC) и предоставляет диаграмму что очень гибко.

Осторожно: независимо от того, какую систему вы используете, вы не хотите забирать все 700 таблиц одновременно. Попробуйте создать несколько диаграмм, сгруппированных и разделенных логически. Надеемся, что в такой большой базе данных будет много таких групп.

Ответ 5

Вы можете попробовать следующее:

SELECT *
FROM
  KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'your_table_name'
AND REFERENCED_COLUMN_NAME = 'your_column_id'
AND TABLE_SCHEMA = 'your_database_name';