- •§3. Проектування баз даних та інформаційних систем
- •3.1. Нормалізація та її необхідність
- •3.2. Перша нормальна форма
- •3.3. Друга нормальна форма
- •3.4. Третя нормальна форма
- •3.5. Нормальна форма Бойса-Кодда
- •3.6. Четверта нормальна форма
- •3.9. Процес проектування баз даних
- •3.7. П’ята нормальна форма
- •3.8. Основні правила, які використовуються в процесі нормалізації
- •3.10. Життєвий цикл інформаційної системи
3.2. Перша нормальна форма
Таблиця знаходиться в першій нормальній формі тоді й тільки тоді, коли вона не містить однакових полів і складених значень полів, тобто поля не повторюються, значення в них атомарні. Отже, Таблиця 1 не знаходиться в 1НФ, а Таблиця 2 знаходиться в 1НФ. Вище зазначалося, що будь-яке відношення за його визначенням знаходиться в першій нормальній формі.
3.3. Друга нормальна форма
Таблиця знаходиться в другій нормальній формі, якщо вона задовольняє вимоги першої нормальної форми, і всі її поля, які не входять до первинного ключа, пов’язані повною функціональною залежністю з первинним ключем, тобто будь-яке неключове поле однозначно ідентифікується повним набором ключових полів.
Іншими словами таблиця, яка знаходиться в другій нормальній формі, повинна відповідати таким вимогам:
Таблиця повинна мати дані про один тип об’єктів.
Кожна таблиця повинна містити одне або кілька полів, які утворюють унікальний ідентифікатор (первинний ключ) для кожного рядка даної таблиці.
Всі поля, які не входять до первинного ключа, повинні однозначно визначатись первинним ключем (залежати від нього).
Очевидно, що в Таблиці 2 немає первинного ключа. Місто залежить від покупця. Товар залежить від дати і покупця.
Тому розіб’ємо Таблицю 2 на такі 5 таблиць: Покупець, Продавець, Товар, Замовлення, Замовлення товару.
Просте розбиття таблиці на кілька дрібніших таблиць може привести до втрати логічного зв’язку між даними цих таблиць. При цьому необхідно передбачити створення допоміжних стовпців. Нові стовпці можуть бути використані як первинний ключ у кожній таблиці. Використовуючи цей ключ, можна буде легко зв’язувати дані, розміщені в різних таблицях.
Таблиця 2.1. Продавець
ID продавця |
Ім’я продавця |
Прізвище продавця |
1 2 3 4 |
Олексій Андрій Сергій Анатолій |
Тепляк Поштар Савчук Кушнір |
Таблиця 2.2. Покупець
ID покупця |
Ім’я покупця |
Прізвище покупця |
Місто |
Вулиця |
1 2 3 4 5 |
Сергій Євген Микола Василь Іван |
Марчук Данилів Ємчук Мазур Гульчак |
Чернівці Чернівці Кіцмань Хотин Чернівці |
Головна Шевченка Л. Українки Хоткевича Лисенка |
Таблиця 2.3. Товар
ID товару |
Назва товару |
Ціна |
1 2 3 4 5 6 |
Комп’ютер Принтер Клавіатура Монітор Мишка Модем |
450 76 7 120 2 18 |
Таблиця 2.4. Замовлення
ID замовлення |
Дата |
ID продавця |
ID покупця |
Сума покупки |
1 2 3 4 5 |
1.02.05 8.02.05 8.02.05 15.02.05 22.02.05 |
1 2 3 4 2 |
1 2 3 4 5 |
450 94 129 7 196 |
Таблиця 2.5. Замовлення товару
ID замовлення |
ID товару |
1 2 2 3 3 3 4 5 5 |
1 2 6 5 1 3 3 2 4 |
Зведення таблиці до другої нормальної форми дозволяє уникнути повторення (надлишковості) одних і тих же даних, які з’явились після зведення до першої нормальної форми.
