MS Access дозволяє створювати реляційні бази даних, що включають безліч пов'язаних один з одним таблиць. Для цього слід в першу чергу розробити схему "сутність-зв'язок", візуально відображає зв'язки між таблицями і вказує поля, за якими здійснюється такий зв'язок.
Мета практичного заняття - вивчити методику розробки інфологічної моделі БД, познайомитися з основними можливостями програми MS Access при створенні складних запитів.
1. Розробка інфологічної моделі і створення структури реляційної бази даних
Слово «реляційна» походить від англ.relation - отношеніе.Отношеніе - тематичне поняття, але в термінології моделей даних відносини зручно зображувати у вигляді двомірної таблиці. При цьому рядки таблиці (записи) соответствуюткортежам відносини. а стовпці -атрібутам (полях).
Ключем називають будь-яку функцію від атрибутів записи, яка може бути використана для її ідентифікації. Така функція може бути значенням одного з атрибутів (простий ключ), задаватися алгебраїчним виразом, що включає значення декількох атрибутів (складовою ключ). Це означає, що дані в рядках кожного з стовпців складеного ключа можуть повторюватися, але комбінація даних кожного рядка цих стовпців є унікальною. Наприклад, в табліцеСтуденти є столбциФаміліі іГод народження. У кожному зі стовпців є деякі дані, що повторюються, тобто однакові прізвища та однакові року народження. Але якщо студенти, які мають однакові прізвища, мають різні роки народження, то ці стовпчики можна використовувати в якості складового ключа. Як правило, ключ є унікальним, тобто кожен кортеж визначається значенням ключа однозначно, але іноді використовують і не унікальні ключі (ключі з повтореннями). ВMS Access вводиться термінключевое поле. яке можна трактувати какпервічний ключ.
У MSAccess можна виділити три типи ключових полів: простий ключ, складовою ключ івнешній ключ.
Одне з найважливіших достоїнств реляційних БДсостоіт в тому, що можна зберігати логічно згруповані дані в різних таблицях і задавати зв'язки між ними, об'єднуючи їх в єдину базу. Для завдання зв'язку таблиці повинні мати поля з однаковими іменами або хоча б з однаковими форматами даних. Зв'язок між таблицями встановлює стосунки між співпадаючими значеннями в цих полях. Така організація даних дозволяє зменшити надмірність збережених даних, спрощує їх введення і організацію запитів і звітів.
Пояснимо це на прикладі. Припустимо, в базі треба зберігати, дані про студентів (прізвище, яка вивчалася дисципліна) і викладачів (прізвище, номер кафедри, науковий ступінь, преподаваемая дисципліна). Якщо зберігати дані в одній таблиці, то в рядку з прізвищем студента, який вивчає конкретну дисципліну, будуть зберігатися всі атрибути викладача, який читає цю дисципліну. Це являє надмірність даних. А якщо зберігати дані про студента в одній таблиці, про викладача - в інший і встановити зв'язок між полями "Викладає дисципліни" - "Досліджувана дисципліна" (фактично це однакові поля), то надмірність збережених даних багаторазово зменшиться без шкоди для логічної організації інформації.
У MSAccess можна задати три види зв'язків між записами двох таблиць: Один-до-багатьох, Багато-до-багатьох іОдін-к-одному (рис. 1.1) .типа створюваної зв'язку залежить від полів, для яких визначається зв'язок:
зв'язок Один-до-багатьох створюється в тому випадку, коли тільки одне з полів є ключовим або має унікальний індекс, тобто значення в ньому не повторюються;
зв'язок Один-до-одному створюється в тому випадку, коли обидва пов'язують поля є ключовими або мають унікальні індекси;
зв'язок Багато-до-багатьох фактично представляє дві зв'язку типу один-ко-многим через третю таблицю, ключ якої складається, принаймні, з двох полів, загальних для двох інших таблиць.
Зв'язки між таблицями реляційної БД інтерпретуються як обмеження, які накладаються на вміст таблиць. Наявність зв'язків встановлює, крім того, ще й певні правила, за якими може здійснюватися оновлення даних:
перш ніж видаляти запис з головної таблиці, слід видалити всі пов'язані записи з підлеглої таблиці;
при введенні нових даних спочатку створюються записи в головній таблиці, а потім - в підлеглій;
зміна значень ключових полів в головній таблиці повинні призводити до зміни значень зовнішнього ключа в підпорядкованій таблиці.
Цілісність даних означає систему правил, використовуваних в СУБД для підтримки зв'язків між записами в зв'язаних таблицях (таблиць, об'єднаних за допомогою зв'язку), а також забезпечує захист від випадкового видалення або зміни зв'язаних даних. Контролювати цілісність даних можна, якщо виконані наступні умови:
пов'язане поле (поле, за допомогою якого здійснюється зв'язок) однієї таблиці є ключовим полем або має унікальний індекс;
пов'язані поля мають один тип даних. Тут існує виняток. Поле лічильника може бути пов'язано з числовим полем, якщо воно має тип Довге ціле;
обидві таблиці належать одній базі даних MS Access. Якщо таблиці є пов'язаними, то вони повинні бути таблицями MS Access. Для установки цілісності даних база даних, в якій знаходяться таблиці, повинна бути відкрита. Для пов'язаних таблиць з баз даних інших форматів встановити цілісність даних неможливо.
Для зображення структури предметної області, яка відображається в БД, використовуються моделі «сутність-зв'язок». або ER-моделі (від англ. Entity-Relationship). Найчастіше проектування БД починає саме з побудови ER-моделі. Найважливішими параметрами, які відображають на цій моделі, є імена таблиць і їх атрибутів, склад первинних ключів, зв'язку між таблицями, а також множинність зв'язків.
Основні правила побудови моделі «сутність-зв'язок»:
таблиці позначаються прямокутниками, в яких зазначаються їх імена;
імена атрибутів таблиць з'єднуються з відповідними прямокутниками лініями;
ключові атрибути позначаються символом «*»;
зв'язку позначаються ромбами, з'єднаними з прямокутниками;
множинність зв'язків вказується на лініях, що з'єднують ромби з прямокутниками; символом «1» позначається множинність «один», символом «М» - множинність «багато».
Зовнішні ключі, тобто атрибути, які вводяться штучно з метою моделювання зв'язків, на моделі «сутність-зв'язок» не відображують.