如何找到多个表之间的链接?

时间:2015-03-13 11:57:47

标签: sql sql-server sql-server-2008

我有一个数据库表的列表。他们有相互关联的(pk-fk)关系由逻辑维护。在数据库级别没有这样的联系。是否有任何工具或任何进程来识别链接。这将是减少手动任务。

其实我想要什么是主键(pk)和外键(fk)以及链接的表是什么。

1 个答案:

答案 0 :(得分: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