Я работаю над разработкой с более чем 700 таблицами. Мне нужно увидеть список всех связанных таблиц в данной таблице. Можете ли вы порекомендовать приложение, способное обеспечить такую вещь.
Поиск всех связанных таблиц в данной таблице
Ответ 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';