MS SQL - найти реляционные таблицы в базе данных - PullRequest
1 голос
/ 21 июня 2011

Есть ли способ найти связь между таблицами в базе данных с помощью запроса или графического интерфейса в SQL Express 2005?

Кроме ручного поиска соответствующих первичных / внешних ключей в таблицах, есть ли более простой способ сделать это?

Ответы [ 3 ]

0 голосов
/ 21 июня 2011

Я просто импортирую определения в Visio. Может быть, это поможет ...

http://office.microsoft.com/en-us/visio-help/reverse-engineer-an-existing-database-into-a-database-model-HA010115485.aspx

0 голосов
/ 21 июня 2011

Я полагаю, что скрипт, который вы ищете, происходит по следующей ссылке:

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 голосов
/ 21 июня 2011

В SSMS щелкните правой кнопкой мыши по таблице и выберите дизайн.

Есть кнопка, которая выглядит как 2 или 3 окна с линией между ними, это показывает отношения для этой таблицы.

enter image description here

Это откроет окно ForeignKey, в котором будут показаны все отношения между этой таблицей и любой другой таблицей, к которой она относится, а также, какие поля соединяют эти таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...