Sobes.tech
Middle

Czym jest normalizacja i denormalizacja w kontekście pracy z bazami danych?

sobes.tech AI

Odpowiedź od AI

Normalizacja to proces organizacji danych w bazie danych w celu zmniejszenia nadmiarowości i poprawy integralności danych. Denormalizacja to proces dodawania nadmiarowych danych do bazy danych w celu poprawy wydajności zapytań.

Normalizacja:

  • Zasady: Usuwanie powtarzających się grup, zależności między niepowiązanymi atrybutami.
  • Formy normalizacji (główne):
    • 1NF (Pierwsza forma normalna): Wartości atomowe w kolumnach, brak powtarzających się grup.
    • 2NF (Druga forma normalna): W 1NF + brak zależności częściowych.
    • 3NF (Trzecia forma normalna): W 2NF + brak zależności przejściowych.
    • BCNF (Forma normalna Boyce'a-Codda): Bardziej rygorystyczna wersja 3NF.
  • Zalety:
    • Zmniejszenie nadmiarowości danych (oszczędność miejsca).
    • Poprawa spójności danych.
    • Uproszczenie modyfikacji danych (wstawianie, aktualizacje, usuwanie).
  • Wady:
    • Zwiększenie liczby tabel.
    • Konieczność łączenia tabel w celu uzyskania pełnych informacji (JOIN), co może obniżyć wydajność zapytań.

Denormalizacja:

  • Zasady: Świadome naruszenie reguł normalizacji w celu przyspieszenia odczytu danych.
  • Typowe techniki:
    • Duplikacja danych (np. przechowywanie nazwy produktu w tabeli zamówień).
    • Łączenie tabel.
    • Wstępne obliczanie wartości zagregowanych.
  • Zalety:
    • Zwiększa wydajność zapytań (zwłaszcza SELECT).
    • Zmniejsza liczbę JOIN-ów.
    • Może być przydatna w raportach i systemach OLAP.
  • Wady:
    • Zwiększenie nadmiarowości danych (strata miejsca).
    • Ryzyko niespójności danych.
    • Utrudnienie modyfikacji danych (konieczność aktualizacji danych w wielu miejscach).

Wybór między normalizacją a denormalizacją zależy od specyfiki aplikacji, priorytetów (integralność danych lub wydajność) i charakteru zapytań. Zazwyczaj normalizacja jest stosowana w systemach OLTP (transakcje online), a denormalizacja w systemach OLAP (analiza danych) lub w krytycznych obszarach wydajności OLTP.