我希望大家都知道我数据库中的表是如何相互关联的(即PK/FK/UK),因此我在SQL Server中创建了我所有表的数据库关系图.创建的图表不容易阅读,必须滚动(水平,有时垂直)才能看到另一端的表格.

简而言之,在了解多个表之间的关系时,SQL的db图对UI不友好.

我(简单)的问题是:有没有像数据库图这样的东西,可以像数据库图那样,以"好"的方式完成任务?

推荐答案

有时,文本表示也可能有所帮助;通过对系统目录视图的查询,可以获得所有FK关系的列表,以及链接两个表的方式(以及它们操作的列).

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

将其转储到Excel中,您可以根据父表、引用表或其他任何内容进行切片和骰子.

我觉得视觉指南很有帮助——但有时,文本文档也一样好(甚至更好)——只有我的2美分.....

Sql相关问答推荐

Postgresql:从jsons数组到单个id索引的json

SUM(条件)在Oracle?

对于表A中的每一行,更新表B中与金额有关的行

为什么Prisma生成唯一索引,而不是基于方案上的唯一列约束?

在甲骨文中查找前一个星期一的S日期

Access 365将文本转换回BigInt

为什么我的SQL标量函数有时会抛出";子查询返回多个值.这是不允许的.

Oracle分层查询-两条路径在末尾合并为一条

将两列相加为同一表中的行的查询

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

排除具有部分匹配条件的记录

如何使子查询在UPDATE语句期间获得最新更新

在SQL中转换差异表的多列

SQL中相同表内的VLOOKUP等价

SQL OR子句如何在JOINON查询中工作?

获取主表条目,其中最新的辅助条目是 6 个月前

从另一个没有公共键的表中获取值来加入

获取所有用户的第一次和最后一次发货以及到达日期

As400 (IBM i) SQL 表 QSYS2.SYSTABLES 上的元数据

奇怪的甲骨文行为