Друк книгиДрук книги

Тема 7. Зв'язки між таблицями

   

Сайт: Навчально-інформаційний портал ВП НУБіП України "Ніжинський агротехнічний інститут"
Курс: Система управління базами даних
Книга: Тема 7. Зв'язки між таблицями
Надруковано: Гість
Дата: неділя 5 травень 2024 12:51

Таблиця змісту

1 Правила установки зв'язків між таблицями

Access 2010 дає можливість організовувати і відображати межтаблічні зв'язки двома способами:

У Access 2010 система самостійно встановлює зв'язки між таблицями, якщо в таблицях вже встановлені ключові поля.

Для створення зв'язків необхідно встановити відповідність величин однієї таблиці величинам з іншої таблиці. Зв'язки встановлюються через визначені користувачем поля. Для цього пов'язують ключове поле батьківської таблиці (зовнішній ключ) з відповідним йому полем дочірньої таблиці. Ці поля в таблицях часто мають однакові імена, але в загальному випадку це не обов'язково.

Строго обов'язковими є наступні умови:

2 Установка первинного ключа в таблиці

У збалансованій структурі реляційної бази даних кожен запис в будь-якій таблиці повинна унікально ідентифікуватися, тобто значення деяких полів в таблиці не повинні повторюватися у всій безлічі записів. Цей унікальний ідентифікатор називається первинним ключем .

Якщо Ви помітили, після створення таблиць в Access 2010 в режимі Конструктор, при виконанні операцій "Закрити" або "Зберегти", система робить нагадування.

У тому випадку, якщо натиснути на кнопку "Ні", то ключового поля система створювати не буде (в розглянутих прикладах дано пояснення, чому зручніше ключ встановлювати пізніше).

При створенні таблиці в режимі Таблиця, система автоматично створює перше поле, яке називається "Код" з типом даних "Лічильник" (Счетчик).

Це поле є ключовим, наприклад, на малюнку 1 показаний варіант створюваної таблиці вручну, при введенні даних в полі "Стаж роботи працівника" система автоматично в поле "Код" встановлює порядкові номери записів, а після закриття таблиці поле "Код" стає ключовим.

Рис. 1. Приклад створеної таблиці в режимі Таблиця

У тому випадку, якщо ключове поле не було встановлено в таблиці, то знадобиться встановити ключ самостійно (в розглянутих прикладах, для таблиць "Особисті відомості" і "Доплати" ключі не встановлювалися).

Для додавання первинного ключа до таблиці або для його видалення, необхідно таблицю відкрити в режимі Конструктор. Розглянемо на прикладі правила створення первинного ключа.

  1. Відкрийте в режимі Конструктор таблицю "Особисті відомості".
  1. Виділіть рядок з найменуванням поля "Прізвище".
  1. На вкладці "Робота з таблицями" (у більш новіших версіях "Конструктор") клацніть по напису .
  1. Збережіть таблицю.

Зрозуміло, що прибрати ключ з таблиці можна виконавши ті ж дії.

Перевірте, чи існують ключі в інших таблицях, які були створені на попередніх етапах ("Надбавка за стаж", "Номенклатура посад" і "Доплати").

Якщо в режимі Конструктор спробувати відкрити таблицю , яка є пов'язаною із зовнішнім файлом, то система видасть повідомлення, текст якого представлений на малюнку 2.

Рис. 2. Повідомлення системи про те, що даненая таблиця є пов'язаної

3 Схема даних

Для відображення, коректування й видалення зв'язків між таблицями в Access запропоновано візуальне засіб − Схема даних.

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

У деяких версіях Access 2010 система не створює зв'язків. Тому, розглянемо послідовність встановлення зв'язків в ручному режимі.

  1. Закрийте всі таблиці в базі даних.
  1. Виділіть одну з таблиць, наприклад, "Доплати", при цьому з'явиться вкладка "Робота зі зв'язками" (Работа со связями). Або клацніть по піктограмі "Схема даних".

  1. Клацніть по піктограмі , буде відкрито вікно для додавання таблиць при створенні схеми даних. Натисніть на кнопку "Додати" (Добавить).

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

На малюнку 1 представлений приклад додавання таблиці "Особисті відомості" на полі "Схема даних" методом вибору зі списку. Як видно, зв'язки можна встановлювати не тільки з таблицями, а і з запитами, які на виході формують нові таблиці (про створення запитів буде сказано нижче).

  1. Додайте на полі "Схема даних" таблиці, які були створені раніше.

Рис. 1. Приклад додавання таблиць на полі "Схема даних"

  1. Додайте всі таблиці, створені раніше, на полі "Схема зв'язків". Проведіть операцію встановлення зв'язків між таблицями "Доплати" (батьківська таблиця) і "Особисті відомості" (Дочірня таблиця). Для виконання встановлення зв'язків лівою кнопкою миші виділіть в таблиці "Доплати" поле, а потім перемістіть покажчик миші на поле таблиці "Особисті відомості", коли звільніть покажчик миші, з'явиться вікно "Зміна зв'язків" (рис. 2).

Рис. 2. Вікно для встановлення параметрів зв'язків між таблицями

  1. У вікні "Зміна зв'язків" зазначено звідки і куди прокладено зв'язок, якщо типи даних з'єднуються полів збігаються (виконуються правила створення зв'язків), то в полі "Тип ставлення" з'явиться повідомлення: Один-до-багатьох.

Обов'язково встановіть відмітку в полі , тоді у вікні "Схема даних" з'явиться зв'язок. На одному кінці буде стояти 1 (одиниця) (ці дані є унікальними), а на іншому кінці зв'язку стоятиме знак − ∞ нескінченність).

Бажано зробити позначки і в інших полях, тоді при внесенні корекцій у вихідну таблицю в записі або їх видалення, у запитах відбудеться автоматичне зміна результатів. Натисніть на кнопку "Створити" (Создать).

Чому при настанов зв'язків між таблицями не обов'язково ставити позначки в полях "Каскадне оновлення пов'язаних полів" і "Каскадне видалення пов'язаних полів"?

Це природне запитання, проте, слід зверніть увагу, якщо використовувати як пов'язуються полів поле "Лічильник", то це поле неможливо видозмінити користувачем, отже, немає сенсу ставити в цьому випадку позначку (нагадаємо, що при встановленні ключового поля "Текстове", користувач має можливість видозмінювати дані в цьому полі, наприклад замінити прізвище).

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

4 Організація зв'язків між таблицями

При спробі створити зв'язок між таблицями "Надбавки за стаж" і "Особисті відомості" нічого не вийде.

Відповідь ясна, у таблиці "Особисті відомості" відсутнє поле, яке можна пов'язати з таблицею "Надбавки за стаж".

Виходів з цього положення два;

  1. Створіть в таблиці "Особисті відомості" нове поле, наприклад, "Стаж".

Нагадаємо, що спочатку необхідно визначити місце нового поля в таблиці, потім вибрати режим "Інші поля" (Другие поля), далі − "Підстановка та відношення" (Подстановка и отношения), а потім виконати кроки по підстановці необхідного поля у вигляді списку з іншої таблиці.

В результаті виконуваних дій буде отримана зв'язок між таблицями "Надбавка за стаж" (батьківська) і "Особисті відомості" (дочірня). На малюнку 1 показаний приклад автоматичного встановлення зв'язків між таблицями, коли використовується метод вкладення таблиць.

Коли буде розкрита таблиця "Надбавки за стаж", то в ній з'являється символ . Якщо клацнути по символу, то будуть відображені рядки (записи) з дочірньою таблиці (у даному прикладі показані записи з відомостями про співробітників, які мають стаж роботи від 1 року до 3- х років).

Рис. 1. Приклад встановлення зв'язків між таблицями методом вкладених таблиць

Автоматично створений зв'язок відображає ставлення "Один до багатьох", дійсно, у таблиці "Надбавки за стаж" кожен рядок є унікальним, в той час як у таблиці "Особисті відомості" дані про стаж роботи співробітника можуть відноситися до декількох рядків. Для того, щоб побачити, які зв'язку між таблицями існують, досить закрити всі таблиці, активізувати вкладку "Робота з базами даних", а потім натиснути на піктограму "Схема даних".

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

Рис. 2. Варіант сформованих зв'язків між таблицями в базі даних

5 Питання для самоконтролю

  1. Яким чином можна видалити наявний зв'язок між таблицями?
  2. Про що свідчить символ  в таблиці, яка відкрита в режимі "Таблиця" (Таблица)?
  3. Про що свідчить символ  на лінії зв'язку між таблицями у вікні "Схема зв'язків" (Схема данных)?
  4. Чи можливо в таблиці змінювати значення в полі "Лічильник" (Счетчик)?