Нормалізація бази даних — це процес організації даних у пов'язану таблицю. Завдяки цьому, значно збільшується цілісність та продуктивність запиту. Щоб провести нормалізацію таблиці, необхідно розділити її на таблиці та встановити між ними зв'язки.
Отже, нормалізація БД — це практична оптимізація структур таблиць. Велика увага тут приділяється настроюванню зв'язків між таблицями.
Існує кілька типів процесу нормалізації бази даних:
Це все дозволяє уникнути надмірності даних, розподіляючи інформацію на різні адреси однієї БД.
Крім обтяжливого обслуговування та оновлення бази даних, при великому обсязі інформації, також може виникнути їхня неузгодженість. Стають частими аномалії вставки, оновлення та видалення даних. Крім того, надлишкові дані значно збільшують розмір бази даних та займають занадто багато місця на диску.
Денормалізація є навмисним приведенням структури бази даних у стан, який не задовольняє вимогам нормалізації. Денормалізація використовується для додавання надмірності, щоб швидко виконати запит. При використанні цього методу, дані об'єднуються, щоб швидко виконати запит. У цьому випадку, кількість таблиць зменшується, на відміну від нормалізації. Цей метод оптимізації застосовується після нормалізації.
Менша кількість з'єднань прискорює час обробки запиту та зменшує кількість помилок. Але існують недоліки цього методу: денормалізація може ускладнити оновлення та доопрацювання коду. Також може бути проблема суперечливих даних.
Ми вже виявили, що серед основних процесів зміни структури баз даних виділяються нормалізація та денормалізація.
Нормалізація:
Денормалізація:
Отже розглянемо приклади нормалізації та денормалізації. Маємо таку таблицю:
Проведемо нормалізацію за параметром компанії:
Ідемо далі. Маємо дві таблиці:
Після денормалізації ми отримаємо таку таблицю:
Використання нормалізації та денормалізації — невід'ємна частина роботи з базами даних. Про доцільність використання такого чи іншого методу слід думати в кожному окремому випадку. При правильному виборі, ти ніколи не зіштовхнешся з проблемами втрати даних або складнощами масштабування.