Ключові поля, індекси, зв’язування таблиць
За навчальною програмою 2018 року
Урок 8
10
(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Згадаємо, що кожна таблиця повинна мати ключове поле, тобто поле, значення якого не повторюються в жодному іншому записі. Таблиця може мати кілька, ключових полів, але використовується лише одне з них, яке називають первинним ключем.
Найчастіше первинний ключ складається з одного поля й у ролі первинного ключа застосовується поле типу Автонумерація.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Якщо в ролі первинного ключа використовуються два і більше полів, його називають складним.
Наприклад, у таблиці КАДРИ поле Прізвище не може бути первинним ключем, оскільки в мережі цих магазинів може бути працівник із таким самим прізвищем.
А спільно поля:
Прізвище
Рік народження
та
можна вважати таким ключем, тому що вони, імовірно, не дублюються.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Але складні ключі бажано не використовувати як первинний ключ, оскільки в цьому випадку ускладнюється процес роботи з БД.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Для створення первинного ключа слід відкрити таблицю в режимі конструктора, виділити поле, яке використовується як первинний ключ, і натиснути кнопку Ключове поле, що міститься в розділі Знаряддя вкладки Конструктор.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Первинний ключ можна створити також за допомогою контекстного меню певного поля, у якому необхідно виконати команду Ключове поле. Для цього таблиця відкривається в режимі конструктора.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Скористаємося цим способом і в таблиці МАГАЗИНИ визначимо як первинний ключ поле Номер магазина. Поряд із його назвою з'явиться малюнок ключа. Далі збережемо цю таблицю.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Якщо деяке поле в процесі створення структури таблиці оголошено типу Автонумерація, тобто типу Лічильник, то воно за замовчуванням стає ключовим.
Його можна також додати в таблицю, навіть у тому випадку, якщо необхідність у ньому відсутня. Поле типу Лічильник обов'язково встановлюється в тому разі, якщо ключ у таблиці взагалі визначити неможливо.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Розглянемо тепер сутність і порядок індексування таблиць.
Індексування — це процес створення додаткових таблиць для певного поля.
Ці таблиці зазвичай містять тільки одне поле (їх називають простими індексними таблицями), у якому зберігаються вказівники на певні записи таблиці. За допомогою вказівників визначають порядок розміщення записів, упорядкованих за значенням цього поля.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Наприклад, індексна таблиця для поля Директор таблиці МАГАЗИНИ буде мати такі значення:
Індексна таблиця для поля Директор таблиці МАГАЗИНИ
2 |
1 |
3 |
Цифра 2 у першому рядку означає, що першим за алфавітом у таблиці є друге прізвище (Борзов А. С)
цифра 1 — що другим за алфавітом є перше прізвище (Коцюба П. М,)
цифра 3 — що третім за алфавітом є третє прізвище в таблиці (Середа К.М.).
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Індексних таблиць для конкретної таблиці бази даних може бути кілька, наприклад, за кількістю працівників, за номерами магазинів тощо.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Головне призначення індексних таблиць — підвищення швидкості пошуку необхідних даних (інколи вона може вп'ятеро пришвидшитися).
Щоб знайти деякий запис у таблиці, в Access 2016 спочатку знаходять його положення в індексі, потім вибирають із нього місце запису в таблиці, яка використовується для пошуку даних. Поля, значення яких змінюються часто, індексувати недоцільно, для однієї таблиці бажано мати не більше 5-6 індексних таблиць.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Зазначимо, що первинний ключ завжди індексований. За замовчуванням записи таблиці виводяться відсортованими за його значеннями. У процесі введення даних у таблицю обов'язково перевіряється значення первинного ключа на дублювання. Якщо значення дублюється, введення запису блокується.
Значення первинного ключа типу Лічильник у процесі введення даних формується автоматично.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Створимо, наприклад, просту індексну таблицю для полів Директор і Працівників таблиці МАГАЗИНИ.
Для цього відкриваємо таблицю в режимі Конструктора, вибираємо поле Директор і в розділі Властивості поля в рядку Індексовано вмикаємо перемикач Так (Без повторень), оскільки малоймовірно, що в цій мережі магазинів будуть два директори з однаковим прізвищем.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Для поля Працівників умикаємо перемикач Так (Повторення дозволені), тому що в магазинах можлива однакова кількість працівників.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Головна вимога до ключів така: значення зовнішнього ключа мають збігатися зі значеннями первинного ключа головної таблиці.
Для зв'язування двох таблиць одна з них вважається головною, а друга — допоміжною. Первинний ключ головної таблиці зв'язується з зовнішнім ключем другої.
Імена цих ключів можуть бути різними, але якщо їхні імена однакові, то процес зв'язування таблиць буде простішим.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Часто первинний ключ таблиці штучно вводять у другу таблицю саме з метою їх зв'язування. Але цей ключ не є первинним ключем другої таблиці, оскільки його значення можуть повторюватися.
Наприклад, поле Магазин є первинним ключем таблиці МАГАЗИНИ, а в таблиці КАДРИ це поле є зовнішнім ключем, тому що в ній значення цього поля дублюються.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Розглянемо порядок створення зв'язку в таблицях МАГАЗИНИ і КАДРИ.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
відпускаючи її, переміщуємо курсор у поле зовнішнього ключа й відпускаємо кнопку. У результаті відкриється вікно Редагування зв'язків.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
Після цього стануть доступними прапорці Каскадне оновлення пов'язаних полів і Каскадне видалення пов'язаних полів. Умикаємо прапорець Каскадне видалення пов'язаних полів.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
Сутність каскадного оновлення пов'язаних полів полягає в тому, що за будь-якої зміни первинного ключа в головній таблиці автоматично оновиться значення відповідного поля в усіх зв'язаних таблицях.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
Таким чином, каскадне оновлення та каскадне видалення прискорюють роботу з БД і сприяють підвищенню надійності її функціонування.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
Далі необхідно натиснути кнопку Тип об'єднання.... З'явиться вікно Параметри об'єднання.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Продовження…
Потім слід натиснути в цьому вікні кнопку ОК і закрити вікно Редагування зв'язків.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Для перегляду всіх зв'язків між таблицями бази даних необхідно на відкритій вкладці Знаряддя бази даних натиснути кнопку Зв'язки, активізувати вкладку Конструктор і в розділі Зв'язок натиснути кнопку Усі зв'язки.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Якщо схема складна, можна приховати частину таблиць і зв'язків, видаливши їх із вікна Зв'язки, для чого необхідно виділити певну таблицю й натиснути клавішу Del. У цьому разі зв'язки й таблиці видаляються лише з вікна, фізично вони залишаються, тому їх можна відновити в будь-який час.
10�(11)
Ключові поля, індекси,�зв’язування таблиць
Розділ 2 § 2.3
Для скасування зв'язку між таблицями необхідно встановити курсор на лінії зв'язку, натиснути кнопку миші, а потім — клавішу Del. Можна також відкрити контекстне меню лінії зв'язку й виконати команду Видалити.
10�(11)
Запитання для самоперевірки знань
Розділ 2 § 2.3
10�(11)
Домашнє завдання
Проаналізувати
§ 2.3, ст. 28-33
Розділ 2 § 2.3
10�(11)
Працюємо за комп’ютером
Розділ 2 § 2.3
Сторінка
33
10�(11)
Дякую за увагу!
За навчальною програмою 2018 року
Урок 8
10
(11)