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

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

Докладні відомості див. в статті Основи розробки баз даних.

У цій статті не йдеться про зв’язки у веб-базі даних. Веб-бази даних не підтримують вікно "Зв’язки". Зв’язки у веб-базі даних створюються за допомогою полів підстановки. Докладні відомості див. в статті Створення бази даних для спільного використання в Інтернеті.

У цій статті

Загальні відомості

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

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

Докладні відомості про цілісність зв’язків

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

Створення зв’язку між таблицями

Видалення зв’язку між таблицями

Змінення зв’язку між таблицями

Забезпечення цілісності зв’язків

Загальні відомості

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

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

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

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

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

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

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

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

Поле «Ідентифікаційний номер працівника», що використовується як первинний ключ у таблиці «Працівники» та як зовнішній ключ у таблиці «Замовлення».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. У діалоговому вікні Відкрити виберіть і відкрийте базу даних.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Створення зв’язку між таблицями

Зв’язок між таблицями можна створити за допомогою вікна «Зв’язки» або перетягуванням поля з області Список полів. Під час створення зв’язку між таблицями спільні поля можуть мати різні імена, хоча часто вони однакові. Проте такі поля мають містити дані одного типу. Якщо поле первинного ключа має тип «Лічильник», зовнішній ключ може бути полем типу «Число», якщо обидва поля мають однакові значення властивості Розмір поля. Наприклад, поля з типами даних «Лічильник» і «Число» можна зіставляти, якщо властивість Розмір поля обох полів має значення «Довге ціле число». Якщо для обох спільних полів використовується тип даних «Число», значення властивостей Розмір поля мають бути однакові.

Створення зв’язку між таблицями за допомогою вікна "Зв’язки"

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

  2. У діалоговому вікні Відкрити виберіть і відкрийте базу даних.

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

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

У діалоговому вікні Відображення таблиці відображаються всі таблиці й запити в базі даних. Щоб переглянути лише таблиці, виберіть вкладку Таблиці. Щоб переглянути лише запити, виберіть вкладку Запити. Для перегляду як таблиць, так і запитів виберіть вкладку Разом.

  1. Виберіть одну або кілька таблиць чи запитів і натисніть кнопку Додати. Закінчивши додавати таблиці й запити до вікна "Зв’язки", натисніть кнопку Закрити.

  2. Перетягніть поле з однієї таблиці (зазвичай це первинний ключ) до спільного поля (зовнішнього ключа) в іншій таблиці. Щоб перетягнути кілька полів, натисніть клавішу Control, виберіть потрібні поля та перетягніть їх.

Відобразиться діалогове вікно Редагування зв’язків.

  1. Переконайтеся, що імена полів – це спільні поля зв’язку. Якщо ім’я поля неправильне, клацніть його й виберіть зі списку нове поле.

Щоб забезпечити для цього зв’язку цілісність даних, установіть прапорець Забезпечення цілісності даних. Докладніше про цілісність посилань див. у розділах Загальні відомості про цілісність даних і Забезпечення цілісності даних.

  1. Натисніть кнопку Створити.

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

    Примітки : 

    • Створення зв’язку "один-до-одного"   . В обох спільних полів (зазвичай, полів первинного та зовнішнього ключів) має бути унікальний індекс, тобто для властивості Індексовано цих полів потрібно встановити значення Так (без повторень). Якщо обидва поля мають унікальний індекс, програма Access створює зв’язок "один-до-одного".

    • Створення зв’язку "один-до-багатьох"   . У поля на стороні зв’язку "один" (зазвичай, первинного ключа) має бути унікальний індекс, тобто для властивості Індексовано цього поля потрібно встановити значення Так (без повторень). У поля на стороні "багато" не має бути унікального індексу. Воно може мати індекс, який може повторюватися, тобто для властивості Індексовано цього поля має бути задано значення Ні або Так (повторення дозволено). Коли індекс одного поля унікальний, а іншого – ні, програма Access створює зв’язок "один-до-багатьох".

Створення зв’язку таблиці за допомогою області "Список полів"

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

Відкриття таблиці у вікні табличного подання даних

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

  2. У діалоговому вікні Відкрити виберіть і відкрийте базу даних.

  3. В області переходів клацніть правою кнопкою миші таблицю, до якої потрібно додати поле та з якою потрібно створити зв’язок, а потім натисніть кнопку Відкрити.

Відкриття області "Список полів"

  • Натисніть сполучення клавіш ALT+F8.

    Відобразиться область Список полів.

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

Якщо в області Список полів клацнути знак плюс (+) поруч із назвою таблиці, відобразиться список усіх полів, доступних у цій таблиці. Щоб додати поле до таблиці, перетягніть його з області Список полів до таблиці у вікні табличного подання даних.

Додавання поля та створення зв’язку з області списку полів

  1. В області Список полів у розділі Поля, наявні в інших таблицях клацніть знак плюс (+), розташований поруч з іменем таблиці, щоб відобразити список полів цієї таблиці.

  2. Перетягніть потрібне поле з області Список полів до таблиці, відкритої у вікні табличного подання даних.

  3. Після появи лінії вставлення вставте поле.

    Запуститься майстер підстановок.

  4. Дотримуйтесь інструкцій майстра підстановок.

    У поданні таблиці з’явиться поле.

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

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

Видалення зв’язку між таблицями

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

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

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

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

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

  1. Клацніть лінію того зв’язку, який потрібно видалити. Виділена лінія зв’язку стане товстішою.

  2. Натисніть клавішу Delete.

    –або–

Клацніть лінію правою кнопкою миші та виберіть команду Видалити.

  1. Може з’явитися повідомлення Справді остаточно видалити вибраний зв’язок із бази даних?. У разі появи цього повідомлення натисніть кнопку Так.

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

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

Змінення зв’язку між таблицями

Змінити таблицю можна, вибравши її у вікні "Зв’язки" й відредагувавши. Обережно розташуйте курсор таким чином, щоб він указував на лінію зв’язку, а потім клацніть цю лінію, щоб вибрати її. Виділена лінія зв’язку стане товстішою. Після вибору лінії зв’язку двічі клацніть її або натисніть кнопку Змінити зв’язки у групі Знаряддя на вкладці Конструктор. Відобразиться діалогове вікно Редагування зв’язків.

Внесення змін у діалоговому вікні "Редагування зв’язків"

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

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

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

  • Відобразяться всі таблиці, які мають зв’язки, з позначеними лініями зв’язків.

  • Клацніть лінію зв’язку, який потрібно змінити. Виділена лінія зв’язку стане товстішою.

  • Двічі клацніть лінію зв’язку

  • Внесіть зміни та натисніть кнопку OK.

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

Настроювання типу об’єднання

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

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

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

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

Примітка : У цьому випадку словами "ліворуч" і "праворуч" позначається положення таблиці в діалоговому вікні Редагування зв’язків, а не у вікні "Зв’язки".

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

Настроювання типу об’єднання

  1. У діалоговому вікні Редагування зв’язків натисніть кнопку Тип об’єднання.

    Відкриється діалогове вікно Параметри об’єднання.

  2. Виберіть потрібний параметр і натисніть кнопку OK.

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

Параметр

Реляційне об’єднання

Ліва таблиця

Права таблиця

1. Включати лише рядки, де збігаються об’єднані поля з обох таблиць.

Внутрішні об’єднання

Рядки зі збігами

Рядки зі збігами

2. Включити ВСІ записи з таблиці "Клієнти" та лише ті записи з таблиці "Замовлення", де об’єднані поля рівні.

Ліве зовнішнє з’єднання

Усі рядки

Рядки зі збігами

3. Включити ВСІ записи з таблиці "Замовлення" та лише ті записи з таблиці "Клієнти", де об’єднані поля рівні.

Праве зовнішнє з’єднання

Рядки зі збігами

Усі рядки

Якщо вибрати параметр 2 або 3, на лінії зв’язку відображатиметься стрілка. Ця стрілка вказує сторону зв’язку, з якої відображаються лише рядки зі збігами.

Внесення змін у діалоговому вікні "Параметри об’єднання"

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

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

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

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

  • Клацніть лінію того зв’язку, який потрібно змінити. Виділена лінія зв’язку стане товстішою.

  • Двічі клацніть лінію зв’язку

Відобразиться діалогове вікно Редагування зв’язків.

  1. Натисніть кнопку Тип об’єднання

  2. У діалоговому вікні Параметри об’єднання виберіть параметр і натисніть кнопку OK.

  3. Внесіть додаткові зміни у зв’язок і натисніть кнопку OK.

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

Забезпечення цілісності даних

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

Увімкнення або вимкнення цілісності даних

  1. У вікні "Зв’язки" клацніть лінію того зв’язку, який потрібно змінити. Виділена лінія зв’язку стане товстішою.

  2. Двічі клацніть лінію зв’язку

Відобразиться діалогове вікно Редагування зв’язків.

  1. Установіть прапорець Забезпечення цілісності даних.

  2. Внесіть додаткові зміни у зв’язок і натисніть кнопку OK.

Після забезпечення цілісності даних застосовуються такі правила:

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

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

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

    Примітки : Якщо функція цілісності зв’язків не активується, перевірте, чи виконуються такі умови:

    • Спільне поле в головній таблиці має бути первинним ключем, або в нього має бути унікальний індекc.

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

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

Настроювання каскадних параметрів

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

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

Увімкнення або вимкнення каскадного оновлення та/або каскадного видалення

  1. У вікні "Зв’язки" клацніть лінію того зв’язку, який потрібно змінити. Виділена лінія зв’язку стане товстішою.

  2. Двічі клацніть лінію зв’язку

Відобразиться діалогове вікно Редагування зв’язків.

  1. Установіть прапорець Забезпечити цілісність посилань.

  2. Установіть один або обидва прапорці Каскадне оновлення пов’язаних полів і Каскадне видалення пов’язаних полів.

  3. Внесіть додаткові зміни у зв’язок і натисніть кнопку OK.

Примітка : Якщо первинний ключ – це поле типу "Лічильник", установлення прапорця Каскадне оновлення пов’язаних полів не матиме наслідків, оскільки значення в полі "Лічильник" змінювати не можна.

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

Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×