Посібник зі зв’язків між таблицями
Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

У цій статті

Вступ

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

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

1. Ця форма містить відомості з таблиці "Клієнти"...

2. ...з таблиці "Замовлення"...

3. ...з таблиці "Товари"...

4. ...з таблиці "Відомості про замовлення".

Ім’я клієнта в полі Рахунок для надходить із таблиці "Клієнти", значення ідентифікатора замовлення та дати замовлення – з таблиці "Замовлення", назва товару – з таблиці "Товари", а значення вартості одиниці та кількості – з таблиці "Відомості про замовлення". Ці таблиці зв’язані між собою різними способами, що дає змогу об’єднати у формі дані з кожної таблиці.

У попередньому прикладі поля таблиць мають узгоджуватися між собою таким чином, щоб у них відображалися дані щодо одного й того самого замовлення. Така узгодженість досягається за допомогою зв’язків між таблицями. Принцип роботи зв’язків полягає в зіставленні даних у полях ключів – часто такі поля мають однакові імена в обох таблицях. У більшості випадків поля, що збігаються – це первинний ключ однієї таблиці, який створює унікальний ідентифікатор для кожного запису, і зовнішній ключ іншої таблиці. Наприклад, із працівниками можна зіставити замовлення, за які вони відповідають, створивши зв’язок між полями "Ідентифікаційний номер працівника" в таблицях "Працівники" та "Замовлення".

Поле "Ідентифікатор працівника" слугує первинним ключем у таблиці "Працівники" та зовнішнім ключем у таблиці "Замовлення".

1. Поле "Ідентифікаційний номер працівника" відображається в обох таблицях – як первинний ключ...

2. ... і як зовнішній ключ.

На початок сторінки

Типи зв’язків між таблицями

В Access існує три типи зв’язків між таблицями.

  • Зв’язок "один-до-багатьох"

    Давайте скористаємося базою даних відстеження замовлень, до якої входять таблиця ''Клієнти'' й таблиця ''Замовлення''. Клієнт може розмістити будь-яку кількість замовлень. Таким чином, для будь-якого клієнта, представленого в таблиці ''Клієнти'', у таблиці ''Замовлення'' може міститися багато замовлень. Взаємозв’язок між таблицями ''Клієнти'' та ''Замовлення'' – це зв’язок ''один-до-багатьох''.

    Щоб представити зв’язок ''один-до-багатьох'' у структурі власної бази даних, візьміть первинний ключ на стороні зв’язку ''один'' і вставте його як додаткове поле або поля в таблицю на стороні зв’язку ''багато''. У цьому разі, наприклад, нове поле – поле ідентифікатора з таблиці ''Клієнти'' – потрібно додати до таблиці ''Замовлення'' та назвати його ''Код користувача''. Потім програма Access зможе використати номер із поля ''Код користувача'' в таблиці ''Замовлення'' для пошуку користувачів, які відповідають певним замовленням.

  • Зв’язок "багато-до-багатьох"

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

    Для представлення зв’язку "багато-до-багатьох" потрібно створити третю таблицю, яку часто називають розподільною, щоб розділити зв’язок "багато-до-багатьох" на два зв’язки "один-до-багатьох". Первинний ключ із кожної із двох таблиць потрібно вставити у третю таблицю. Унаслідок цього у третій таблиці буде записано всі випадки або екземпляри зв’язків. Наприклад, таблиці "Замовлення" та "Товари" пов’язані зв’язком "багато-до-багатьох", який визначатиметься через створення двох зв’язків "один-до-багатьох" із таблицею "Відомості про замовлення". В одному замовленні може зустрічатися багато товарів, і кожний товар може зустрічатися в багатьох замовленнях.

  • Зв’язок "один-до-одного"

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

На початок сторінки

Навіщо створювати зв’язки між таблицями?

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

  • Зв’язки між таблицями розкривають структуру запитів

    Для роботи із записами, отриманими з кількох таблиць, часто потрібно створити запит, який об’єднуватиме таблиці. Робота запиту полягає в зіставленні значень у полі первинного ключа першої таблиці зі значеннями в полі зовнішнього ключа другої таблиці. Наприклад, для повернення рядків, у яких перелічуватимуться всі замовлення кожного клієнта, слід побудувати запит, який об’єднуватиме таблицю ''Клієнти'' з таблицею ''Замовлення'' на основі поля ''Код користувача''. У вікні ''Зв’язки'' можна вручну вказати поля для об’єднання. Проте, якщо між таблицями вже встановлено зв’язки, у програмі Access буде запропоновано об’єднання за промовчанням, створене на основі наявного зв’язку між таблицями. Крім того, у разі використання одного з майстрів запитів у програмі Access використовуються дані, зібрані про вже задані зв’язки між таблицями, для подання обґрунтованих варіантів вибору та попереднього заповнення властивостей відповідними значеннями за промовчанням.

  • Зв’язки між таблицями розкривають структуру форм і звітів

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

  • Зв’язки між таблицями – це основа для забезпечення цілісності даних, що дає змогу запобігти виникненню в базі даних відірваних записів. Відірваний запис – це запис із посиланням на інший запис, якого не існує, наприклад запис про замовлення, який посилається на відсутній запис про клієнта.

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

На початок сторінки

Загальні відомості про цілісність даних

Під час створення бази даних усі дані про базу даних поділяються на кілька тематичних таблиць для мінімізації надлишковості даних. Потім у програмі Access створюються засоби, за допомогою яких ці розрізнені дані можна зібрати разом, розмістивши в пов’язаних між собою таблицях спільні поля. Наприклад, для представлення зв’язку ''один-до-багатьох'' потрібно взяти первинний ключ із таблиці ''один'' і вставити його як додаткове поле до таблиці ''багато''. Щоб знову зібрати дані разом, у програмі Access беруться значення з таблиці ''багато'' та виконується пошук відповідних значень у таблиці ''один''. Таким чином, значення в таблиці ''багато'' посилаються на відповідні значення в таблиці ''один''.

Припустімо, що між таблицями "Служби доставки" та "Замовлення" існує зв’язок "один-до-багатьох". Якщо для служби доставки, яку потрібно видалити, у таблиці "Замовлення" містяться замовлення, ці замовлення після видалення запису "Служба доставки" стануть "відірваними". Замовлення й надалі міститимуть ідентифікатор служби доставки, але ідентифікатор уже буде недійсний, оскільки запису, на який він посилається, більше не існує.

Мета цілісності даних – уникнути відірваності даних і забезпечити синхронізацію посилань таким чином, щоб ця гіпотетична ситуація не могла скластися взагалі.

Забезпечити цілісність можна, застосувавши відповідний параметр до зв’язку таблиці. Після цього Access відхилятиме будь-які операції, які можуть призвести до порушення цілісності даних цих зв’язків. Це означає, що Access не виконуватиме операції оновлення та вилучення, які впливають на об’єкт посилання. Імовірно, у вас може виникнути обґрунтована потреба змінити первинний ключ відправника, замовлення якого наведено в таблиці "Замовлення". У такому разі потрібно, щоб програма Access оновлювала всі пов’язані рядки за одну операцію. Це дасть змогу виконати повне оновлення й уникнути неузгодженого стану бази даних Access, коли одні рядки оновлено, а інші – ні. Тому Access підтримує параметр Каскадне оновлення пов'язаних полів . Якщо забезпечити цілісність даних і вибрати параметр Каскадне оновлення пов’язаних полів, а потім оновити первинний ключ, у програмі Access буде автоматично оновлено всі поля, які посилаються на первинний ключ.

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

На початок сторінки

Перегляд зв’язків між таблицями

Щоб переглянути зв’язки між таблицями, натисніть кнопку Зв’язки на вкладці Знаряддя бази даних. Відкриється вікно ''Зв’язки'', у якому відображаються всі наявні зв’язки. Якщо зв’язки між таблицями ще не задано й вікно ''Зв’язки'' відкривається вперше, у програмі Access буде запропоновано додати до вікна таблицю або запит.

Відкриття вікна "Зв’язки"

  1. На вкладці Файл натисніть кнопку Відкрити, а потім виберіть і відкрийте базу даних.

  2. На вкладці Знаряддя бази даних у групі Зв’язки натисніть кнопку Зв’язки.

  3. На вкладці Конструктор зв'язків у групі Зв'язки натисніть кнопку Усі зв'язки.Відобразяться всі визначені зв'язки в базі даних. Зверніть увагу, що приховані таблиці (таблиці, для яких у діалоговому вікні Властивості встановлено прапорець Приховано) не відображатимуться, якщо в діалоговому вікні Параметри переходів не встановити прапорець Приховані об’єкти.

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

Коли вікно "Зв’язки" активне, на стрічці відображаються такі команди:

На вкладці Конструктор зв'язків у групі Знаряддя :

  • Змінити зв’язки   . Відкриває діалогове вікно Редагування зв’язків. Вибравши лінію зв’язку, можна вибрати команду Змінити зв’язки, щоб змінити зв’язок таблиці. Крім того, можна двічі клацнути лінію зв’язку.

  • Очистити макет   . Видаляє всі таблиці та зв’язки, що відображаються у вікні "Зв’язки". Зверніть увагу, що ця команда лише приховує таблиці та зв’язки – самі вони не видаляються.

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

На вкладці Конструктор зв'язків у групі Зв'язки :

  • Додавання таблиць    Дає змогу вибрати таблиці для відображення у вікні "Зв'язки".

  • Приховати таблицю   . Приховує вибрану таблицю у вікні "Зв’язки".

  • Прямі зв’язки   . Відображає всі зв’язки та пов’язані таблиці для вибраної таблиці у вікні "Зв’язки", якщо вони ще не відображаються.

  • Усі зв’язки   . Відображає всі зв’язки та пов’язані таблиці для вибраної таблиці у вікні "Зв’язки". Зверніть увагу, що приховані таблиці (таблиці, для яких у діалоговому вікні Властивості встановлено прапорець Прихований) не відображатимуться, якщо в діалоговому вікні "Параметри переходів" не встановлено прапорець "Приховані об’єкти".

  • Закрити   . Закриває вікно "Зв’язки". Якщо до макета вікна "Зв’язки" внесено зміни, програма запропонує зберегти їх.

На початок сторінки

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.