ЗАГАЛЬНА СХЕМА ПРОЦЕДУРИ НОРМАЛІЗАЦІЇ

До цього розділу в цій (і попередньої) чолі розглядалася технологія декомпозиції без втрат, призначена для використання в процесі проектування бази даних Основна ідея полягає в наступному Нехай дана деяка змінна відносини R, представлена ​​в 1НФ, в сукупності з набором певних для неї функціональних залежностей, багатозначних залежностей і залежностей зєднання Завдання полягає в систематичному розбитті початкової змінної відношення R на такий набір менших (тобто мають менший ступінь) змінних відносини, який в деякому заданому сенсі буде еквівалентний змінної відносини R, але з певної точки зору буде також більш предпочтітельним2 Кожен етап процесу такого перетворення полягає в розбитті на проекції змінних відносини, отриманих на попередньому етапі При цьому на кожному етапі перетворення існуючі обмеження використовуються для вибору тих проекцій, які будуть отримані в цей раз Весь процес можна неформально визначити за допомогою перерахованих нижче правил

1 Змінну відносини в 1НФ слід розбити на такі проекції, які за Зволен виключити всі функціональні залежності, які не є неприводим мимі У результаті буде отриманий набір змінних відносини в 2НФ

2 Отримані змінні відносини в 2НФ слід розбити на такі проекції, які дозволять виключити всі існуючі транзитивні функціональні залежності У результаті буде отриманий набір змінних відносини в ЗНФ

3 Отримані змінні відносини в ЗНФ слід розбити на проекції, позво ляющие виключити всі залишилися функціональні залежності, в яких де термінанти не є потенційними ключами У результаті такого приведе ня буде отриманий набір змінних відносини в НФБК

Примітка Правила 1-3 можуть бути обєднані в одне: Вихідну змінну відносини слід розбити на проекції, що дозволяють виключити всі функціональні залежності, в яких детермінанти не є потенційними ключами .

4 Отримані змінні відносини в НФБК слід розбити на проекції, позво ляющие виключити всі багатозначні залежності, які не є також функціональними У результаті буде отриманий набір змінних відносини в 4НФ Примітка На практиці такі багатозначні залежності зазвичай виключаються перед виконанням етапів 1-3 (на етапі усунення незалежних МЗЗ), як описано в розділі 132

5 Отримані змінні відносини в 4НФ слід розбити на проекції, позво ляющие виключити всі залежності сполуки, які не визначаються потен соціальними ключами (хоча в даному випадку у визначення слід було б додати фразу якщо вдасться їх виявити) У результаті буде отриманий набір змінних від носіння в 5НФ

2 Якщо змінна відносини R включає будь (необхідні) атрибути зі значенням у вигляді відношення, то передбачається, що така її структура була прийнята свідомо Небажані атрибути зі значенням у вигляді відносини можуть бути усунені, як було описано в розділі 132

З приводу наведених вище правил можна зробити кілька додаткових зауважень

Процес розбиття на проекції на кожному етапі має бути виконаний без втрат і з збереженням залежностей (там, де це можливо)

1 Зверніть увагу, що існує досить привабливий набір наступних альтернативних визначень НФБК, 4НФ і 5НФ (як було вперше відзначено Фейгін в [1315]):

■ змінна відносини R знаходиться в НФБК тоді і тільки тоді, коли кожна функціональна залежність, удовлетворяемая змінної відносини R, визначається її потенційними ключами

■ змінна відносини R знаходиться в 4НФ тоді і тільки тоді, коли кожна багатозначна залежність, удовлетворяемая змінної відносини R, визна деляется її потенційними ключами

■ змінна відносини R знаходиться в 5НФ тоді і тільки тоді, коли кожна залежність зєднання, удовлетворяемая змінної відносини R, визна ляется її потенційними ключами

Аномалії оновлення, обговорювалися в главі 12 і в попередніх розділах даної глави, були викликані саме тими функціональними залежностями, багатозначними залежностями або залежностями сполуки, які не визначались потенційними ключами (Мається на увазі, що всі згадані тут функціональні, багатозначні залежності і залежності сполуки є нетривіальними)

2 Загальне призначення процесу нормалізації полягає в наступному:

■ виключення деяких типів надмірності

■ усунення деяких аномалій оновлення

■ розробка проекту бази даних, який є достатньо качествен вим представленням реального світу, інтуїтивно зрозумілий і може служити хорошою основою для подальшого розширення

■ спрощення процедури застосування необхідних обмежень цілісності

Останній пункт даного списку слід розглянути окремо Загальна ідея (як зазначалося в інших розділах цієї книги) полягає в тому, що з одних обмежень цілісності ідуть інші В якості найпростішого прикладу можна навести обмеження для суми зарплати, яка повинна бути вище 10 000 долл, а отже, вище нуля Таким чином, якщо з обмеження А слід обмеження в, то дотриманняобмеженняАавтоматично тягне за собою дотримання обмеження В (тому навіть немає необхідності явно задавати обмеження в, за винятком того, що воно може бути згадано в коментарі) Тоді приведення до 5НФ являє собою простий спосіб накладення деяких важливих і вельми поширених обмежень Головне – забезпечити підтримку унікальності потенційних ключів, після чого всі залежності зєднання (а також всі багатозначні і функціональні залежності) будуть реалізовані СУБД автоматично, оскільки всі вони визначаються потенційними ключами

3 Необхідно знову підкреслити той факт, що дані рекомендації з приводу нормалізації є всього лише рекомендаціями і, ймовірно, можуть сущест вовать міркування, за якими нормалізацію не слід виконувати до кінця Класичним прикладом ситуації, коли повна нормалізація не бажана, є змінна відношення імені та адреси NADDR (див упр 127 глави 12), хоча слід визнати, що цей приклад не зовсім переконливий Як правило, нор малізацію рекомендується виконувати повністю

4 Необхідно ще раз повторити зроблене в главі 12 зауваження про те, що поняття залежності і подальшої нормалізації за своїм характером є семанті тичними, тобто вони повязані зі сенсом даних, тоді як реляційна алгебра і ре ляційними числення, а також побудовані на їх основі мови на зразок SQL, навпаки, мають справу зі значеннями даних і не вимагають (та й не можуть вимагати) виконання нормалізації вище першого рівня Рекомендації з виконання подальшої нормалізації повинні розглядатися насамперед як методика, що дозволяє розробнику бази даних (і, отже, її користувачеві) ви разити певну частину семантики реального світу (нехай навіть невелику) в простій і зрозумілій формі

5 Виходячи зі сказаного вище, необхідно відзначити, що ідеї нормалізації чрез вичайно корисні для проектування баз даних, але вони аж ніяк не є універсальним засобом Нижче перераховані деякі причини подібного за ложения справ (цей список доповнений в [139])

■ Нормалізація (як згадувалося вище, в розділі 9) дійсно дозволяє реалізувати (в дуже простій формі) певні обмеження цілісності, але

на практиці, крім залежностей зєднання, функціональних і багатозначних

залежностей, існують і інші типи обмежень

■ Декомпозиція може бути не унікальні (як правило, є кілька способів приведення заданого набору змінних відношення до 5НФ), але існує дуже мало обєктивних критеріїв, дозволяють вибрати один з альтернативних варіантів декомпозиції

■ Як згадувалося в розділі 125 (приклад декомпозиції змінної отноше ня SJT), переслідування одночасно двох цілей (тобто приведення до НФБК і збереження залежностей) в деяких випадках призводить до конфліктної сі туації

■ Процедура нормалізації дозволяє позбутися від надмірності за рахунок раз биття на проекції, але не всяку надмірність можна усунути таким обра зом (це – проблема змінної відносини CTXD , див анотацію до [1313])

Слід також відзначити, що хороші методики спадного проектування дозволяють тим або іншим конкретним способом створювати повністю нормалізований проект бази даних (див главу 14)

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*