Створення зв’язку (відношення) типу “один до багатьох” між таблицями бази даних Microsoft SQL Server
У даній темі показано, як створювати зв’язок (відношення) між таблицями за деяким полем. Дана тема базується на знаннях попередніх тем:
- Приклад створення/підключення локальної бази даних Microsoft SQL Server, яка розміщується в “*.mdf”-файлі;
- Створення таблиці в базі даних MS SQL Server;
- Створення поля-лічильника в таблицях бази даних MS 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.
Рис. 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 – Рядок з’єднання з базою даних Connection String. Приклад використання у програмі