2011-06-21 43 views
1

有沒有辦法通過查詢或SQL Express 2005中的GUI來查找數據庫中的表之間的關係?ms sql - 在數據庫中查找關係表

其他然後手動查找表中匹配的主鍵/外鍵有沒有更簡單的方法來做到這一點?

回答

0

我相信你正在尋找的腳本來源於以下鏈接:

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') 

請注意,您可以在底部添加一些可選語句來限制或排序結果。輸出將列出包含外鍵,該字段的名稱,主鍵表和它所引用的字段以及給出約束的名稱的表。

0

在SSMS中右鍵單擊一個表並選擇設計。

有一個看起來像2或3個窗口的按鈕,它們之間有一條線,它顯示了該表的關係。

enter image description here

這將打開窗口的ForeignKey將顯示錶,它涉及到所有其他表之間的每個關係,它也將顯示哪些字段連接這些表。

+0

顯示錶/視圖/ SP等,但不顯示行名稱。無論如何只要找到依賴於主表的行?或者這是不可能的? – tdjfdjdj

+0

我不確定我是否理解,您是否想知道用戶與Users.AccountId = Account.Id上的帳戶綁定?或者你想知道用戶123是帳戶456的一部分? – taylonr