Как посмотреть связи таблиц sql
Перейти к содержимому

Как посмотреть связи таблиц sql

  • автор:

Как получить все связи между всеми таблицами в SQL Server?

Есть ли способ получения связей между таблицами в SqlServer? Я пробовал использовать SELECT INFORMATION_SCHEMA.KEY_COLUMN_USAGE , так как этот способ работал в MySQL, но в SQLServer KEY_COLUMN_USAGE не имеет атрибутов REFERENCED_COLUMN_NAME и REFERENCED_TABLE_NAME .

Отслеживать

задан 25 мая 2021 в 18:12

195 9 9 бронзовых знаков

Например, EXEC sp_fkeys ‘TableName’ docs.microsoft.com/ru-ru/sql/relational-databases/… А вообще в базе sys есть дофига интересных таблиц.

25 мая 2021 в 18:19

select * from sys.foreign_keys

Просмотр зависимостей таблицы

Зависимости таблицы можно просмотреть в SQL Server с помощью SQL Server Management Studio или Transact-SQL.

Разрешения

Требуется VIEW DEFINITION разрешение на базу данных и SELECT разрешение sys.sql_expression_dependencies для базы данных. По умолчанию SELECT разрешение предоставляется только членам предопределенной роли базы данных db_owner . Когда SELECT и VIEW DEFINITION разрешения предоставляются другому пользователю, участник может просматривать все зависимости в базе данных.

Использование SQL Server Management Studio

Просмотр объектов, от которых зависит таблица
  1. В Обозревателе объектовразверните узел Базы данных, разверните саму базу данных, а затем разверните узел Таблицы.
  2. Щелкните таблицу правой кнопкой мыши и выберите пункт «Просмотр зависимостей«.
  3. В диалоговом окне Зависимости объектоввыберите либо Объекты, зависящие от, либо Объекты, от которыхзависит от.
  4. Выберите объект в сетке Зависимости . Тип объекта (например, «Триггер» или «Хранимая процедура») появится в поле Тип .
  • Просмотр зависимостей с помощью зависимостей обозреватель объектов> View не поддерживается в Azure Synapse Analytics, вместо этого используйте sys.sql_expression_dependencies. Пулы SQL Azure Synapse Analytics поддерживают таблицы, представления, отфильтрованные статистические данные и типы хранимых процедур Transact-SQL из этого списка. Сведения о зависимости создаются и поддерживаются только для таблиц, представлений и отфильтрованной статистики.

Использование Transact-SQL

Просмотр объектов, зависящих от таблицы
  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.
  2. На стандартной панели выберите пункт Создать запрос.
  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.
USE AdventureWorks2022; GO SELECT * FROM sys.sql_expression_dependencies WHERE referencing_id = OBJECT_ID(N'Production.vProductAndDescription'); GO 
Просмотр зависимостей таблицы
  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.
  2. На стандартной панели выберите пункт Создать запрос.
  3. Следующий пример возвращает объекты, которые зависят от таблицы Production.Product . Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.
USE AdventureWorks2022; GO SELECT * FROM sys.sql_expression_dependencies WHERE referenced_id = OBJECT_ID(N'Production.Product'); GO 

Связанный контент

Как посмотреть связи таблиц sql

Для просмотра связей между таблицами в SQL можно использовать системную таблицу INFORMATION_SCHEMA . INFORMATION_SCHEMA содержит метаданные о базе данных, включая информацию о таблицах, столбцах и связях.

Чтобы просмотреть связи между таблицами, можно использовать запрос следующего вида:

SELECT tc.constraint_name, tc.table_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name='имя_таблицы'; 

Здесь имя_таблицы — это имя таблицы, связи которой вы хотите просмотреть.

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

Как просмотреть связи таблицы в SQL?

Есть очень сложная и запутанная БД. Нужно просмотреть с какими таблицами связана целевая таблица. Как это можно сделать не зная их имен?

Очень желательно чтобы это было в удобной визуальной форме.

Интересен вариант решения для MySQL и PostgresSQL

  • Вопрос задан более трёх лет назад
  • 5608 просмотров

Комментировать
Решения вопроса 1
beduin01 @beduin01 Автор вопроса
Решил вопрос с помощью DbShema. Очень рекомендую.
Ответ написан более трёх лет назад
golshansky @golshansky
Подскажите пожалуйста как, я что-то не разобрался.
beduin01 @beduin01 Автор вопроса
golshansky: это приложение такое, скачайте его и откройте в нем БД.
golshansky @golshansky

beduin01: да я понял что это приложение))
Спасибо уже сам разобрался, всё круто, спасибо за наводку. Триальной версии Navicat Data Modeler мне с головой хватило, всё красиво нарисовала.

Ответы на вопрос 1

Rsa97

Для правильного вопроса надо знать половину ответа

Если связи организованы как внешние ключи, то в MySQL Workbench есть Reverse Engeneer, который на EER-диаграмме их показывает, в Navicat скорее всего тоже. Если связи были только в голове разработчика, значит смотрите все таблицы и по названиям полей пытаетесь догадаться, что есть что.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *