Що таке нормалізація? Приклад бази даних 1NF, 2NF, 3NF, BCNF

Зміст:

Anonim

Що таке нормалізація?

Нормалізація - це техніка проектування бази даних, яка зменшує надмірність даних та усуває такі небажані характеристики, як аномалії вставки, оновлення та видалення. Правила нормалізації поділяють більші таблиці на менші таблиці та пов'язують їх за допомогою зв'язків. Метою нормалізації в SQL є усунення зайвих (повторюваних) даних та забезпечення логічного збереження даних.

Винахідник реляційної моделі Едгар Кодд запропонував теорію нормалізації даних із введенням Першої нормальної форми, і він продовжував поширювати теорію на Другу та Третю нормальну форми. Пізніше він приєднався до Реймонда Ф. Бойса для розробки теорії нормальної форми Бойса-Кодда.

Звичайні форми бази даних

Ось список звичайних форм

  • 1NF (перша нормальна форма)
  • 2NF (друга нормальна форма)
  • 3NF (третя нормальна форма)
  • BCNF (нормальна форма Бойса-Кодда)
  • 4NF (четверта нормальна форма)
  • 5NF (п’ята звичайна форма)
  • 6NF (шоста нормальна форма)

Теорія нормалізації даних на сервері SQL все ще розвивається. Наприклад, існують дискусії навіть щодо 6- ї звичайної форми. Однак у більшості практичних застосувань нормалізація досягає найкращих результатів у 3- й нормальній формі . Еволюція теорій нормалізації SQL проілюстрована нижче -

Звичайні форми бази даних

Нормалізація бази даних на прикладах

Приклад нормалізації бази даних можна легко зрозуміти за допомогою тематичного дослідження. Припустимо, відеотека веде базу даних про орендовані фільми. Без будь-якої нормалізації в базі даних вся інформація зберігається в одній таблиці, як показано нижче. Давайте зрозуміємо Нормалізацію в базі даних на прикладі таблиць:

Тут ви бачите, що стовпець "Прокат фільмів" має кілька значень. Тепер перейдемо до 1-ї звичайної форми:

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

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

Наведена таблиця в 1NF-

Приклад 1NF

Перш ніж продовжити, давайте розберемось у кількох речах

Що таке КЛЮЧ?

КЛЮЧ - це значення, яке використовується для унікальної ідентифікації запису в таблиці. КЛЮЧ може бути одним стовпцем або комбінацією з декількох стовпців

Примітка: Стовпці в таблиці, які НЕ використовуються для однозначної ідентифікації запису, називаються неключовими стовпцями.

Що таке первинний ключ?

Первинне - це значення одного стовпця, що використовується для унікальної ідентифікації запису бази даних.

Він має наступні атрибути

  • Первинний ключ не може мати значення NULL
  • Значення первинного ключа має бути унікальним
  • Значення первинного ключа рідко слід змінювати
  • Первинному ключу потрібно надати значення, коли вставляється новий запис.

Що таке композитний ключ?

Складений ключ - це первинний ключ, що складається з декількох стовпців, що використовуються для унікальної ідентифікації запису

У нашій базі даних ми маємо двох людей з однаковим ім’ям Роберт Філ, але вони мешкають в різних місцях.

Отже, ми вимагаємо як повне ім’я, так і адресу, щоб однозначно ідентифікувати запис. Це складений ключ.

Перейдемо до другої нормальної форми 2NF

Правила 2NF (друга нормальна форма)

  • Правило 1 - Будьте в 1NF
  • Правило 2- Первинний ключ для однієї колонки

Зрозуміло , що ми не можемо рухатися вперед , щоб зробити нашу просту базу даних в 2 - й Нормалізація формі , якщо ми не розіб'ємо таблицю вище.

Ми розділили нашу таблицю 1NF на дві таблиці, а саме. Таблиця 1 та Таблиця 2. Таблиця 1 містить інформацію про членів. Таблиця 2 містить інформацію про орендовані фільми.

Ми ввели новий стовпець Membership_id, який є основним ключем для таблиці 1. Записи можна однозначно ідентифікувати в таблиці 1 за допомогою ідентифікатора членства

База даних - Зовнішній ключ

У таблиці 2 членство_ID - це зовнішній ключ

Зовнішній ключ посилається на первинний ключ іншої таблиці! Це допомагає з'єднати ваші таблиці

  • Зовнішній ключ може мати іншу назву від первинного ключа
  • Це гарантує, що рядки в одній таблиці мають відповідні рядки в іншій
  • На відміну від первинного ключа, вони не повинні бути унікальними. Найчастіше це не так
  • Зовнішні ключі можуть бути нульовими, хоча первинні ключі не можуть

Навіщо потрібен зовнішній ключ?

Припустимо, новачок вставляє запис у таблицю B, такий як

Ви зможете вставити лише значення у свій зовнішній ключ, які існують в унікальному ключі в батьківській таблиці. Це допомагає у посилальній цілісності.

Вищезазначену проблему можна подолати, оголосивши ідентифікатор членства з Таблиці2 як зовнішній ключ ідентифікатора членства з Таблиці1

Тепер, якщо хтось намагається вставити значення в поле ідентифікатора членства, яке не існує в батьківській таблиці, буде показано помилку!

Що таке транзитивні функціональні залежності?

Транзитивна функціональна залежність - це коли зміна неключового стовпця може спричинити зміну будь-якого іншого неключового стовпця

Розгляньте таблицю 1. Зміна неключового стовпця Повне ім’я може змінити Вітання.

Перейдемо до 3NF

Правила 3NF (третя нормальна форма)

  • Правило 1- Будь у 2NF
  • Правило 2- Не має перехідних функціональних залежностей

Щоб перенести нашу таблицю 2NF у 3NF, нам знову потрібно знову розділити нашу таблицю.

Приклад 3NF

Нижче наведено приклад 3NF у базі даних SQL:

Ми знову розділили наші таблиці і створили нову таблицю, яка зберігає Привітання.

Немає перехідних функціональних залежностей, а отже, наша таблиця знаходиться у 3NF

У таблиці 3 Ідентифікатор привітання є первинним ключем, а в таблиці 1 Ідентифікатор привітання є чужим первинному ключу в таблиці 3

Зараз наш маленький приклад знаходиться на рівні, який не може бути розкладений далі для досягнення вищих нормальних форм нормалізації. Насправді це вже у вищих нормалізаційних формах. Як правило, в складних базах даних потрібні окремі зусилля для переходу на наступні рівні нормалізації даних. Однак наступні рівні нормалізації ми коротко обговоримо в наступному.

BCNF (нормальна форма Бойса-Кодда)

Навіть коли база даних знаходиться у 3- й звичайній формі, все одно можуть виникнути аномалії, якщо вона має більше ніж один ключ кандидата .

Іноді BCNF також називають 3,5 нормальною формою.

Правила 4NF (четверта нормальна форма)

Якщо жоден екземпляр таблиці бази даних не містить двох або більше незалежних та багатозначних даних, що описують відповідну сутність, то це в 4- й звичайній формі.

Правила 5NF (п’ята нормальна форма)

Таблиця знаходиться в 5- й звичайній формі, лише якщо вона в 4NF, і її не можна розкласти на будь-яку кількість менших таблиць без втрати даних.

Запропоновано 6NF (шоста нормальна форма)

6 -та звичайна форма не стандартизована, однак, вона обговорюється експертами баз даних деякий час. Сподіваємось, у нас найближчим часом буде чітке та стандартизоване визначення 6- ї нормальної форми ...

Це все для Нормалізації SQL !!!

Резюме

  • Проектування баз даних має вирішальне значення для успішного впровадження системи управління базами даних, яка відповідає вимогам до даних корпоративної системи.
  • Процес нормалізації в СУБД допомагає створювати системи баз даних, які є економічно вигідними та мають кращі моделі безпеки.
  • Функціональні залежності є дуже важливою складовою процесу нормалізації даних
  • Більшість систем баз даних є нормалізованими базами даних до третьої нормальної форми.
  • Первинний ключ однозначно ідентифікує запис у таблиці і не може бути нульовим
  • Зовнішній ключ допомагає зв’язати таблицю та посилається на первинний ключ