Теорія:

Зв’язування таблиць
Щоб усунути дублювання даних, пришвидшити їх опрацювання, між таблицями реляційної бази даних, як правило, установлюють зв’язки  Наприклад, у базі даних «Зоопарк» можуть бути окремі таблиці по наявних тваринах,  по видах тварин, по їжі, якою слід забезпечити тварин тощо  Дані в них потрібно узгодити, для чого і використовують зв’язки між таблицями.  
 
Для створення зв'язків необхідно встановити відповідність величин однієї таблиці величинам з іншої таблиці. Зв'язки встановлюються через визначені користувачем поля. Для цього пов'язують ключове поле головної таблиці (зовнішній ключ) з відповідним йому полем підлеглої таблиці. Ці поля в таблицях часто мають однакові імена, але в загальному випадку це не обов'язково.
 
Зв’язування таблиць дає можливість установити зв’язок між елементами, які в них зберігаються. Перед створенням зв’язків слід налаштувати підстановки між відповідними полями.
Виконання підстановок
Відкриємо базу даних «Зоопарк». Таблиці Родина  і Раціон мають бути пов’язані з таблицею Тварини. Треба, щоб записи в цих таблицях відповідали кодам тварин. Уводити коди тварин замість назв тварин досить незручно.
 
Виконання підстановок дає можливість, не змінюючи структури БД, замість числових кодів виводити зі зв’язаних таблиць текстову інформацію.

Наприклад, завдяки підстановкам у таблиці  Родина  можемо у полі КодТварини замість чисел обирати з випадного списку назви тварин  із таблиці Тварини.
 
Розглянемо процедуру виконання підстановки. Отже, для цього потрібно:
1) відкрити БД Зоопарк, таблицю Родина;
2) виконати Вигляд → Конструктор ;
3) відкрити список Тип даних в рядку поля КодТварини і вибрати Майстер підстановок;
4) у вікні Майстер підстановок клацнути кнопку Далі;
5) у наступному вікні вибрати Таблиця: Тварини і клацнути Далі (рис.1);
 
зв2.PNG

6) у наступному вікні зі списку Доступні поля таблиці Тварини  вибрати  по черзі імена полів КодТварини і НазваТварини, клацнувши кнопку > (рис.2). Ці назви мають з’явитися в полі Вибрані поля. Клацнути кнопку Далі;
 
зв1.PNG
 
Рис.2

7) погодитись із сортуванням поля НазваТварини за зростанням і клацнути кнопку Далі;
9) погодитися з прихованням ключа ключового поля і клацнути кнопку Далі;
10) за бажанням у поле Підпис змінити ім’я поля КодТварини;
11) клацнути кнопку Готово.
12) перейти у Вигляд → Подання таблиці.

Після виконання цих дій у таблиці Родина в клітинках поля  КодТварини з’являються кнопки відкриття списку, з якого слід обирати значення з поля НазваТварини з таблиці Тварини (рис.3).
 
зв3.PNG Рис.3

Подібним чином у таблиці Раціон можна налаштувати підстановку для поля КодТварини кличек тварин  із таблиці Тварини.
Створення зв’язку між таблицями за допомогою вікна «Зв’язки»
Закрий усі таблиці і виконай дії:
1. На вкладці Знаряддя бази даних у групі Зв’язки натисни кнопку Зв’язки.
2. На вкладці Конструктор у групі Зв'язки натисни кнопку Відобразити таблицю (позначка 1 на рис.5).
3. Вибери потрібні таблиці і натисни кнопку Додати. Після додавання таблиць до вкладки документа Зв’язки натисни кнопку Закрити.
4. Перетягни поле з однієї таблиці (зазвичай це первинний ключ) до спільного поля (зовнішнього ключа) в іншій таблиці. Відкриється діалогове вікно Редагування зв'язків (рис.4).

зв4.PNG
 
Щоб застосувати цілісність даних для цього зв'язку, установи прапорець Забезпечення цілісності даних

5. Натисни кнопку Створити.

Між двома таблицями з’явиться лінія зв’язку. Якщо встановлено прапорець Забезпечення цілісності даних, кінці лінії будуть товстіші. Крім того, якщо встановити цей прапорець, з одного боку лінії над її товстою частиною відображатиметься число 1, а з іншого — знак нескінченності (), як показано на рис.5.

зв.PNG
Рис.5
 
Забезпечення цілісності даних для певного зв’язку між таблицями означає, що при зміні, видаленні та додаванні записів в одній з цих таблиць буде здійснюватися автоматичний контроль за відповідністю змін у зв’язаній таблиці. Так, забезпечення цілісності даних для зв’язку один-до-багатьох означатиме перевірку умов:
  • у підлеглі таблиці не можна додати новий запис, для якого не існує значення
    ключового поля в головній таблиці;
  • у головній таблиці не можна видалити записи, доки не видалені пов’язані записи з підлеглої таблиці;
  • зміна значень ключового поля головної таблиці неможлива, якщо існують пов’язані записи в підлеглій таблиці.
Якщо потрібно змінити зв'язки, слід натиснути кнопку Змінити зв'язки (позначка 3 на рис.5).
 
Якщо потрібно відобразити всі зв'язки, слід натиснути кнопку Усі зв'язки (позначка 2 на рис.5).
Типи зв'язків
За множинністю виділяють такі типи зв’язків (рис.6):
один до одного (позначають 1:1), коли одному екземпляру однієї множини відповідає один екземпляр іншої множини  Наприклад, під час виготовлення кожен автомобіль отримує свій номер (номер кузова)  Кожному автомобілю відповідає тільки один номер. Зв’язок один-до-одного може мати місце, коли обидва поля зв’язку таблиць є ключовими;
один до багатьох (1:∞), коли одному екземпляру однієї множини може відповідати кілька екземплярів іншої множини  Наприклад, один учитель інформатики навчає багатьох учнів і при цьому немає інших учителів інформатики, які здійснюють навчання тих самих учнів. Зв’язок один-до-багатьох має місце, коли ключовим є тільки одне з полів зв’язку;
багато до одного (∞:1), коли кільком екземплярам однієї множини відповідає один екземпляр іншої множини  Цей тип зв’язку є протилежним до зв’язку один до багатьох  Наприклад, багато учнів входять до складу тільки одного класу (і тільки до нього) і, навпаки, в одному класі навчається багато учнів;
багато до багатьох  (∞:∞),  коли  кільком екземплярам однієї множини можуть відповідати кілька екземплярів іншої множини  Наприклад, множина учнів класу (багато) можуть отримувати різні (багато) оцінки, що будуть визначати рівень їх навчальних досягнень з інформатики.

типи.PNG
 
Зверни увагу!
У реляційних базах даних найпоширенішим типом зв’язків є зв’язок один-до-багатьох. Таблиця, в якій поле зв’язку є ключовим, вважається головною, а пов’язана з нею таблиця — підлеглою, або зв'язаною.
Щоб видалити зв’язок між двома таблицями, потрібно двічі клацнути правою кнопкою миші лінію зв’язку між ними та вибрати команду Видалити.