Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_kursova_BD.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
274.43 Кб
Скачать
    1. Нормалізація таблиць

Реляційна база даних вважається ефективною, якщо вона володіє приведеними нижче характеристиками.

  1. Мінімізація надмірності даних. У базі даних присутній надлишок,

Мал. 1.7. Реляційна модель предметної області БАНК

якщо одні і ті ж дані знаходяться в декількох місцях. Внаслідок цього пам'ять комп'ютера використовується неекономно і часу на коректування даних витрачається більше. Так в табл. 1.1 міститься багато надлишкової інформації.

Таблиця 1.1 Відомості про студентів, що вивчають іноземні мови

П.І.П.

Шифр групи

Назва курсу

Викладач

Жибуль І.П.

А1

Англійський

Мороз В.С.

Булатий В.А.

А1

Англійський

Мороз В.С.

Кузьмич Н.М.

А1

Англійський

Мороз В.С.

Шкляр Е.К.

Н1

Німецький

Перов И.Т.

Теслюк Г.О.

А2

Англійський

Null

Шнек В.І.

А2

Англійський

Null

Примітка. Якщо таблиця є об'єктом реляційної бази даних, то її стовпці називаються полями, а рядки – записами.

Якщо, наприклад, зміниться назва курсу "Англійський" на "Англійський для ділового спілкування", то його треба замінити у всіх записах про тих студентів, які вивчають даний курс.

  1. Мінімальне використання відсутніх значень (Null-значень). У нашому прикладі неясно, що означають Null-значення для атрибуту "Викладач": що для групи А2 не визначений викладач або його П.І.П. не введено. Із-за невизначеності інтерпретації Null-значень їх використання бажано звести до мінімуму.

  2. Запобігання втраті інформації. Якщо, наприклад, студент Шкляр Е.К. вирішить не вивчати німецьку мову, то доведеться видалити запис з відомостями про нього і тоді взагалі буде втрачена інформація про даний курс. Мінімізувати надмірність даних дозволяє процес, званий нормалізацією таблиць. Нормалізацію можна було використовувати для отримання ефективних структур даних, створених в результаті перетворення 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. Реляційна модель предметної області БАНК після нормалізації

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]