Зв’язок в Access дає змогу об’єднати дані з двох різних таблиць. Кожний зв’язок складається з полів у двох таблицях із відповідними даними. Наприклад, таблиці "Товари" та "Відомості про замовлення" можуть мати однакове поле "Код товару". Кожен запис у таблиці "Відомості про замовлення" має код товару у відповідному полі, який відповідає запису в таблиці "Товари" з таким самим кодом товару.
Якщо ви використовуєте пов’язані таблиці в запиті, зв’язок дає Access змогу визначити, які записи з кожної таблиці слід поєднувати в наборі результатів. Крім того, зв’язок може допомогти запобігти втраті даних, не допускаючи усунення видалених даних із синхронізації. Це називається цілісністю зв’язків.
Перш ніж працювати зі зв’язками, слід ознайомитися з основними поняттями. Докладні відомості див. в статтях Посібник зі зв’язків між таблицями та Початок роботи зі зв’язками таблиць.
У цій статті
Огляд
У базі даних Access зв’язок між таблицями створюється одним із таких методів:
-
У вікні "Зв’язки" додайте таблиці, які потрібно пов’язати. Потім перетягніть поле, щоб пов’язати одну таблицю з іншою.
-
У поданні таблиці перетягніть поле в таблицю з області Список полів.
Під час створення зв’язку між таблицями спільні поля можуть мати різні імена, хоча часто вони однакові. Спільні поля мусять мати дані одного типу. Якщо поле первинного ключа має тип "Автонумерація", поле зовнішнього ключа також мусить мати тип "Число", якщо обидва поля мають однакові значення властивості Розмір поля. Наприклад, поля з типами даних «Лічильник» і «Число» можна зіставляти, якщо властивість Розмір поля обох полів має значення «Довге ціле число». Якщо для обох спільних полів використовується тип даних «Число», значення властивостей Розмір поля мають бути однакові.
Створення зв’язку між таблицями за допомогою вікна "Зв’язки"
-
На вкладці Знаряддя бази даних у групі Зв’язки натисніть кнопку Зв’язки.
-
На вкладці Конструктор зв'язків у групі Зв'язки натисніть кнопку Додати таблиці.
-
Виберіть принаймні одну таблицю або запит і натисніть кнопку Додати. Коли додасте таблиці й запити до вкладки документа "Зв’язки", натисніть кнопку Закрити.
-
Перетягніть поле з однієї таблиці (зазвичай це первинний ключ) до спільного поля (зовнішнього ключа) в іншій таблиці. Щоб перетягнути кілька полів, натисніть клавішу Control, виберіть потрібні поля та перетягніть їх.
Відкриється діалогове вікно Редагування зв'язків . -
Переконайтеся, що імена полів – це спільні поля зв’язку. Якщо підставлено неправильне поле, натисніть його та виберіть зі списку потрібне поле.цьому розділі.
Щоб забезпечити цілісність даних для цього зв'язку, установіть прапорець Забезпечення цілісності даних . Докладні відомості про цілісність даних див. в -
Натисніть кнопку Створити.
Між двома таблицями з’явиться лінія зв’язку. Якщо ви встановили прапорець Забезпечення цілісності даних, кінці лінії будуть товстіші. Крім того, якщо встановити цей прапорець, з одного боку лінії над її товстою частиною відображатиметься число 1, а з іншого – знак нескінченності (∞), як показано на наведеному нижче зображенні.
Примітки.:
-
<c0>Створення зв’язку "один-до-одного"</c0>. Обидва спільні поля (зазвичай, поля первинного та зовнішнього ключів) мусять мати унікальний індекс. Це означає, що для властивостей Індексовано цих полів потрібно встановити значення Так (без повторень). Якщо обидва поля мають унікальні індекси, в Access створюється зв’язок ''один-до-одного''.
-
<c0>Створення зв’язку "один-до-багатьох"</c0>. Поле на стороні зв’язку ''один'' (зазвичай, первинний ключ) мусить мати унікальний індекс. Це означає, що для властивості Індексовано цього поля потрібно встановити значення Так (без повторень). Поле на стороні ''багато'' не має мати унікальний індекс. Таке поле може мати індекс, але він має підтримувати повторення. Це означає, що властивість Індексовано мусить мати значення Ні або Так (повторення дозволені). Коли одне поле має унікальний індекс, а друге поле такого індексу не має, в Access створюється зв’язок ''один-до-багатьох''.
-
Створення зв’язку між таблицями за допомогою області "Список полів"
Ви можете додати поле до наявної таблиці, відкритої у вікні табличного подання даних, перетягнувши його з області Список полів. В області Список полів відображаються поля пов’язаних та інших таблиць бази даних.
Якщо перетягнути поле з іншої (непов’язаної) таблиці, а потім запустити майстер підстановок і виконати його вказівки, між таблицею в області Список полів і таблицею, до якої перетягується поле, автоматично встановиться зв’язок "один-до-багатьох". За замовчуванням цілісність даних у такому разі не забезпечується. Щоб забезпечити її, зв’язок слід відредагувати. Докладні відомості див. в розділі Редагування зв’язку.
Відкриття таблиці у вікні табличного подання даних
-
В області переходів двічі клацніть потрібну таблицю.
Відкриття області "Список полів"
-
Натисніть сполучення клавіш ALT+F8. Відобразиться область Список полів.
В області Список полів відображаються всі інші таблиці в базі даних, згруповані за категоріями. Коли ви працюєте з таблицею у вікні табличного подання даних, Access відображає поля в одній із двох категорій області Список полів: Поля, наявні в пов’язаних таблицях і Поля, наявні в інших таблицях. До першої категорії входять усі таблиці, які мають зв’язок із таблицею, яка зараз використовується, а до другої – усі таблиці, з якими поточна таблиця не має зв’язків.
Якщо в області Список полів клацнути знак плюс (+) поруч із назвою таблиці, відобразиться список усіх полів, доступних у цій таблиці. Щоб додати поле до таблиці, перетягніть його з області Список полів до таблиці у вікні табличного подання даних.
Додавання поля та створення зв’язку з області списку полів
-
Відкрийте таблицю у вікні табличного подання даних і натисніть клавіші Alt+F8. Відкриється область Список полів.
-
У категорії Поля, наявні в інших таблицях клацніть знак плюс (+) поруч із назвою таблиці, щоб відобразити список її полів.
-
Перетягніть потрібне поле з області Список полів до таблиці, відкритої у вікні табличного подання даних.
-
Після появи лінії вставлення вставте поле на вибране місце.
Запуститься майстер підстановок.
-
Дотримуйтесь інструкцій майстра підстановок.
У поданні таблиці з’явиться поле.
Якщо перетягнути поле з іншої (непов’язаної) таблиці, а потім запустити майстер підстановок і виконати його вказівки, між таблицею в області Список полів і таблицею, до якої перетягується поле, автоматично встановиться зв’язок "один-до-багатьох". За замовчуванням цілісність даних у такому разі не забезпечується. Щоб забезпечити її, зв’язок слід відредагувати. Докладні відомості див. в розділі Редагування зв’язку.
Редагування зв’язку
Щоб змінити зв’язок, виберіть його у вікні "Зв’язки" та внесіть потрібні зміни.
-
Наведіть курсор точно на лінію зв’язку. Відтак клацніть цю лінію, щоб виділити її.
Виділена лінія зв’язку стане товстішою.
-
Виділивши лінію зв’язку, двічі клацніть її.
–або–
На вкладці Конструктор зв'язків у групі Знаряддя натисніть кнопку Редагувати зв'язки.
Відкриється діалогове вікно Редагування зв’язків.
Відкриття діалогового вікна "Редагування зв’язків"
-
На вкладці Знаряддя бази даних у групі Зв’язки натисніть кнопку Зв’язки.
-
На вкладці Конструктор зв'язків у групі Зв'язки натисніть кнопку Усі зв'язки.
З’являться всі таблиці, зв’язки між якими позначатимуться лініями. Зверніть увагу, що приховані таблиці (таблиці, у діалоговому вікні Властивості яких установлено прапорець Прихований) не відображатимуться, якщо в діалоговому вікні Параметри переходів не встановлено прапорець "Відображати приховані об’єкти".
-
Клацніть лінію того зв’язку, який потрібно змінити. Вибрана лінія зв’язку стане товстішою.
-
Двічі клацніть лінію зв’язку
–або–
На вкладці Конструктор зв'язків у групі Знаряддя натисніть кнопку Редагувати зв'язки.
Відобразиться діалогове вікно Редагування зв’язків.
-
Внесіть зміни та натисніть кнопку OK.
У діалоговому вікні Редагування зв’язків ви можете змінювати зв’язки між таблицями. Зокрема, можна змінювати таблиці, запити та поля з будь-якого боку зв’язку. Можна також установити тип об’єднання або забезпечити цілісність даних і вибрати параметр каскадного оновлення або видалення. Докладні відомості про типи об’єднання та способи їх налаштування див. в цьому розділі. Докладні відомості про забезпечення цілісності даних і вибір каскадного параметра див. в цьому розділі.
Настроювання типу об’єднання
У ході визначення зв’язку між таблицями відомості про зв’язок обумовлюють структуру запиту. Наприклад, якщо визначити зв’язок між двома таблицями, а потім створити запит, який використовує ці таблиці, стандартні поля зіставлення вибиратимуться автоматично на основі полів, указаних у зв’язку. Ці вихідні значення запиту за промовчанням можна перевизначати, але часто значення, отримані зі зв’язку, правильні. Оскільки зіставлення та збирання даних із кількох таблиць у більшості баз даних (за винятком найпростіших) доводиться виконувати доволі часто, настроювання значень за промовчанням за допомогою створення зв’язків може заощадити час і принести користь.
Запити з підтримкою багатьох таблиць поєднують дані з кількох таблиць, зіставляючи значення у спільних полях. Операція, під час якої виконується зіставлення та поєднання, називається об’єднанням. Припустімо, вам потрібно відобразити замовлення клієнтів. Для цього потрібно створити запит, який об’єднуватиме таблицю "Клієнти" з таблицею "Замовлення" за полем "Код користувача". Результат запиту міститиме дані про клієнтів і замовлення, отримані лише з тих полів, для яких знайдено потрібний відповідник.
Для кожного зв’язку можна вказати тип об’єднання. Тип об’єднання повідомляє програмі Access, які саме записи слід включати до результату запиту. Давайте розглянемо ще раз запит, який об’єднує таблиці "Клієнти" та "Замовлення" за спільними полями з ідентифікатором клієнта. У разі використання типу об’єднання за промовчанням (який називається внутрішнім об’єднанням) запит повертає лише ті рядки таблиць ''Клієнти'' та ''Замовлення'', значення спільних (або об’єднаних) полів у яких збігаються.
Але припустімо, наприклад, що потрібно включити всіх клієнтів – навіть тих, які ще не розмістили жодного замовлення. Щоб розв’язати цю задачу, потрібно змінити тип об’єднання з внутрішнього на так зване ліве зовнішнє. Ліве зовнішнє з’єднання повертає всі рядки таблиці, розташованої на лівому кінці зв’язку, а також лише ті рядки таблиці, розташованої на правому кінці, які збігаються. Праве зовнішнє з’єднання повертає всі рядки таблиці, розташованої праворуч, і лише ті рядки розташованої ліворуч таблиці, які збігаються.
Примітка.: У цьому випадку словами "ліворуч" і "праворуч" позначається положення таблиці в діалоговому вікні Редагування зв’язків, а не у вікні "Зв’язки".
Слід поміркувати над тим, який результат найчастіше вимагається від запиту, що об’єднує таблиці в цьому зв’язку, після чого настроїти відповідний тип об’єднання.
Настроювання типу об’єднання
-
У діалоговому вікні Редагування зв’язків натисніть кнопку Тип об’єднання.
Відкриється діалогове вікно Параметри об’єднання.
-
Виберіть потрібний варіант і натисніть кнопку OK.
У наведеній нижче таблиці (де використовуються таблиці "Клієнти" та "Замовлення") показано три параметри, які відображаються в діалоговому вікні Параметри об’єднання, тип об’єднання, який використовується, а також указано, які рядки повертаються для кожної таблиці – всі чи лише ті, що збігаються.
Вибір |
Реляційне об’єднання |
Ліва таблиця |
Права таблиця |
---|---|---|---|
1. Включати лише рядки, де збігаються об’єднані поля з обох таблиць. |
Внутрішні об’єднання |
Рядки зі збігами |
Рядки зі збігами |
2. Включити ВСІ записи з таблиці "Клієнти" та лише ті записи з таблиці "Замовлення", де об’єднані поля рівні. |
Ліве зовнішнє з’єднання |
Усі рядки |
Рядки зі збігами |
3. Включити ВСІ записи з таблиці "Замовлення" та лише ті записи з таблиці "Клієнти", де об’єднані поля рівні. |
Праве зовнішнє з’єднання |
Рядки зі збігами |
Усі рядки |
Якщо вибрати параметр 2 або 3, на лінії зв’язку відображатиметься стрілка. Ця стрілка вказує сторону зв’язку, з якої відображаються лише рядки зі збігами.
Внесення змін у діалоговому вікні "Параметри об’єднання"
-
На вкладці Знаряддя бази даних у групі Зв’язки натисніть кнопку Зв’язки.
-
На вкладці Конструктор зв'язків у групі Зв'язки натисніть кнопку Усі зв'язки.
Відобразяться всі таблиці зі зв'язками з лініями зв'язків. Зверніть увагу, що приховані таблиці (таблиці, у діалоговому вікні Властивості яких установлено прапорець Прихований) не відображатимуться, якщо в діалоговому вікні Параметри переходів не встановлено прапорець "Відображати приховані об’єкти". -
Клацніть лінію того зв’язку, який потрібно змінити. Вибрана лінія зв’язку стане товстішою.
-
Двічі клацніть лінію зв’язку Відобразиться діалогове вікно Редагування зв’язків.
-
Натисніть кнопку Тип об’єднання.
-
У діалоговому вікні Параметри об'єднання виберіть потрібний параметр і натисніть кнопку OK.
-
Внесіть додаткові зміни у зв’язок і натисніть кнопку OK.
Забезпечення цілісності даних
Цілісність даних дає змогу уникати утворення відірваних записів, тобто таких, що посилаються на записи, яких не існує. Забезпечити цілісність можна, застосувавши відповідний параметр до зв’язку таблиці. Після цього в Access відхилятимуться будь-які операції, які можуть призвести до порушення цілісності даних цього зв’язку таблиці. Це означає, що Access не виконуватиме операції оновлення та вилучення, які впливають на об’єкт посилання. Відомості про те, як забезпечити узгоджене змінення всіх пов’язаних рядків в Access під час оновлення й видалення посилань, див. в розділі Налаштування каскадних параметрів.
Увімкнення або вимкнення цілісності даних
-
На вкладці Знаряддя бази даних у групі Зв’язки натисніть кнопку Зв’язки.
-
На вкладці Конструктор зв'язків у групі Зв'язки натисніть кнопку Усі зв'язки.
Відобразяться всі таблиці зі зв'язками з лініями зв'язків. Зверніть увагу, що приховані таблиці (таблиці, у діалоговому вікні Властивості яких установлено прапорець Прихований) не відображатимуться, якщо в діалоговому вікні Параметри переходів не встановлено прапорець "Відображати приховані об’єкти". -
Клацніть лінію того зв’язку, який потрібно змінити. Вибрана лінія зв’язку стане товстішою.
-
Двічі клацніть лінію зв’язку Відкриється діалогове вікно Редагування зв’язків.
-
Установіть або зніміть прапорець Забезпечення цілісності даних.
-
Внесіть додаткові зміни у зв’язок і натисніть кнопку OK.
Коли активовано функцію забезпечення цілісності даних, застосовуються такі правила:
-
У полі зовнішнього ключа зв’язаної таблиці не можна вводити значення, відсутнє в полі первинного ключа головної таблиці. Така дія призвела б до створення відірваних записів.
-
З головної таблиці не можна видаляти записи, якщо цим записам відповідають записи в пов’язаній таблиці. Наприклад, не можна видаляти запис про працівника з таблиці "Працівники", якщо в таблиці "Замовлення" цьому працівнику відповідають будь-які замовлення. Проте первинний запис і всі пов’язані з ним записи можна видалити однією дією, установивши прапорець Каскадне видалення пов’язаних полів.
-
Не можна змінювати значення первинного ключа в головній таблиці, якщо це призведе до появи відірваних записів. Наприклад, не можна змінювати номер замовлення в таблиці ''Замовлення'', якщо замовленню призначено позицію в таблиці ''Відомості про замовлення''. Проте первинний запис і всі пов’язані з ним записи можна оновлювати за одну дію, установивши прапорець Каскадне оновлення пов’язаних полів.
Примітки.: У разі виникнення труднощів із забезпеченням цілісності даних зверніть увагу, що для цього мають виконуватися такі умови:
-
Спільне поле в головній таблиці має бути первинним ключем, або в нього має бути унікальний індекc.
-
Спільні поля мають містити дані одного типу. Єдиний виняток полягає в тому, що поле "Лічильник" можна пов’язувати з полем "Число", якщо його властивість Розмір поля має значення Довге ціле число.
-
Обидві таблиці мають перебувати в одній базі даних Access. Цілісність зв’язків між зв’язаними таблицями з різних баз даних не забезпечується. Проте якщо вихідні таблиці мають формат Access, можна відкрити базу даних, де їх збережено, і активувати функцію цілісності зв’язків у ній.
-
Настроювання каскадних параметрів
Іноді трапляються ситуації, коли дійсно потрібно змінити значення на стороні зв’язку "один". У такому разі потрібно, щоб усі пов’язані рядки автоматично оновлювалися в рамках однієї операції. Це дасть змогу виконати повне оновлення й уникнути неузгодженого стану бази даних, коли одні рядки оновлено, а інші – ні. У програмі Access для цього передбачено параметр "Каскадне оновлення пов’язаних полів". Якщо застосувати цілісність зв’язків, вибрати параметр "Каскадне оновлення пов’язаних полів" і оновити первинний ключ, усі поля, які посилаються на первинний ключ, автоматично оновляться.
Крім того, іноді потрібно видалити рядок і всі пов’язані з ним записи, наприклад запис про перевізника та всі пов’язані з ним замовлення. Для цього в Access передбачено параметр "Каскадне видалення пов’язаних полів". Якщо активувати функцію цілісності даних і вибрати параметр Каскадне видалення пов’язаних полів, усі записи, які посилаються на первинний ключ, автоматично вилучатимуться, коли ви видалите запис із первинним ключем.
Увімкнення або вимкнення каскадного оновлення та (або) видалення
-
На вкладці Знаряддя бази даних у групі Зв’язки натисніть кнопку Зв’язки.
-
На вкладці Конструктор зв'язків у групі Зв'язки натисніть кнопку Усі зв'язки.
Відобразяться всі таблиці зі зв'язками з лініями зв'язків. Зверніть увагу, що приховані таблиці (таблиці, у діалоговому вікні Властивості яких установлено прапорець Прихований) не відображатимуться, якщо в діалоговому вікні Параметри переходів не встановлено прапорець "Відображати приховані об’єкти". -
Клацніть лінію того зв’язку, який потрібно змінити. Вибрана лінія зв’язку стане товстішою.
-
Двічі клацніть лінію зв’язку
Відкриється діалогове вікно Редагування зв'язків . -
Установіть прапорець Забезпечення цілісності даних.
-
Установіть один із прапорців Каскадне оновлення пов’язаних полів і Каскадне видалення пов’язаних полів або обидва одразу.
-
Внесіть додаткові зміни у зв’язок і натисніть кнопку OK.
Примітка.: Якщо первинний ключ – це поле типу "Лічильник", установлення прапорця Каскадне оновлення пов’язаних полів не матиме наслідків, оскільки значення в полі "Лічильник" змінювати не можна.
Видалення зв’язку між таблицями
Увага!: Якщо вилучити зв’язок, вимикається також і функція забезпечення цілісності даних, якщо її активовано. Як наслідок, створення відірваних записів на стороні зв’язку "багато" автоматично не блокуватиметься.
Щоб вилучити зв’язок між таблицями, потрібно видалити лінію зв’язку у вікні ''Зв’язки''. Наведіть курсор на лінію зв’язку та клацніть її. Виділена лінія зв’язку стане товстішою. Виділивши лінію зв’язку, натисніть клавішу Delete.
-
На вкладці Знаряддя бази даних у групі Зв’язки натисніть кнопку Зв’язки.
-
На вкладці Конструктор зв'язків у групі Зв'язки натисніть кнопку Усі зв'язки.
Відобразяться всі таблиці зі зв'язками з лініями зв'язків. Зверніть увагу, що приховані таблиці (таблиці, у діалоговому вікні Властивості яких установлено прапорець Прихований) не відображатимуться, якщо в діалоговому вікні Параметри переходів не встановлено прапорець "Відображати приховані об’єкти". -
Клацніть лінію того зв’язку, який потрібно видалити. Вибрана лінія зв’язку стане товстішою.
-
Натисніть клавішу Delete.
-
Може з’явитися повідомлення Справді остаточно видалити вибраний зв’язок із бази даних?. У разі появи цього повідомлення натисніть кнопку Так.
Примітка.: Якщо одну з таблиць, задіяних у зв’язку, використовує зараз інший користувач чи процес, або ця таблиця застосовується у відкритому об’єкті бази даних (наприклад, у формі), зв’язок видалити не вдасться. Перш ніж видаляти зв’язок, спочатку необхідно закрити об’єкти, у яких використовуються ці таблиці.
Див. також
Додавання поля підстановки до таблиці
Порівняння двох таблиць в Access і пошук лише відповідних даних