了解 SQL Server 中所有数据库表之间的关系

2023-09-20数据库问题
2

本文介绍了了解 SQL Server 中所有数据库表之间的关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I wish to all know how the tables in my database are related to each other (i.e PK/FK/UK) and hence i created a database diagram of all my tables in SQL Server. The diagram that was created was not easily readable and had to scroll (horizontally and sometimes vertically) to see the table on the other end.

简而言之,当涉及到了解许多表之间的关系时,SQL 的数据库图不是 UI 友好的.

In short SQL's db diagram are not UI friendly when it comes to knowing relationships between many tables.

我的(简单)问题:有没有像数据库图这样的东西可以做数据库图所做的事情,但是好"的方式?

My (simple) Question: Is there something like database diagram which can do what db diagram did but in "good" way?

推荐答案

有时,文本表示也可能有所帮助;使用系统目录视图上的此查询,您可以获得所有 FK 关系的列表以及如何链接两个表(以及它们对哪些列进行操作).

Sometimes, a textual representation might also help; with this query on the system catalog views, you can get a list of all FK relationships and how the link two tables (and what columns they operate on).

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 中,您可以根据父表、引用表或其他任何内容进行切片和切块.

Dump this into Excel, and you can slice and dice - based on the parent table, the referenced table or anything else.

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

I find visual guides helpful - but sometimes, textual documentation is just as good (or even better) - just my 2 cents.....

这篇关于了解 SQL Server 中所有数据库表之间的关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

按天分组的 SQL 查询
SQL query to group by day(按天分组的 SQL 查询)...
2024-04-16 数据库问题
77

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

在 Group By 查询中包含缺失的月份
Include missing months in Group By query(在 Group By 查询中包含缺失的月份)...
2024-04-16 数据库问题
12