- •Проектування бази даних
- •Вимоги, що пред'являються до бази даних
- •Етапи життєвого циклу бази даних
- •Модель "сутність–зв'язок"
- •Перетворення er-моделі в реляційну
- •Нормалізація таблиць
- •Етапи проектування бази даних і їх процедури
- •Концептуальне проектування;
- •Логічне проектування;
- •Фізичне проектування.
- •1.6.1. Процедури концептуального проектування
- •1.6.2. Процедури логічного проектування
- •1.6.3. Процедури фізичного проектування
- •1. Проектування таблиць бази даних засобами вибраної субд.
- •Завдання|задавання| по проектуванню бази даних і роботі з|із| нею
- •Тема 1. Проектування бази даних
- •Тема 2. Конструювання запитів
- •Тема 3. Конструювання форм
- •Тема 4. Конструювання звіту
- •4. Звіти, що виводяться на основі бази даних Завдання 2. Проект роздрібна торгівля
Нормалізація таблиць
Реляційна база даних вважається ефективною, якщо вона володіє приведеними нижче характеристиками.
Мінімізація надмірності даних. У базі даних присутній надлишок,
Мал. 1.7. Реляційна модель предметної області БАНК
якщо одні і ті ж дані знаходяться в декількох місцях. Внаслідок цього пам'ять комп'ютера використовується неекономно і часу на коректування даних витрачається більше. Так в табл. 1.1 міститься багато надлишкової інформації.
Таблиця 1.1 Відомості про студентів, що вивчають іноземні мови
П.І.П. |
Шифр групи |
Назва курсу |
Викладач |
Жибуль І.П. |
А1 |
Англійський |
Мороз В.С. |
Булатий В.А. |
А1 |
Англійський |
Мороз В.С. |
Кузьмич Н.М. |
А1 |
Англійський |
Мороз В.С. |
Шкляр Е.К. |
Н1 |
Німецький |
Перов И.Т. |
Теслюк Г.О. |
А2 |
Англійський |
Null |
Шнек В.І. |
А2 |
Англійський |
Null |
Примітка. Якщо таблиця є об'єктом реляційної бази даних, то її стовпці називаються полями, а рядки – записами.
Якщо, наприклад, зміниться назва курсу "Англійський" на "Англійський для ділового спілкування", то його треба замінити у всіх записах про тих студентів, які вивчають даний курс.
Мінімальне використання відсутніх значень (Null-значень). У нашому прикладі неясно, що означають Null-значення для атрибуту "Викладач": що для групи А2 не визначений викладач або його П.І.П. не введено. Із-за невизначеності інтерпретації Null-значень їх використання бажано звести до мінімуму.
Запобігання втраті інформації. Якщо, наприклад, студент Шкляр Е.К. вирішить не вивчати німецьку мову, то доведеться видалити запис з відомостями про нього і тоді взагалі буде втрачена інформація про даний курс. Мінімізувати надмірність даних дозволяє процес, званий нормалізацією таблиць. Нормалізацію можна було використовувати для отримання ефективних структур даних, створених в результаті перетворення ER-діаграм в таблиці в попередньому параграфі. Але щоб пояснити цей процес, виходитимемо з опису предметної області БАНК, і припущення, що на її основі була розроблена база даних, що складається з наступних двох таблиць:
ФІЛІАЛ
НФ |
АДР_Ф |
НМ |
НР |
ОСТ |
ТИП |
511 |
Ванєєва, 6 |
7 |
1111 2222 3333 |
200 350 1000 |
Д Т Т |
513 |
Солтиса, 3 |
9 |
5555 6666 |
800 14 |
Т Д |
Примітка. Д- депозитний рахунок, Т - поточний рахунок.
КЛІЄНТ
НК |
ПІП_К |
СОЦ_П |
АДР_К |
НР |
23 |
Сокол С.С. |
Службовець |
Садова, 1 |
1111 3333 |
34 |
Брас Б.Б. |
Робітник |
Гая, 9 |
5555 |
45 |
Лань Л.Л. |
Службовець |
Лісова, 4 |
2222 6666 1111 |
Примітка. Ключ - комбінація НК, НС.
Методику нормалізації таблиць розробив американський учений А.Ф. Кодд в 1970 р. Її суть зводиться до приведення таблиць до тієї або іншої нормальної форми. Було виділено три нормальні форми - 1НФ, 2НФ, ЗНФ. Пізніше стали виділяти нормальну форму Бойса-Кодда (НФБК|), а потім 4НФ і 5НФ. Кожна подальша нормальна форма вводить певні обмеження на ті дані, що зберігаються в базі.
Реляційна база даних вважається ефективною, якщо всі її таблиці знаходяться як мінімум в ЗНФ. Приведення до ЗНФ здійснюється, якщо є підстава для цього.
Визначення 1НФ
Таблиця знаходиться в 1НФ, якщо всі її поля містять тільки прості неподільні значення.
Таблиці філіал і клієнт не задовольняють вимогам 1НФ. Для приведення їх до 1НФ в них треба вставити нові записи таким чином:
ФІЛІАЛ
НФ |
АДР_Ф |
НМ |
НР |
ОСТ |
ТИП |
511 |
Ванєєва, 6 |
7 |
1111 |
200 |
Д |
511 |
Ванєєва, 6 |
7 |
2222 |
350 |
Т |
511 |
Ванєєва, 6 |
7 |
3333 |
1000 |
Т |
513 |
Солтиса, 3 |
9 |
5555 |
800 |
Т |
513 |
Солтиса, 3 |
9 |
6666 |
14 |
Д |
КЛІЄНТ
НК |
ПІП_К |
СОЦ_П |
АДР_К |
НР |
23 |
Сокол С.С. |
Службовець |
Садова, 1 |
1111 |
23 |
Сокол С.С. |
Службовець |
Садова, 1 |
3333 |
34 |
Брас Б.Б. |
Робочий|робітник| |
Гая, 9 |
5555 |
45 |
Лань Л.Л. |
Службовець |
Лісова, 4 |
2222 |
45 |
Лань Л.Л. |
Службовець |
Лісова, 4 |
6666 |
45 |
Лань Л.Л. |
Службовець |
Лісова, 4 |
1111 |
Але отримані таблиці неефективні, оскільки містять багато надлишкової інформації. Необхідно їх привести до 2НФ.
Визначення 2НФ
Таблиця знаходиться в 2НФ, якщо вона задовольняє вимогам 1НФ і неключові поля функціонально повно залежать від первинного ключа.
Функціональна залежність - це поняття, що відображає певний семантичний зв'язок між полями таблиці. Нехай (X1, X2...,XK) – множина полів, що створюють первинний ключ.
Неключове поле А функціонально повно залежить від первинного ключа, якщо:
• воно функціонально залежить від первинного ключа, тобто кожній комбінації значень полів первинного ключа відповідає одне і лише одне значення поля А, що записується
(Х1,Х2...,ХК)→А
• не існує функціональної залежності А ні від якої підмножини полів первинного ключа (інакше А знаходиться в частковій функціональній залежності від первинного ключа).
У таблиці клієнт неключові поля ПІП_К, СОЦ_П, АДР_К функціонально залежать від ключа (НК, НР), це запишемо НК, НР→ ПІП_К, СОЦ_П, АДР_К.
Крім того, вони функціонально залежать від підмножини ключа - НК, це запишемо НК→ ПІП_К, СОЦ_П, АДР_К.
Отже, неключові поля ПІП_К, СОЦ_П, АДР_К перебувають в частковій функціональній залежності від первинного ключа (НК, НР) і порушуються вимоги 2НФ. Ці поля треба з таблиці клієнт видалити. Отриману в результаті цього таблицю назвемо клієнт-рахунок (таблиця 1), яка має вигляд
КЛІЄНТ-РАХУНОК
НК |
НР |
||
23 |
1111 |
|
|
23 |
3333 |
|
|
34 |
5555 |
|
|
45 |
2222 |
|
|
45 |
6666 |
|
|
45 |
1111 |
|
|
Ця таблиця задовольняє вимогам 2НФ.
Видалені неключові поля поміщаються в нову таблицю спільно з підмножиною НК, від якої вони залежать. І ця підмножина буде первинним ключем нової таблиці клієнт (таблиці 2) вигляду
КЛІЄНТ
НК |
ПІП_К |
СОЦ_П |
АДР_К |
23 |
Сокол С.С. |
Службовець |
Садова, 1 |
34 |
Брас Б.Б. |
Робітник |
Гая, 9 |
45 |
Лань Л.Л. |
Службовець |
Лісова, 4 |
Нова таблиця клієнт також задовольняє вимогам 2НФ. Її неключові поля функціонально повно залежать від первинного ключа.
Отримані таблиці 1, 2 не містять надлишкової інформації, і немає підстави приводити їх до ЗНФ.
Таблиця філіал задовольняє вимогам 2НФ, оскільки її неключові поля НФ, АДР_Ф, НМ, ОСТ, ТИП функціонально повно залежать від первинного ключа: НР→ НФ, АДР_Ф, НМ, ОСТ, ТИП.
Але в таблиці філіал повторюється інформація про філіал для всіх рахунків, що обробляються ним. Тому її треба привести до ЗНФ.
Визначення ЗНФ
Таблиця знаходиться в ЗНФ, якщо вона задовольняє вимогам 2НФ і не містить транзитивних залежностей.
Транзитивною залежністю називається функціональна залежність між неключовими полями. У таблиці філіал вона спостерігається: НФ→АДР_Ф, НМ
Отже, порушуються вимоги 3НФ. З таблиці ФІЛІАЛ треба видалити поля, що беруть участь в цій транзитивній залежності – АДР_Ф, НМ. Вийде таблиця, що характеризує рахунок (таблиця 3), вигляду
Потім створюється нова таблиця, в яку поміщаються видалені поля і поле, від якого вони залежать (таблиця 4). Вона має вигляд
Отримані таблиці 3, 4 приведені до 3НФ. У них кожен запис є окреме незалежне твердження. Повторюються тільки значення зовнішнього ключа НФ в таблиці РАХУНОК, що неминуче, оскільки одним філіалом можуть оброблятися декілька рахунків.
Як видно, нормалізація приводить до фрагментації початкових таблиць. У нашому прикладі таблиця КЛІЄНТ розбивається на таблиці 1, 2, а таблиця ФІЛІАЛ – на таблиці 3, 4. Здійснивши зв'язок цих таблиць за допомогою зв'язку первинних і зовнішніх ключів, отримаємо реляційну модель даних предметної області БАНК, в якій мінімізована надмірність даних. Ця модель представлена на мал. 1.8.
Мал.
1.8. Реляційна
модель предметної області БАНК після
нормалізації
