Посібник зі зв’язків між таблицями

Застосовується до
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

У цій статті

Вступ

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

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

1. Інформація в цій формі береться з таблиці "Замовники".

2. ... Таблиця "Замовлення"...

3. ... Таблиця "Товари"...

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

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

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

Поле

1. EmployeeID відображається в обох таблицях — як первинний ключ ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. На вкладці «Конструктор зв'язків » у групі «Зв'язки » натисніть кнопку «Усі зв'язки».

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

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

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

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

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

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

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

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