Нормалізація баз даних друга нормальна форма
Друга нормальна форма.
Для приведення таблиць до другої нормальної форми (2НФ), що наводяться таблиці повинні бути вже в 1НФ. Нормалізація повинна проходити по порядку.
Тепер, в другій нормальній формі, має бути дотримано умову - будь-який стовпець, який не є ключем (в тому числі зовнішнім), повинен залежати від первинного ключа. Зазвичай такі стовпці, що мають значення, яка не залежать від ключа, легко визначити. Якщо дані, що містяться в стовпці, не мають відношення до ключу, який описує рядок, то їх слід відокремлювати в свою окрему таблицю. У стару таблицю треба повертати первинний ключ.

На малюнку вище і назви фільмів та імена акторів порушують правила 2НФ (самі не є ключами і не залежать від первинного ключа).
Після всіх перетворень, база даних з фільмами матиме мінімум 4 таблиці.

Щоб привести бд до другої нормальної форми, треба було 4 таблиці. Режисери (directors), представлені у фільмах (movies) через зовнішній ключ director ID, фільми в таблиці фільми-актори (movies-actors) через movie ID, актори через actor ID
Кожне ім'я режисера, назва картини і ім'я актора зберігається тільки один раз і все неключових поля залежать від первинного ключа їх власної таблиці.
За фактом, нормалізація може бути перебільшено названа процесом створення все нових і нових таблиць до тих пір, поки надмірність і повторення не будуть повністю знищені.
Щоб привести базу до другої нормальної форми, треба:

Щоб привести цю базу до 2НФ, потрібно 3 таблиці мінімум
- Визначити всі стовпці, які не перебувають у прямій залежності від первинного ключа цієї таблиці. На малюнку вище у таблиць users і forums немає первинного ключа. У таблиці messages первинний ключ - message ID, від якого залежать всі інші поля цієї таблиці.
- Створюємо необхідні поля в таблицях users і forums, виділяємо з існуючих полів або створюємо з нових первинні ключі.

Для кожної таблиці потрібен свій первинний ключ

Щоб співвіднести три таблиці, в messages додано два зовнішніх ключа, що ведуть на первинні ключі в своїх таблицях
підказки:
- Інший спосіб приведення схеми до 2НФ - подивитися на відносини між таблицями. Ідеальний варіант - створити всі відносини виду один-до-багатьох. Відносини виду багато-до-багатьох потребують реструктуризації.
- Якщо поглянути ще раз на таблицю movies-actors, то можна помітити, що вона є проміжною таблицею. Вона перетворює ставлення багато-до-багатьох між movies і actors в один-до-багатьох. Можна вводити такі проміжні таблиці, у яких всі стовпці є ключами. У таких таблицях не потрібно свій власний первинний ключ, оскільки він може бути комбінацією двох зовнішніх ключів.
- Нормалізована належним чином таблиця ніколи не буде мати повторюваних рядів (двох і більше рядів, значення яких не є ключами і містять збігаються дані).
- Щоб спростити нормалізацію, пам'ятайте, що при приведенні до 1НФ ви шукаєте дублі горизонтально (дублі стовпців), а при приведенні до 2НФ - вертикально (дублі рядів).