Створення зв’язку (відношення) типу “один до багатьох” між таблицями бази даних Microsoft SQL Server

Створення зв’язку (відношення) типу “один до багатьох” між таблицями бази даних Microsoft SQL Server

У даній темі показано, як створювати зв’язок (відношення) між таблицями за деяким полем. Дана тема базується на знаннях попередніх тем:


Зміст



Умова задачі

Задано базу даних Microsoft SQL Server. База даних розміщується у файлах “MyDatabase.mdf” та “MyDataBase.ldf”. Завантажити архів з готовими для роботи файлами бази даних можна тут.

У базі даних задано дві таблиці з іменами Source та Emission. Таблиця Source визначає джерело забруднених викидів. Таблиця Emission визначає час викидів та кількість забруднених викидів, які були сформовані джерелом.

Структура таблиць наступна.

Таблиця Source.

Таблиця Emission

Використовуючи засоби системи Microsoft Visual Studio необхідно реалізувати зв’язок (відношення) “один до багатьох” між таблицями Source та Emission за полем ID_Source.

Виконання

1. Завантаження Microsoft Visual Studio

Завантажити систему візуальної розробки додатків Microsoft Visual Studio.

2. Створення/підключення бази даних

На цьому кроці треба підключити (або створити) готову базу даних “MyDataBase.mdf”, яка складається з двох файлів:

  • файл “MyDataBase.mdf”;
  • файл “MyDataBase.ldf”.

Архів з файлами можна завантажити тут.

Після підключення вікно Server Explorer матиме вигляд, як показано на рисунку 1.

Server Explorer база данихРис. 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).

Після виконаних дій можна створювати зв’язок між таблицями.

Visual Studio опція збереження змінРис. 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.

Visual Studio команда таблицяРис. 3. Команда “Open Table Definition”

SQL Server первинний ключ таблицяРис. 4. Встановлення первинного ключа в таблиці Source

SQL Server поле таблиця первинний ключРис. 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”.

Visual Studio команда діаграмаРис. 6. Команда додавання нової діаграми

база даних таблиця діаграмаРис. 7. Вікно “Add Table” додавання таблиць у діаграму

Після виконаних дій вікно діаграми буде мати вигляд, як показано на рисунку 8. Поки що таблиці не мають зв’язку між собою

SQL Server таблиця база данихРис. 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), яке є зовнішнім ключем.

база даних SQL Server відношення таблицяРис. 9. Вікно налаштування параметрів зв’язку (відношення) між таблицями

У вікні “Foreign Key Relationship” налаштовуються властивості з’єднання. Можна залишити все як є.

SQL Server властивість відношення таблицяРис. 10. Налаштування властивостей з’єднання FK_Emission_Source

4.4. Діаграма зв’язку

Після створення зв’язку вікно діаграми буде мати вигляд, як показано на рисунку 11.

SQL Server діаграма відношення таблицяРис. 11. Вигляд діаграми після встановлення відношення (зв’язку) між таблицями Source та Emission

Як видно з рисунку, кінець з’єднання (відношення), що примикає до таблиці Source має вигляд ключа. А кінець з’єднання, що примикає до таблиці Emission має вигляд знаку нескінченість .

Це означає, що в таблиці Source числове значення в полі ID_Source може зустрічатись тільки один раз. А в таблиці Emission числове значення ID_Source може повторюватись (нескінчену кількість разів). Таким чином можна представити будь-яку множину унікальних об’єктів, що мають властивість повторюватись у деякій предметній області.

Після закриття діаграми її потрібно зберегти під деяким іменем, наприклад Diagram1 (рисунок 12). Система видасть відповідне вікно уточнення.

база даних SQL Server діаграмаРис. 12. Задавання імені для діаграми

Також, система може вивести вікно збереження таблиць в базу даних (рисунок 13), оскільки між таблицями вже існує відношення (зв’язок). У цьому вікні потрібно вказати “Yes”.

SQL Server таблиця зв’язокРис. 13. Вікно збереження таблиць в базі даних у зв’язку зі змінами

Після виконаних дій діаграма Diagram1 відобразиться у вікні Server Explorer (рис. 14). З допомогою команд контекстного меню є можливість керувати діаграмою. Так, наприклад, команда “Design Database Diagram” переводить діаграму в режим редагування, в якому можна змінювати зв’язки між таблицями бази даних.

SQL Server зв’язок таблиця редагуванняРис. 14. Команда редагування зв’язків (відношень) між таблицями

5. Програмне керування даними

Після створення зв’язку (відношення) між таблицями можна створювати проект, який буде управляти даними в таблицях. Але це вже зовсім інша тема.


Схожі теми