2015-03-13 4 views
2

У меня есть список таблиц базы данных. Они взаимосвязаны (pk-fk) отношения поддерживаются логикой. На уровне базы данных такой связи нет. Есть ли какой-либо инструмент или какой-либо процесс для идентификации связи. много ручной задачи.Как найти связь между несколькими таблицами?

На самом деле, я хочу, какие первичные ключи (pk) и внешний ключ (fk) и какие таблицы связаны.

+2

В системах с которыми я связан, отношения с внешними ключами имеют очень четкую схему именования, которая делает отношения очевидными. –

ответ

0

Вы можете проверить Getting started with SQL Server database diagrams. Также есть инструмент SchemaCrawler, который вы можете использовать, чтобы найти связь между таблицами

Также вы можете использовать этот запрос, который сообщит ссылку на ваши таблицы:

SELECT 
    fk.name 'FK Name', 
    tp.name 'Parent table', 
    cp.name, cp.column_id, 
    tr.name 'Refrenced table', 
    cr.name, cr.column_id 
FROM 
    sys.foreign_keys fk 
INNER JOIN 
    sys.tables tp ON fk.parent_object_id = tp.object_id 
INNER JOIN 
    sys.tables tr ON fk.referenced_object_id = tr.object_id 
INNER JOIN 
    sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id 
INNER JOIN 
    sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id 
INNER JOIN 
    sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id 
ORDER BY 
    tp.name, cp.column_id 

Source

+0

Он предоставит метаданные о базе данных. Но проблема в том, что в базе данных у меня нет fk (в логике программирования у меня есть отношения). У меня есть только pk в базе данных. Так как это поможет мне. Соберите меня, если я Неправильно. –

+0

SchemaCrawler способен вызывать отношения внешних ключей, даже если они не выражают отношения внешних ключей в базе данных. –