Третя нормальна форма (3НФ) — це одна з форм нормалізації реляційних баз даних, яка допомагає усунути надмірність даних та забезпечити їх цілісність. Щоб таблиця була в третій нормальній формі, вона повинна відповідати двом умовам:
-
Наша таблиця повинна бути в другій нормальній формі (2НФ). Це означає, що вона не містить часткових залежностей між ненормалізованими атрибутами (колонками) та первинним ключем. У 2НФ всі неключові атрибути повинні повністю залежати від ключа.
-
Всі атрибути в таблиці повинні бути незалежними один від одного (іншими словами, не повинно бути транзитивних залежностей). Це означає, що якщо атрибут A залежить від атрибута B, а атрибут B залежить від первинного ключа, то атрибут A не повинен залежати від атрибута B.
Щоб привести таблицю до 3НФ, виконайте наступні кроки:
-
Видалення транзитивних залежностей. Визначте атрибути, які залежать не від первинного ключа, а від інших ненормалізованих атрибутів. Витягніть їх у нові таблиці.
-
Перепланування зв’язків. Після створення нових таблиць встановіть між ними відношення (зазвичай це зв’язок “один до багатьох”) за допомогою зовнішніх ключів.
Припустимо, у вас є таблиця Студенти
:
Студенти
---------------
ID | Ім'я | Прізвище | Група | Курс | Викладач
1 | Олег | Іванов | 101 | 1 | Петренко
2 | Anna | Коваленко| 101 | 1 | Петренко
3 | Сергій | Петров | 102 | 2 | Сидоренко
У цьому прикладі у нас є транзитивна залежність: Викладач
залежить від Курс
, а Курс
залежить від ID
(первинного ключа). Таким чином, ми можемо створити нову таблицю Курси
:
Курси
---------------
КурсID | НазваКурсу | Викладач
1 | Програмування | Петренко
2 | Алгебра | Сидоренко
А у таблиці Студенти
залишимо тільки відповідні атрибути:
Студенти
---------------
ID | Ім'я | Прізвище | Група | КурсID
1 | Олег | Іванов | 101 | 1
2 | Anna | Коваленко| 101 | 1
3 | Сергій | Петров | 102 | 2
Тепер таблиці Студенти
і Курси
відповідають третій нормальній формі.
Третя нормальна форма допомагає зменшити надмірність даних та покращити їх цілісність у базі даних. Це важливий крок для забезпечення ефективного управління даними в реляційних базах даних, таких як MySQL.