SQL Server 表未在图中显示关系

问题描述

我有很多共享密钥的表,但图中没有显示从表到表的路由。大多数表格会显示一条通往的路线,但其中很多都没有,尽管他们应该这样做。我已经检查了数据类型,我可以加入这些表,所以我想知道这是不是我必须在图表工具中做的事情来设置关联表的关系。我认为这是为图表选择表时 sql server 自动执行的操作。

有什么建议吗?

解决方法

编辑: 也可能只是您需要“刷新”图表、删除表格并将其重新添加到图表中。

原文: 如果不存在,则该关系不会显示在图中。也许您在两个具有相同名称和数据类型的表中定义了它们的键,但是您缺少显式引用(约束)。像这样:

ALTER TABLE Sales.TempSalesReason
   ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
      REFERENCES Sales.SalesReason (SalesReasonID)
      ON DELETE CASCADE
      ON UPDATE CASCADE
;

不过,您可能希望省略 ON [ACTION] CASCADE。您可以在查询中使用 JOIN 的原因是因为为了 JOIN 表不需要约束,只要数据类型允许,您可以 JOIN 任何列。您甚至可以使用没有 PK 的列进行 JOIN,但这会导致性能不佳(也是另一个主题)。

如何使用图形工具或代码参考官方文档:

https://docs.microsoft.com/en-us/sql/relational-databases/tables/create-foreign-key-relationships?view=sql-server-2016