Создание связи между таблицами на диаграмме (визуальные инструменты для баз данных)
Можно создавать связи между столбцами разных таблиц в конструкторе диаграмм, перетаскивая столбцы между таблицами.
Графическое создание связи
- В конструкторе баз данных щелкните селектор строк для одного или более столбцов базы данных, которые необходимо связать со столбцом в другой таблице.
- Перетащите выбранные столбцы в связанную таблицу.
- Отображаются два диалоговых окна: Связь по внешнему ключу и Таблицы и столбцы, второе отображается на переднем плане.
- Имя связи устанавливается системой в формате FK_локальная_таблица_таблица_внешнего_ключа. Можно изменить это значение.
- Убедитесь, что Таблица первичного ключа правильно задает таблицу.
- Сетка содержит локальные столбцы и соответствующие им внешние столбцы. Можно добавить или удалить столбцы таблицы, либо изменить сопоставления.
- Нажмите кнопку ОК. Открывается диалоговое окно Связь по внешнему ключу . Выбранная связь отображает созданную связь.
- Измените свойства связи в сетке.
- Нажмите кнопку OК , чтобы создать связь. Конструктор баз данных отображает связь между выбранными столбцами.
Создание связи (отношения) типа «один ко многим» между таблицами базы данных Microsoft SQL Server
Создание связи (отношения) типа «один ко многим» между таблицами базы данных Microsoft SQL Server
В данной теме показано, как создавать связь (отношение) между таблицами по некоторому полю. Данная тема базируется на знаниях предыдущих тем:
- Пример создания/подключения локальной базы данных Microsoft SQL Server , которая размещается в «*.mdf» -файле;
- Создание таблицы в базе данных MS SQL Server;
- Создание поля-счетчика в таблицах базы данных MS SQL Server.
Поиск на других ресурсах:
Условие задачи
Дана база данных Microsoft SQL Server . База данных размещается в файлах «MyDatabase.mdf» и «MyDatabase.ldf» . Загрузить архив с готовыми для работы файлами базы данных можно здесь.
В базе данных заданы две таблицы с именами Source и Emission. Таблица Source определяет источник загрязненных выбросов. Таблица Emission определяет время выбросов и число загрязненных выбросов, которое было сформировано источником.
Структура таблиц следующая.
| Название поля | Тип данных | Комментарий |
| ID_Source | int | Ключевое поле, уникальное поле (счетчик), первичный ключ |
| Name | char[50] | Название, строка символов |
| Address | char[100] | Адрес, строка символов |
| Название поля | Тип данных | Комментарий |
| ID_Emission | int | Ключевое поле, уникальное поле (счетчик) |
| ID_Source | int | Внешний ключ, значение Source.ID_Source |
| count | float | Количество выбросов |
| Text | char[100] | Комментарий |
| date | datetime | Дата и время выбросов |
Используя средства системы Microsoft Visual Studio необходимо реализовать связь (отношение) «один ко многим» между таблицами Source и Emission по полю ID_Source.
Выполнение
1. Запуск Microsoft Visual Studio
Запустить систему визуальной разработки приложений Microsoft Visual Studio .
2. Создание/подключение базы данных
На этом шаге нужно подключить (или создать) готовую базу данных «MyDataBase.mdf» , которая состоит из двух файлов:
- файл «MyDataBase.mdf» ;
- файл «MyDataBase.ldf» .
После подключения окно Server Explorer будет иметь вид, как показано на рисунке 1.
Рис. 1. Окно Server Explorer после подключения базы данных «MyDataBase.mdf»
3. Поля ID_Source и ID_Emission
Следует отметить, что поля ID_Source и ID_Emission есть уникальными счетчиками. Такие поля используются в базах данных для обеспечения уникальности каждой записи таблицы.
Поле ID_Source таблицы Source есть первичным ключом.
Подробный пример создания уникального поля, которое есть счетчиком, описывается в статье:
4. Установление связи между таблицами
4.1. Снятие опции «Prevent saving changes that require table re-creation»
По умолчанию, система MS Visual Studio запрещает сохранение изменений, которые требуют повторного создания таблиц. Чтобы разрешить вносить изменения в таблицы нужно настроить (снять выделение) опцию
Prevent saving changes that require table re-creation
Для этого нужно выполнить следующую последовательность шагов:
- перейти в меню Tools главного меню MS Visual Studio ;
- в меню Tools выбрать команду «Options…» . В результате откроется окно «Options» (рисунок 2);
- в левой части окна «Options» последовательно раскрыть вкладки «Database Tools» -> «Table and Database Designers» (рисунок 2);
- выбрать элемент «Table and Diagram Options» . В результате в правой части окна активируется группа элементов «Table Options» ;
- в группе «Table Options» снять пометку из опции «Prevent saving changes that require table re-creation» (рисунок 2) и подтвердить выбор (кнопка OK ).
После выполненных действий можно создавать связь между таблицами.

Рис. 2. Опция «Prevent saving changes that require table re-creation»
4.2. Установление первичного ключа ( Primary Key ) в таблице Source
Как видно из структуры таблиц (рисунок 1) общим для таблиц есть поле ID_Source. Связь между таблицами будет осуществляться по этому полю.
В таблице Source нужно установить поле ID_Source как «Первичный ключ» ( Primary Key ).
Чтобы установить первичный ключ нужно выполнить такие действия:
- перейти в режим редактирования таблицы Source выбором команды «Open Table Definition» (рисунок 3). Откроется окно редактирования таблицы;
- сделать клик правой кнопкой «мышки» на строке ID_Source и в контекстном меню выбрать команду «Set Primary Key» . В результате поле ID_Source будет обозначено как поле, которое есть первичным ключом (рисунок 5);
- сохранить и закрыть таблицу Source .

Рис. 3. Команда «Open Table Definition»

Рис. 4. Установление первичного ключа в таблице Source

Рис. 5. Поле ID_Source в таблице Source после установления первичного ключа
В таблице Emission не обязательно устанавливать первичный ключ.
4.3. Создание связи между таблицами по полю ID_Source
Для создания связей между таблицами используется элемент “Database Diagrams» базы данных «MyDataBase.mdf» . Чтобы создать связь между таблицами нужно выполнить следующие действия:
- с помощью клика правой кнопкой «мышки» вызвать контекстное меню (рисунок 6). В меню выбрать команду «Add New Diagram» . В результате, база данных создаст пустую диаграмму. Будет выведено окно «Add Table» добавления таблиц в диаграмму (рисунок 7);
- поочередно выбрать нужные таблицы (Source, Emission) и подтвердить выбор нажатием на кнопке «Add Table» ;
- закрыть окно «Add Table» .

Рис. 6. Команда добавления новой диаграммы

Рис. 7. Окно «Add Table» добавления таблиц в диаграмму
После выполненных действий окно диаграммы будет иметь вид, как показано на рисунке 8. Пока что таблицы не имеют связи между собой.

Рис. 8. Таблицы Source и Emission
Чтобы начать устанавливать отношение между таблицами, нужно сделать клик на поле ID_Source таблицы Source, а потом (не отпуская кнопку мышки) перетянуть его на поле Source таблицы Emission .
В результате последовательно откроются два окна: Tables and Columns (рисунок 9) и Foreign Key Relationship (рисунок 10), в которых нужно оставить все как есть и подтвердить свой выбор на кнопке OK .
В окне «Tables and Columns» есть такие поля (рисунок 9):
- поле «Relationship name» . В этом поле задается имя объекта, который символизирует соединение (отношение) между таблицами. С помощью этого объекта (имени) можно управлять некоторыми свойствами связи (отношения). В нашем случае соединение (отношение) имеет название FK_Emission_Source ;
- поле «Primary key table:» . Это поле задает таблицу, которая есть первичной по отношению к другой таблице. В нашем случае первичной есть таблица Source. Поле, которое служит первичным ключом таблицы имеет название ID_Source ;
- поле «Foreign key table:» указывает название таблицы ( Emission ) и поля в этой таблице ( ID_Source ), которое есть внешним ключом.

Рис. 9. Окно настройки параметров связи (отношения) между таблицами
В окне «Foreign Key Relationship» настраиваются свойства соединения. Можно оставить все как есть.

Рис. 10. Настройка свойств соединения FK_Emission_Source
4.4. Диаграмма связи
После создания связи окно диаграммы будет иметь вид, как показано на рисунке 11.

Рис. 11. Вид диаграммы после установки отношения (связи) между таблицами Source и Emission
Как видно из рисунка, конец соединения (отношения), что примыкает к таблице Source имеет вид ключа. А конец соединения, которое примыкает к таблице Emission имеет вид знака бесконечность ∞ .
Это означает, что в таблице Source числовое значение в поле ID_Source может встречаться только один раз. А в таблице Emission числовое значение ID_Source может повторяться (бесконечное количество раз). Таким образом можно представить любое множество уникальных объектов, которые имеют свойство повторяться в некоторой предметной области.
После закрытия диаграммы ее нужно сохранить под некоторым именем, например Diagram1 (рисунок 12). Система выдаст соответствующее окно уточнения.

Рис. 12. Задание имени для диаграммы
Также, система может вывести окно сохранения таблиц в базе данных (рисунок 13), поскольку между таблицами уже существует отношение (связь). В этом окне нужно указать «Yes» .

Рис. 13. Окно сохранения таблиц в базе данных в связи с изменениями
После выполненных действий, диаграмма Diagram1 отобразится в окне Server Explorer (рис. 14). С помощью команд контекстного меню есть возможность управлять диаграммой. Так, например, команда «Design Database Diagram» переводит диаграмму в режим редактирования, в котором можно изменять связи между таблицами базы данных.

Рис. 14. Команда редактирования связей (отношений) между таблицами
5. Программное управление данными
После создания связи (отношения) между таблицами можно создавать проект, который будет управлять данными в таблицах. Но это уже совсем другая тема.
Похожие темы
- 001 — Пример создания/подключения локальной базы данных Microsoft SQL Server , которая размещается в «*.mdf» -файле
- 002 — Пример создания новой таблицы в локальной базе данных Microsoft SQL Server , размещенной в «*.mdf» -файле
- 003 — Создание поля автоинкремента (счетчика) в таблице базы данных Microsoft SQL Server , которая размещается в «*.mdf» -файле
- 005 — Пример создания «*.mdf» файла локальной базы данных Microsoft SQL Server в Microsoft Visual Studio
- 006 — Строка соединения с базой данных. Пример использования в приложениях
Как правильно сделать связь между таблицами?
Есть две таблицы: Заказ и Клиенты их нужно каким-то образом обзавести связями. 1 Клиент — много заказов (если брать логическую модель).
Атрибуты таблицы Клиент:
ID Клиента (PK)
Тип Клиента
Контактный номер
Атрибуты таблицы Заказ:
ID Заказа (PK)
Тип заказа
Наименование
Дата начала
Дата окончания
Статус
Для того, чтобы соединить эти две таблицы нужны одинаковые поля.
Теперь сам вопрос.
Надо чтобы в таблице заказа отображалось ФИО клиента.
Если я в таблицу заказ добавлю как вторичный ключ ID клиента (тип поля которого int), то в последующем выводе у меня будет отображаться ID клиента, что затруднит чтение таблицы.
Как правильно это сделать?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как сделать связь между таблицами в базе данных?
Добрый вечер. Начал изучать основы баз данных. Стоит такая задача: "Создать базу данных Test c.
Как посмотреть связь между таблицами
Здравствуйте. Есть задания: конвектировать БД из MS Access в SQL Server Management Studio. Я.
Как посмотреть связь между таблицами
Здравствуйте. Как посмотреть связь между таблицами в sql server management? Как на картинке ниже
Как создать связь между двумя таблицами из разных баз данных?
Здравствуйте, Друзья У меня есть вопрос: как создать связь (отношения) между двумя таблицами из.
Связь между таблицами
Привет всем. мне необходимо создать бд, которая дает возможность автоматизировать контроль за.
Полная копия таблицы sql
или «кастомной» процедурой sp_GetDDL (исходник процедуры по ссылке. ):
exec sp_GetDDL YourTableName -- or exec sp_GetDDL 'schemaname.tablename' -- or exec sp_GetDDL [schemaname].[tablename]
Отслеживать
ответ дан 15 авг 2017 в 9:27
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
Эм. У меня нет такой хранимки sp_GetDDL. SQL Server 2012
15 авг 2017 в 9:50
@ВиталийЯндулов У вас её и не должно быть, она у dbo .
15 авг 2017 в 10:16
@0xdb Ни exec sp_GetDDL YourTableName, ни exec dbo.sp_GetDDL YourTableName не выполняются. «Could not find stored procedure».
15 авг 2017 в 11:08
@ВиталийЯндулов, это не встроенная процедура — я добавил информацию в ответ.
15 авг 2017 в 11:19
@MaxU Спасибо большое! Хотя, остался вопрос. Копирует не один в один. Почему-то изменились значки индексов. Старые — в виде дерево объектов (один вверху, три внизу), а новые — в виде ключиков. Странно это -.- Зато скопировались все статистики — уже хорошо.
