четверг, 2 апреля 2020 г.

Інформатика для груп 1-1, 2-2, 2-3, Урок 21. Тема: Ключі й зовнішні ключі. Зв’язки між записами й таблицями. Визначення типу зв’язку


Урок 21
Тема: Ключі й зовнішні ключі. Зв’язки між записами й таблицями. Визначення типу зв’язку

Ви дізнаєтеся:
v . зв’язки яких типів можуть існувати між сутностями;
v . як побудувати модель даних предметної області;
v . чим відрізняються таблиці баз даних і таблиці табличного процесора;
v . як змінити структуру таблиці бази даних;
v . як налаштувати параметри зв’язків між таблицями

Зв’язки яких типів можуть існувати між сутностями?
Між двома сутностями, наприклад, А і Б, можливі чотири типи зв’язків 
(мал. 16.1):

«один-до-одного» (1:1) означає, що в кожний момент часу кожному екземпляру сутності А відповідає 1 або 0 екземплярів сутності Б;

«один-до-багатьох» (1:N) — одному екземпляру сутності А відповідає 0, 1 або більше екземплярів сутності Б;
«багато-до-одного» (N:1) — обернений випадок до попереднього;
«багато-до-багатьох» (N:М) — одному екземпляру сутності А відповідає 0, 1 або більше екземплярів сутності Б, і навпаки, одному екземпляру сутності Б відповідає 0, 1 або більше екземплярів сутності А.

Наведемо декілька прикладів. Учень отримав у шкільній бібліотеці підручник з алгебри для 10 класу. Зв’язок між читацьким формуляром учня та книгою обліку підручників — «один-до-одного», оскільки один учень користується підручником з таким інвентарним номером. На уроках української літератури учні вивчають творчість сучасного українського поета. У бібліотеці твори цього автора видають на короткий проміжок часу. Тому в багатьох читацьких формулярах є запис про одну й ту саму книжку (маємо зв’язок «багато-до-одного»). У декількох читацьких формулярах є записи щодо користування бібліотечним фондом за різними рубриками: підручники, художня література, періодичні видання (зв’язок «багато-до-багатьох»). В одному читацькому формулярі записано дані про всі підручники, якими користується читач протягом навчального року (зв’язок «один-до-багатьох»).
Звичайний зв’язок у реляційних базах даних — це «один-до-багатьох».
Якщо ви виявили зв’язок між вашими таблицями «один-до-одного», то швидше за все потрібно переглянути структуру. Можливо те, що ви виділили як дві окремі сутності, насправді є однією, і їх потрібно об’єднати в одну таблицю. При зв’язку «багато-до-багатьох» необхідно також переглянути структуру та пов’язати дві сутності таким чином, щоб зв’язок між ними був «один-до-багатьох». Якщо серед атрибутів не виявлено потрібної пари для зв’язку, то в цьому разі створюють так звану зв’язуючу таблицю, яка має зв’язки з кожною із сутностей як «один-до-багатьох».

Як побудувати модель даних предметної області?
Процес побудови моделі даних предметної області належить до абстрактного моделювання і, як правило, поділяється на кілька етапів, що базуються на системному підході. Ці етапи розглянемо на прикладі.
Побудуємо модель бази даних Бібліотека.
1. Визначення мети створення бази даних.
На першому етапі побудови моделі необхідно визначити мету створення бази даних, основні її функції та набір даних, які будуть зберігатися, тобто визначити основний зміст таблиць бази даних і дані, що зберігатимуться в полях таблиць.
Під час роботи з базою даних Бібліотека користувач може шукати
відповіді на такі запитання:
Чи є в бібліотеці конкретна книжка?
Чи є книжка в наявності?
Книжки яких авторів даної тематики є в бібліотеці?
Які книжки даної тематики видано в заданий період?
Які видавництва публікують книжки даної тематики?
Яке видавництво видало дану книжку?
Як зв’язатися з видавництвом для того, щоб замовити книжки?
Таким чином, можна так сформулювати мету створення цієї бази даних: зберігати дані про книжки, авторів та видавництва для подальшого задоволення запитів користувачів.
2. Розробка таблиць, з яких складатиметься база даних.
Одним з найскладніших етапів у процесі побудови моделі є розробка таблиць, оскільки очікувані результати не завжди дають повне уявлення про структуру таблиць.
Наприклад, відносно бази даних Бібліотека можна виділити три об’єкти (сутності), характеристики яких можна зберігати в таблицях, а саме: книжка, автор, видавництво. Причому, з огляду на перший етап, для кожного об’єкта можна виділити такі атрибути:
КНИЖКА (назва книжки, автор, кількість сторінок, видавництво, рік видання, ціна, наявність у сховищі, тематика, ключові слова);
АВТОР (прізвище, ім’я, по батькові, жанр творчості);
ВИДАВНИЦТВО (назва, адреса, спеціалізація, сайт).
Для опису кожного виділеного об’єкта доцільно побудувати таблицю, до якої внести імена атрибутів об’єктів і типи значень цих атрибутів, а також обмеження на їх значення.
Під час проектування таблиць спочатку краще розробити їх структуру на папері, при цьому доцільно користуватися такими основними правилами.
Дані в таблиці не повинні дублюватися, також не має бути повторень між таблицями. Якщо деякі дані зберігатимуться тільки в одній таблиці, то і змінювати їх доведеться тільки в одному місці.
Це виключає можливість розбіжності даних у різних таблицях. Наприклад, у таблиці Книжка може міститися назва книжки, її автор, видавництво, рік видання. Ці відомості не мають повторюватися в інших таблицях, достатньо ввести поле Книжка, для якого встановити зв’язок із ключовим полем таблиці Книжка.
Кожна таблиця має містити дані лише з однієї теми. Дані з кожної теми опрацьовуються значно легше, якщо вони містяться в незалежних одна від одної таблицях. Наприклад, адреса видавництва й відомості про книжки зберігаються в різних таблицях — з тим, щоб при видаленні відомостей про книжку дані стосовно видавництва залишалися в базі даних, а при закритті видавництва відомості про книжки, що видані ним раніше, не були також видалені.
3. Визначення полів таблиці.
Кожна таблиця містить дані окремої теми, а кожне поле в таблиці містить окреме значення. Наприклад, у таблиці з даними про авторів можуть міститися поля з прізвищем, адресою та номером телефону. Під час розроблення полів для кожної таблиці необхідно пам’ятати:
кожне поле має відповідати темі таблиці;
не рекомендується включати до таблиці дані, які є результатом обчислення значень виразів;
у таблиці слід розміщувати всі необхідні дані;
дані потрібно ділити на найменші логічні одиниці (наприклад, поля Ім’я і Прізвище, а не загальне поле ПІБ, поля Місто, Вулиця, Будинок, Квартира, а не загальне поле Адреса).
4. Визначення ключа таблиці.
Кожна таблиця має містити поле або набір полів, які задаватимуть унікальне значення кожному запису в таблиці, за яким можна точно визначити потрібний запис. Таке поле або набір полів називають основним ключем.
5. Визначення зв’язків між таблицями.
Після розподілу даних у таблицях і визначення ключових полів необхідно вибрати схему для зв’язування даних у різних таблицях. Для цього
слід визначити зв’язки між таблицями. Наприклад, Автор Книжка (зв’язок 1:N), Видавництво Книжка (зв’язок 1:N).
6. Оновлення структури бази даних.
Після опису таблиць, полів і зв’язків необхідно ще раз переглянути структуру бази даних і виявити можливі недоліки. Крім того, потрібно виключити з таблиць усі можливі повторення даних.
 Чим відрізняються таблиці баз даних і таблиці табличного процесора?
На відміну від таблиць табличного процесора, таблиці баз даних мають чітко визначену структуру, яка формується в режимі конструктора таблиць.
Структура таблиці — це набір поіменованих полів, у яких описують  властивості об’єктів.
У режимі конструктора не передбачено введення, редагування та перегляд даних таблиці, його використовують лише для створення та зміни структури таблиці.
Створення структури таблиці як об’єкта бази даних передбачає такі дії.
1. Визначення параметрів (атрибутів), що характеризуватимуть властивості об’єкта і значення яких будуть занесені до полів конкретної таблиці бази даних.
2. Надання унікального імені кожному полю таблиці, яке будується за певними правилами.
3. Визначення формату подання даних у кожному полі, тобто типу даних та необхідних обмежень.
4. Визначення ключового поля чи сукупності ключових полів.
Існують ключі двох типів: первинні й вторинні (зовнішні). Якщо для таблиці визначені ключові поля, то MS Access запобігає дублюванню або введенню порожніх значень у ці поля.
Первинний ключ — це одне або кілька полів (стовпців), комбінація значень яких однозначно визначає кожний запис у таблиці. Первинний ключ не допускає значень Null і завжди повинен мати унікальний індекс. Первинний ключ використовується для зв’язування таблиці із зовнішніми ключами в інших таблицях.
Зовнішній (вторинний) ключ — це одне або кілька полів (стовпців) у
таблиці, що містять посилання на поле або поля первинного ключа в іншій таблиці. Зовнішній ключ визначає спосіб об’єднання таблиць.
З двох логічно пов’язаних таблиць одну називають таблицею первинного ключа, або головною таблицею, а іншу — таблицею вторинного  (зовнішнього) ключа, або підпорядкованою таблицею. СКБД дають змогу зіставити споріднені записи з обох таблиць і спільно вивести їх у формі, звіті або запиті.
Існує три типи первинних ключів: ключові поля лічильника (лічильник), простий ключ і складений ключ.
Поле лічильника (тип даних «автозаповнення»). Для кожного запису цього поля таблиці автоматично заноситься унікальне числове значення.
Простий ключ. Якщо поле містить унікальні значення, такі як коди чи інвентарні номери, то це поле можна визначити як первинний ключ. Ключем можуть бути всі поля, що містять дані, якщо вони не містять повторювані значення або значення Null.
Складені ключі. У випадках, коли неможливо гарантувати унікальність значень кожного поля, існує можливість створити ключ, що складається з декількох полів. Найчастіше така ситуація виникає для таблиці, використовуваної для зв’язування двох таблиць відношенням «багатодо-багатьох».
Зауважте, що в полі первинного ключа мають бути тільки унікальні значення в кожному рядку таблиці, тобто збіг не допускається, а в полі вторинного або зовнішнього ключа збіг значень у рядках таблиці допускається.
Якщо виникають труднощі з вибором потрібного типу первинного ключа, то як ключ доцільно вибрати поле лічильника.

Як змінити структуру таблиці бази даних?
Залежно від потреб користувачів, можна змінювати структуру таблиць бази даних шляхом:
зміни порядку розташування полів;
видалення (додавання) нового поля;
зміни назв полів;
зміни властивостей полів;
зміни типів даних;
додавання чи зміни ключового поля.
Вікно конструктора таблиць містить п’ять основних елементів (мал. 16.2).
У верхній частині розташовані три стовпці, що мають назви Ім’я поля, Тип даних, Опис. У нижній частині вікна конструктора містяться дві вкладки, що описують властивості поля: Загальні та Підстановка.
У першому стовпці користувач задає імена полів таблиці, які б відображали вміст даних у цих полях. При цьому треба звернути увагу на те, що стовпці в таблиці будуть розташовані саме в тому порядку, в якому вони задані. Під час створення або редагування імен полів потрібно дотримуватися таких правил:
назви полів у межах однієї таблиці не повинні повторюватися (тобто мають бути унікальними);
імена полів не мають перевищувати 64 символи;
бажано не використовувати як назви полів вбудовані функції (наприклад, Name — ім’я);
назва поля не має починатися з пропуску;
імена полів та інших об’єктів MS Access можуть бути комбінацією з букв, цифр і спеціальних символів, крім символів . ! , ` [ ]. Бажано не використовувати символ пропуск у назвах полів.
Тип даних обирається зі списку типів, що підтримуються системою керування базами даних. Найбільш вживаними є типи: текстовий, числовий, дата/час, автозаповнення.
Необхідні обмеження на введення даних можна задати (чи змінити), якщо перейти до вкладки Властивості поля/Загальні:
розмір поля — задає довжину значення, яке буде зберігатися в цьому полі;
формат поля — визначає, як буде відображатися збережене в таблиці значення;
маска введення — допомагає користувачеві вводити дані в заданому форматі;
підпис — визначає, як буде підписуватися поле під час перегляду даних.
 
Як налаштувати параметри зв’язків між таблицями?
Для організації подальшого пошуку та відбору даних з логічно пов’язаних таблиць бази даних спочатку потрібно встановити зв’язки між створеними таблицями. У більшості випадків зв’язують ключове поле однієї таблиці (первинний ключ) з відповідним йому полем в іншій таблиці (зовнішній ключ). У зв’язаних полів не обов’язково мають бути однакові імена, але в них мають зберігатися дані одного типу, і вони повинні мати однакові розміри для збереження вмісту.
Переглянути та відредагувати зв’язки між таблицями в середовищі
MS Access можна за допомогою засобу Схема даних, викликати який можна за допомогою вказівки Знаряддя бази даних/Схема даних  на панелі інструментів.
Як правило, таблиці, між якими створено зв’язки, відображаються на схемі даних автоматично. Якщо відображено не всі потрібні таблиці, їх можна додати до схеми даних за допомогою вказівки Відобразити таблицю на вкладці Конструктор та відповідної кнопки на панелі інструментів.
Змінити параметри зв’язків можна в діалоговому вікні Редагування зв’язків, яке відкривається, якщо двічі клацнути на потрібному зв’язку або з його контекстного меню вибрати вказівку Змінити зв’язки. Зв’язки між полями таблиць можуть мати такі параметри: Забезпечення цілісності даних, Каскадне оновлення пов’язаних полів, Каскадне видалення пов’язаних полів (мал. 16.3).
Цілісність даних означає систему правил для підтримки зв’язків між записами у зв’язаних таблицях, а також забезпечує захист від випадкового вилучення або зміни зв’язаних даних.
Включення параметрів Каскадне оновлення пов’язаних полів і Каскадне видалення пов’язаних полів дає змогу зняти обмеження на вилучення або зміну зв’язаних записів, зберігаючи при цьому цілісність даних. Якщо встановлено параметр Каскадне оновлення пов’язаних полів, то при зміні ключового поля головної таблиці автоматично змінюються й відповідні значення зв’язаних записів. Якщо встановлено параметр Каскадне видалення зв’язаних полів, то при вилученні запису в головній таблиці вилучаються і всі зв’язані записи в підлеглій таблиці.


Самостійне завдання.
Вправа 1. Перегляд зв’язків між таблицями та налаштування параметрів
зв’язків.
Завдання. Для зв’язків між таблицями бази даних Учні встановіть параметри
Забезпечення цілісності даних, Каскадне оновлення пов’язаних полів та Каскадне видалення пов’язаних полів.
1. Відкрийте вікно бази даних Учні, яка збережена в папці Бази даних на спільному ресурсі. Виконайте вказівку Знаряддя бази даних/Зв’язки.
2. Двічі клацніть на зв’язку між таблицями Вулиці та Район. Встановіть усі три
прапорці в області Забезпечення цілісності даних і натисніть кнопку ОK.
3. Клацніть правою клавішею миші на зв’язку між таблицями Учні та Вулиці. Встановіть усі три прапорці та натисніть кнопку OK. Закрийте схему даних.

Зразок виконання вправи 1. Перегляд зв’язків між таблицями та налаштування параметрів зв’язків.
 (Перегляньте уважно відео за посиланням https://www.youtube.com/watch?v=HnpSdOZmK9E&list=PLafE3aTB6JO1xX_UlHgCOrK6mgCXWMNhI&index=42&t=0s

або за QR кодом 



Комментариев нет:

Отправить комментарий