【问题标题】:ms sql - find relational tables in databasems sql - 在数据库中查找关系表
【发布时间】:2011-06-21 12:40:05
【问题描述】:

有没有办法通过 SQL Express 2005 中的查询或 GUI 来查找数据库中表之间的关系?

然后手动在表中查找匹配的主键/外键是否有更简单的方法?

【问题讨论】:

    标签: sql tsql foreign-keys primary-key relational-database


    【解决方案1】:

    我相信您要查找的脚本来自以下链接:

    http://blog.sqlauthority.com/2006/11/01/sql-server-query-to-display-foreign-key-relationships-and-name-of-the-constraint-for-each-table-in-database/

    这是脚本:

    SELECT
    K_Table = FK.TABLE_NAME,
    FK_Column = CU.COLUMN_NAME,
    PK_Table = PK.TABLE_NAME,
    PK_Column = PT.COLUMN_NAME,
    Constraint_Name = C.CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
    INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
    INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
    INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
    INNER JOIN (
    SELECT i1.TABLE_NAME, i2.COLUMN_NAME
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
    INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
    WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
    ) PT ON PT.TABLE_NAME = PK.TABLE_NAME
    ---- optional:
    --ORDER BY 1,2,3,4
    --WHERE PK.TABLE_NAME='something'WHERE FK.TABLE_NAME='something'
    --WHERE PK.TABLE_NAME IN ('one_thing', 'another')
    --WHERE FK.TABLE_NAME IN ('one_thing', 'another')
    

    请注意,您可以在底部添加一些可选语句来限制或排序您的结果。输出将列出包含外键的表、字段的名称、主键表和它引用的字段以及给定约束的名称。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 这是很好的信息,但我需要在数据库中创建一个视图(而且我没有 Visio。)
      【解决方案3】:

      在 SSMS 中右键单击表格并选择设计。

      有一个按钮,看起来像 2 或 3 个窗口,它们之间有一条线,这显示了该表的关系。

      这将打开 ForeignKey 窗口,该窗口将显示该表与其相关的每个其他表之间的每个关系,它还将显示连接这些表的字段。

      【讨论】:

      • 显示表/视图/SP等,但不显示行名。反正有没有找到依赖于主表的行?或者这是不可能的?
      • 我不确定我是否理解,您想知道用户与 Users.AccountId = Account.Id 上的帐户相关联吗?或者您想知道用户 123 是帐户 456 的一部分吗?
      猜你喜欢
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多