logo search
ОБД 5 семестр

Теоретичні відомості: Зв'язування таблиць бази даних

Коли розроблялися СУБД перших поколінь, комп'ютери мали ще малі об'єми пам'яті. Питання раціонального використання пам'яті було тоді дуже актуальним. Особливо гострою була ця проблема для збереження баз даних великих об'ємів, у яких дані часто дублювалися. Дублювання даних є причиною нераціонального використання пам'яті комп'ютера.

Прагнення розв'язати цю проблему привело до розробки процедури нормалізації. Нормалізація дозволила використовувати дублювання даних.

Хоча питання пам'яті і не стоїть так гостро, як раніше, все-таки процедура нормалізації є необхідною. Нормалізація зараз потрібна для того, щоб організувати дані таким чином, щоб їх редагування робилось тільки в одному місці бази даних. Нормалізація передбачає необхідність виконання процедури зв'язування таблиць бази даних.

Accessстворює реляційні бази даних, які дозволяють об’єднувати інформацію з різних таблиць.

Необхідно встановити взаємозв’язки між таблицями, записи яких логічно пов’язані. Створивши таблиці та визначивши ключі для кожної з них задаються зв’язки і на їх основі можна брати дані з кількох таблиць та вміщувати їх в одну форму, запит або звіт.

Існує два основних способи зв’язувати дані: це за допомогою полів підстановки та шляхом визначення зв’язків у діалоговому вікні Схема даних.

Між двома таблицями можна встановити два типи відношень: “один-до-одного” та “один-до-багатьох”.

Найбільш розповсюдженим є відношення “один-до-багатьох” (one-to-many), коли одному запису таблиці відповідає декілька записів в другій таблиці. У відношенні “один-до-багатьох” сторона “один” називається головною таблицею, а сторона “багато” – зв’язаною або підлеглою. Таблиця може бути зв’язаною в одному взаємозв’язку, та головною в іншому. Щоб встановити взаємозв’язок таблиць потрібно зв’язати ключ головної таблиці з співпадаючим полем у зв’язаній таблиці (зовнішнім ключем).

Відношення “один-до-одного” (one-to-one) зустрічається набагато рідше. В цьому випадку одному запису в головній таблиці відповідає один запис у зв’язаній таблиці.

Для створення зв'язку між таблицями використовуємо Мастер подстановок. Порядок установлення зв'язків будемо розглядати на прикладі двох таблиць, які зберігаються у файліВаsа2. Вміст таблиціСписокцього файла зображений на мал. 13, а вміст таблиці Консультація - на мал. 22.

Малюнок 22

Розв'яжемо таку задачу: поле Предмет з таблиці Список підставимо у таблицю Консультация. Ця задача може бути вирішена так.

У вікні бази даних файла Basa2 відкриємо структуру таблиці Консультация у режимі конструктора. У цій структурі створюємо ще одне поле з будь-яким іменем. Використовуватимемо ім'я Предмет. Далі відкриємо значення Тип данных, де останнім є рядок Майстер підстановок (мал. 23.).

Малюнок 23

Після активізації програми Мастер подстановок на екрані відкривається вікно цієї програми. У цьому вікні перемикач необхідно встановити у положення Таблица или запрос ... і після цього натиснути кнопку Далее.

2. У результаті останньої дії у вікні Мастер подстановок з'явиться нова інформація, показано на мал. 24.

У цьому вікні будуть показані всі таблиці бази даних за винятком тієї, в яку буде зроблена підстановка поля (для розглянутого прикладу це Консультации). Але для файла Basa2 це тільки одна таблиця, а саме таблиця Список. Виділяємо рядок, у який записано Список, і натискаємо кнопку Далее.

3. Вміст вікна Мастер подстановок зміниться і набере вигляду, який показано на мал. 25. У цьому вікні ліворуч розташовані доступні поля таблиці Список. Необхідно виділити те поле, над яким здійснюється операція підстановки. У даному випадку це поле - Предмет.

Кнопкою одинарна стрілка ліворуч поле повертається у лівий список. Така необхідність виникає, наприклад, у тому випадку, коли була допущена помилка. Кнопкою подвійна стрілка праворуч переносяться всi поля.

Малюнок 24

Малюнок 25

Малюнок 26

Малюнок 27

Після перенесення поля Предмет необхідно натиснути кнопку Далее.

4. Вміст вікна Мастер подстановок знову змінюється і набирає вигляду, показаного на малюнку 26.У цьому вікні можна відрегулювати ширину стовпців (у даному випадку стовпця Предмет). Для цього мишу встановлюють в область заголовка поля так, щоб курсор набрав такого вигляду, який він має на мал. 26. Після цього натискують клавішу миші, і миша переміщується по поверхні столу до досягнення необхідної ширини поля. Потім клавішу відпускають і натискають кнопку Далее.

5. Вікно майстра підстановок набирає тепер вигляду, який зображено на мал. 27.

У цьому вікні потрібно задати підпис для стовпця підстановки. Залишимо те саме слово - Предмет і натиснемо кнопку Готово.

Після цього на екрані з'явиться вікно Мастер подстановок, у якому необхідно підтвердити необхідність збереження таблиці, тобто натиснути кнопку Да. У результаті виконаних дій з'явиться вікно, зображене на мал. 28.

Зверніть увагу, що у результаті виконаних операцій у структурі таблиці Консультация з'явиться не ім'я поля Предмет, а ім'я ключового поля таблиці Список (у даному випадку ім'я Номер 1). Це і означає, що таблиця Список і таблиця Консультация зв'язані по цьому полю. Слід звернути увагу на те, що змінився тип поля, а на вкладці Подстановка наведені характеристики того поля, яке приєднується до Консультации. Закрийте вікно структури таблиці Консультация і відкрийте її для перегляду. Зазначимо, що у цій таблиці з’явиться поле Предмет. Клацніть кнопкою миші в позиції першого рядка цього поля і розкрийте список його значень. Вікно набере вигляду, зображеного на мал. 29.

Малюнок 28

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

Малюнок 29

Таким чином, поставлене завдання виконано. Поле Предмет приєднано до таблиці Консультация.

Щоб переконатися в наявності зв'язку між таблицями, відкриємо меню Сервис, у якому виконаємо команду Схема данных. З'явиться вікно Схема данных зі зв'язками між таблицею Список і таблицею Консультация, зображене на мал. 30.

Зв'язок між таблицями у цьому вікні показано лінією, яка з'єднує ключеві поля таблиць.

Малюнок 30

Надалі робота з таблицями буде здійснена з урахуванням встановлених зв'язків.

Щоб прибрати зв'язок між таблицями, необхідно клацнути лінію, яка з'єднує таблиці (див. мал. 30) так, щоб вона стала жирною, потім потрібно клацнути правою клавішею миші. З'явиться контекстне меню, в якому необхідно виконати команду Удалить связь. Далі потрібно підтвердити необхідність знищення зв'язку, закрити вікно Схема данных і продовжити роботу з базою даних.

Система Access дозволяє приєднати до іншої таблиці не тільки одне поле, але й декілька. Методика виконання такої операції аналогічна розглянутій вище.