Опис сутностей і визначення ключових полів
Мал. 1. Опис сутностей
У кожній таблиці БД має бути визначено ключове поле. Цей, так званий первинний ключ, забезпечує унікальність записів в таблиці, перешкоджаючи введенню повторюваних даних. За допомогою ключа СУБД забезпечує швидкий пошук необхідних даних, їх зберігання та обробка.
В якості первинного ключа в базах даних дозволяється використовувати кілька полів. Тоді унікальною повинна бути комбінація значень цих полів (а значення в окремих полях у різних записів таблиці можуть збігатися).
Однак не в усі таблицях можуть міститися ключові поля, що забезпечують унікальність записів в таблиці. Тому дуже часто для створення поля первинного ключа в таблицю додають сурогатний стовпець. Для нього встановлюють тип даних Лічильник. Це штучно введене поле, за унікальність якого відповідає Access. Дані в це поле додаються автоматично при створенні нового запису, найчастіше використовується лічильник зростаючих чисел [3].
Первинний ключ використовується для зв'язування таблиці з зовнішніми ключами - полями в інших таблицях. Зовнішній ключ - одне поле (або кілька полів) таблиці, що містить посилання на поле або поля первинного ключа в іншій таблиці.
У розробленій базі даних «Ремонт комп'ютерів» поле Код комп'ютера в таблиці Комп'ютери є первинним ключем і пов'язаний із зовнішнім ключем Код комп'ютера таблиці Ремонт комп'ютерів. Поле Код майстра таблиці Майстри є первинним ключем і пов'язаний із зовнішнім ключем Код майстра таблиці Ремонт комп'ютерів.
У таблиці Ремонт комп'ютерів в якості первинного ключа використовується вся сукупність полів: Код комп'ютера. Код майстра. Код поломки. Для забезпечення унікальності записів в таблиці Ремонт комп'ютерів додано поле Код замовлення. для якого встановлено тип даних Лічильник.
У таблиці Діагностика несправностей поле Код поломки є первинним і забезпечує зв'язок із зовнішнім ключем Код поломки таблиці Ремонт комп'ютерів.
1.3. Встановлення зв'язків між таблицями та забезпечення цілісності даних
Для того щоб створити єдину інформаційну структуру, всі таблиці бази даних необхідно об'єднати, створивши для цього зв'язку між їх полями. Пов'язані таблиці дають можливість об'єднувати всі дані на основі співпадаючих значень полів.
Зв'язки встановлюються між ключовими полями таблиць. У більшості випадків з первинним ключем однієї таблиці, що є унікальним ідентифікатором кожної її записи, зв'язується зовнішній ключ іншої таблиці.
Між таблицями можуть бути встановлені наступні типи зв'язків [5]:
Зв'язок «один-до-одного» встановлюється у випадках, коли конкретна рядок головної таблиці в будь-який момент часу пов'язана тільки з одним рядком підпорядкованої таблиці. Цей зв'язок найпростіша, але зустрічається вона нечасто. Таблиці, що мають тип зв'язку «один-до-одного», завжди можна скомпонувати в одну.
Зв'язок «один-ко-многим» встановлюється у випадках, коли конкретна рядок головної таблиці в будь-який момент часу пов'язана з кількома рядками підпорядкованої таблиці. При цьому будь-який рядок підпорядкованої таблиці пов'язана тільки з одним рядком головної таблиці.
Зв'язок «багато-до-багатьох» встановлюється у випадках, коли конкретна рядок головної таблиці в будь-який момент часу пов'язана з кількома рядками підпорядкованої таблиці. Фактично такий тип зв'язку - складний і заплутаний, і в базах даних його створювати не дозволяється.
Оскільки в таблиці Комп'ютери для кожного комп'ютера відведена одна запис, то ця таблиця пов'язана з таблицею Ремонт комп'ютерів ставленням типу «один-ко-многим» (над одним комп'ютером можуть проводитися кілька ремонтних робіт).
Оскільки один майстер може полагодити кілька комп'ютерів, між таблицями Майстри і Ремонт комп'ютерів встановлено зв'язок «один-ко-многим».
Таблиця Діагностика несправностей пов'язана з таблицею Ремонт комп'ютерів також зв'язком «один-ко-многим», оскільки один комп'ютер може мати кілька поломок.
Цілісність даних означає систему правил, використовуваних для підтримки зв'язків між записами в зв'язаних таблицях, а також забезпечує захист від випадкового видалення або зміни зв'язаних даних. Встановити цілісність даних можна, якщо виконані наступні умови [4]:
§ Пов'язане поле головної таблиці є ключовим полем або має унікальний індекс;
§ пов'язані поля мають один тип даних;
§ Таблиці належать одній БД Access.
Встановивши цілісність даних, необхідно діяти відповідно до наступних правил [4]:
§ Неможливо ввести в поле зовнішнього ключа зв'язаної таблиці значення, що не міститься в ключовому полі головної таблиці;
§ Не допускається видалення запису з головної таблиці, якщо існують пов'язані з нею записи в підлеглій таблиці;
§ Неможливо змінити значення ключового поля в головній таблиці, якщо існують записи, пов'язані з даним значенням.
Щоб накласти ці правила на конкретну зв'язок, при її створенні слід встановити прапорець Забезпечення цілісності даних. Якщо даний прапорець встановлений, то будь-яка спроба виконати дію, що порушує одне з перерахованих вище правил, призведе до висновку на екран попередження, а сама дія виконано не буде. Щоб подолати обмеження на видалення або зміна пов'язаних записів, зберігаючи при цьому цілісність даних, слід встановити прапорці Каскадне оновлення пов'язаних полів і Каскадне видалення пов'язаних полів. Якщо встановлений прапорець Каскадне оновлення пов'язаних полів. то при зміні ключового поля головної таблиці автоматично змінюються і відповідні значення пов'язаних полів. Якщо встановлений прапорець Каскадне видалення пов'язаних полів. то при видаленні запису в головній таблиці видаляються і всі пов'язані записи в підлеглій таблиці.
Рис.1. схема даних
Наступний крок на шляху проектування структури реляційної бази даних - нормалізація таблиць. Нормалізація - це процес організації даних в базі даних, що включає створення таблиць і встановлення відносин між ними відповідно до правил, які забезпечують захист даних і роблять базу даних більш гнучкою, усуваючи надмірність і неузгоджені залежності.
Нормалізація таблиць є послідовна зміна структури таблиць до тих пір, поки вона не буде задовольняти вимогам останньої форми нормалізації. Всього існує шість форм нормалізації: перша нормальна форма, друга нормальна форма, третя нормальна форма, нормальна форма Бойса-Кодда, четверта нормальна форма і п'ята нормальна форма або нормальна форма проекції-з'єднання [6, 8].
Перша нормальна форма: забороняє повторювані стовпці (що містять однакову за змістом інформацію); забороняє множинні стовпці (що містять значення типу списку і т.п.); вимагає визначити первинний ключ для таблиці, тобто той стовпець або комбінацію стовпців, які однозначно визначають кожен рядок.
У таблицях бази даних «Ремонт комп'ютерів» жодне з полів не містить більше одного значення. У таблиці Комп'ютери все неключових атрибути визначаються ключем Код комп'ютера. У таблиці Майстри в якості первинного ключа використовується Код майстра. а в таблиці Діагностика несправностей - Код поломки. Таблиці відповідають вимогам першої нормальної форми.
Друга нормальна форма. Таблиця знаходиться в другій нормальній формі, якщо вона задовольняє вимогам першої нормальної форми і все її поля, що не входять в первинний ключ, пов'язані повної функціональної залежністю з первинним ключем. У випадках, коли таблиця знаходиться в першій нормальній формі і первинний ключ у неї складається з одного стовпця, то вона автоматично знаходиться в другій нормальній формі.
Можна зробити висновок, що таблиці бази даних «Ремонт комп'ютерів» знаходяться в другій нормальній формі.
Третя нормальна форма. Таблиця знаходиться в третій нормальній формі, якщо вона задовольняє визначенню другий нормальної форми і жодне з не ключовий полів не залежить функціонально від будь-якого іншого не ключового поля.
Таблиця Діагностика несправностей не знаходиться в третій нормальній формі, оскільки поле Способи усунення поломки залежить не тільки від ключового поляКод поломки. але і від не ключовим поля Причина поломки. Щоб привести таблицю до третьої нормальної формі, необхідно її розбити на дві таблиці: Діагностика несправностей і Усунення поломки.
Таблиця Діагностика несправностей призначена для введення інформації про причини поломки і містить наступні дані:
Таблиця Усунення поломки призначена для введення інформації про способи усунення поломки. Таблиця включає в себе наступні атрибути:
§ Способи усунення поломки;
Поле Код поломки в таблиці Усунення поломки є первинним ключем і забезпечує зв'язок з таблицями Діагностика несправностей і Ремонт комп'ютерів.
Між таблицями Діагностика несправностей і Усунення поломки встановлено зв'язок «один-ко-многим», оскільки однією поломки відповідає кілька способів її усунення.
На практиці нормалізація таблиць бази даних закінчується третій нормальній формою.
Всі таблиці бази даних «Ремонт комп'ютерів» знаходяться в третій нормальній формі, і подальша нормалізація не потрібно. Відповідно виконуються три основних правила нормалізації:
§ Значення, що знаходяться в полях, не повторюються;
§ Все неключових поля функціонально пов'язані з ключем;
§ Між не ключовим полями немає прихованих залежностей.
Мал. 2. Результат нормалізації