Атрибут Y сутності R функціонально залежить від атрибута Х сутності R (символічно записується як Х → Y), тоді і тільки тоді, коли кожне значення Х у сутності R зв’язане в точності з одним значенням Y у сутності R. Іншими словами, Х унікально визначає Y.
Найбільш наочним прикладом може бути первинний ключ сутності, який однозначно визначає кожен екземпляр цієї сутності. Однак можуть існувати і інші залежності, до яких не входять первинні ключі. Головна мета нормалізації – позбавити сутність від залежностей, не пов’язаних з первинними ключами.
Процес нормалізації зводиться до послідовного приведення структури даних
до нормальних форм – формалізованих вимог до організації даним. Нормальні форми змінюються в порядку від першої (1НФ) до 5-ої (5НФ). Кожна наступна форма задовольняє вимоги попередньої. На практиці обмежуються приведенням даних до 3-ої нормальної форми.
Перша нормальна форма. Сутність перебуває в першій нормальній формі (1НФ) тоді і тільки тоді, коли всі атрибути містять тільки атомарні значення. Якщо значення атомарні, то на перетинанні стовпця й рядка завжди перебуває тільки одне значення, а не набір значень. Особливості 1НФ:
кожна сутність має первинний ключ;
повторювані групи даних виділені в самостійні сутності.
Друга нормальна форма. Сутність перебуває в другій нормальній формі (2НФ) тоді і тільки тоді, коли вона перебуває в 1НФ і кожен неключовий атрибут повністю залежить від первинного ключа. Друга нормальна форма має сенс тільки для сутностей, що мають складений первинний ключ. Особливості 2НФ:
сутність представлена в 1НФ;
якщо сутність має простий первинний ключ, то вона представлена в 2НФ;
якщо сутність має складений первинний ключ, то кожний неключовий атрибут повністю залежить від первинного ключа (не повинне бути залежності від частини ключа).
Третя нормальна форма. Сутність перебуває в третій нормальній формі (3НФ) тоді й тільки тоді, коли вона перебуває в 2НФ, і кожен неключовий атрибут не залежить від іншого неключового атрибута. Особливості 3НФ:
сутність представлена в 1НФ,
будь-який неключовий атрибут не залежить від іншого неключового атрибута.
На користь нормалізації, зазвичай, приводять наступні три основні доводи:
Забезпечення цілісності. Одного цього доводу цілком достатньо, щоб опікуватися про нормалізацію. Дані зберігають коректність і вірогідність, оскільки в результаті нормалізації вони будуть зберігатися тільки в одному місці. Інакше кажучи, нормалізація повинна привести до виключення надмірності даних. А якщо ні, то прийде стежити за синхронними змінами всіх копій даних, що створює багато проблем.
Нормалізація, зазвичай, приводить до розподілу сутності на дві або більш зв’язаних сутності, які можуть бути з’єднані разом за допомогою операції об’єднання. Результатом розподілу і є зменшення надмірності даних.
Створення формальної моделі, як можна більш незалежної від специфіки додатка. Інакше кажучи, нормалізація сприяє тому, що модель опирається на дані, а не на процеси їх обробки. На практиці це означає, що структура БД залишається незмінною навіть при зміні процесів обробки.
Зниження вимог до обсягу пам’яті. Безпосереднім наслідком цього є підвищення швидкості пошуку даних. Якщо не звертати уваги на зовнішні ключі, то повна нормалізація приводить до виключення надмірності даних. А надмірність завжди пов’язана з додатковими обсягами пам’яті для зберігання надлишкових даних.
CASE Erwin не містить повного алгоритму нормалізації й не може проводити нормалізацію автоматично, однак його можливості полегшують створення нормалізованої моделі даних. Заборона на присвоєння неунікальних імен атрибутів у рамках моделі (при відповідній установці опції Unique Name) полегшує дотримання правила «один факт – в одному місці». Імена ролей атрибутів зовнішніх ключів і уніфікація атрибутів також полегшують побудова нормалізованої моделі.
3. Випадки, що потребують нормалізації.
Нормальні форми допомагають проектувати БД, у яких немає непотрібних надлишкових даних і протиріч, які можуть викликати проблеми продуктивності або втрату інформації при наступному виконанні операції вставки, відновлення й видалення. Можна сказати, що нормальні форми дозволяють уникнути викривлення даних шляхом створення неправильних даних або руйнування дійсних.
Багато загальних проблем проектування – це результат порушення однієї з нормальних форм. Загальні проблеми звичайно включають:
повторювані групи даних;
багаторазове використання того самого атрибута;
множинне місцезнаходження того самого факту; – конфліктуючі факти; – похідні атрибути.