Skip to main content

Розкажіть про нормальні форми (1НФ, 2НФ, 3НФ)

Нормальні форми - це правила організації таблиць у реляційній базі даних, які допомагають зменшити дублювання даних і підвищити їхню цілісність. Основні з них - 1NF, 2NF і 3NF.

1NF (Перша нормальна форма)

  • Правило: усі поля таблиці мають бути атомарними, тобто не ділитися на частини, і кожен запис унікальний.
  • Що це означає на практиці: не можна зберігати в одному полі кілька значень, наприклад, "Телефони = 12345, 67890". Кожне значення має бути окремим записом.
  • Приклад порушення 1NF:
IDІм'яТелефони
1Іван12345, 67890
  • Правильно (1NF): створити окрему таблицю Телефони з полями СпівробітникID і Телефон.

2NF (Друга нормальна форма)

  • Правило: таблиця має бути в 1NF, і кожне поле має повністю залежати від первинного ключа, а не від його частини (важливо для складеного ключа).
  • Що це означає на практиці: якщо первинний ключ складається з двох колонок, не можна, щоб окрема колонка залежала лише від однієї з них.
  • Приклад порушення 2NF: Таблиця з ключем (СтудентID, КурсID) і полем ІмяСтудента. Поле ІмяСтудента залежить лише від СтудентID, а не від усього ключа.
  • Виправлення: винести СтудентID і ІмяСтудента в окрему таблицю Студенти.

3NF (Третя нормальна форма)

  • Правило: таблиця має бути в 2NF, і немає транзитивної залежності, тобто поле не повинне залежати від іншого поля, крім первинного ключа.
  • Що це означає на практиці: не можна зберігати дані, які можна обчислити чи знайти через інше поле.
  • Приклад порушення 3NF: | СпівробітникID | ВідділID | НазваВідділу | Поле НазваВідділу залежить від ВідділID, а не напряму від СпівробітникID.
  • Виправлення: створити таблицю Відділи з ВідділID і НазваВідділу, а в таблиці Співробітники зберігати лише ВідділID.

Простіше кажучи:

  • 1NF - поля атомарні, немає повторюваних груп.
  • 2NF - кожне поле повністю залежить від первинного ключа.
  • 3NF - немає залежності поля від іншого неключового поля.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.