Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - SQL

Przykłady normalizacji i denormalizacji

Normalizacja to proces podziału tabel na mniejsze, powiązane części, aby usunąć duplikaty i poprawić spójność danych. Denormalizacja to odwrotny proces – łączenie tabel w celu szybszego dostępu do danych, nawet jeśli oznacza to powtarzanie tych samych informacji.

 

Przykład 1: Normalizacja (1NF, 2NF, 3NF)

Przed normalizacją

Wyobraźmy sobie, że mamy tabelę Zamowienia, która zawiera informacje o zamówieniach, produktach i klientach. Tabela wygląda tak:

id_zamowienia nazwa_klienta adres_klienta produkt ilosc cena
1 Jan Kowalski Ul. Prosta 5 Laptop 1 3000
1 Jan Kowalski Ul. Prosta 5 Myszka 2 50
2 Anna Nowak Ul. Zielona 7 Klawiatura 1 150

W tej tabeli mamy dane klientów, zamówień i produktów. Widzimy, że informacje o kliencie Jan Kowalski powtarzają się, co prowadzi do powielania danych. W przypadku wielu zamówień takie powtórzenia mogą zajmować dużo miejsca i prowadzić do problemów ze spójnością.

Po normalizacji (1NF, 2NF, 3NF)

Po normalizacji tabela Zamowienia została podzielona na kilka mniejszych, bardziej wyspecjalizowanych tabel:

Tabela Klienci:

id_klienta nazwa_klienta adres_klienta
1 Jan Kowalski Ul. Prosta 5
2 Anna Nowak Ul. Zielona 7

Tabela Zamowienia:

id_zamowienia id_klienta data_zamowienia
1 1 2023-01-15
2 2 2023-01-16

Tabela Produkty:

id_produktu nazwa_produktu cena
101 Laptop 3000
102 Myszka 50
103 Klawiatura 150

Tabela Zamowienia_Produkty:

id_zamowienia id_produktu ilosc
1 101 1
1 102 2
2 103 1

 

Dzięki normalizacji zmniejszyliśmy powtarzanie danych. Informacje o klientach i produktach są teraz przechowywane tylko raz, a każda tabela odpowiada za konkretny rodzaj danych.

 

Przykład 2: Denormalizacja

Czasami denormalizacja może być korzystna. Na przykład wtedy, gdy chcemy szybciej uzyskać dostęp do danych, zamiast wykonywać wiele połączeń (JOIN) między tabelami.

Przed denormalizacją

W przypadku znormalizowanej bazy danych, aby uzyskać informacje o zamówieniu, musimy połączyć dane z wielu tabel, takich jak Zamowienia, Klienci, Produkty i Zamowienia_Produkty. Może to być czasochłonne, szczególnie jeśli mamy dużą liczbę zapytań.

Po denormalizacji

W wyniku denormalizacji możemy stworzyć jedną dużą tabelę Zamowienia_Szczegoly, aby przyspieszyć dostęp do danych:

Tabela Zamowienia_Szczegoly:

id_zamowienia nazwa_klienta adres_klienta nazwa_produktu ilosc cena
1 Jan Kowalski Ul. Prosta 5 Laptop 1 3000
1 Jan Kowalski Ul. Prosta 5 Myszka 2 50
2 Anna Nowak Ul. Zielona 7 Klawiatura 1 150

W tej tabeli mamy wszystkie dane dotyczące zamówień, klientów i produktów w jednym miejscu. Dzięki temu dostęp do danych jest szybszy, ponieważ nie musimy łączyć kilku tabel. Jednak kosztem tego jest większe powtarzanie danych – informacje o klientach powtarzają się przy każdym zamówieniu.

 

Kiedy normalizować, a kiedy denormalizować?

  • Normalizacja jest najlepsza, kiedy chcemy mieć spójne dane i unikać powtarzania informacji. Jest to szczególnie przydatne, gdy dane często się zmieniają, ponieważ zmniejsza ryzyko wystąpienia niezgodności.
  • Denormalizacja sprawdza się, gdy zależy nam na szybkim dostępie do danych, a niekoniecznie na minimalizacji powtórzeń. Często stosuje się ją w hurtowniach danych, gdzie dane częściej są odczytywane niż modyfikowane.

Aby widzieć ocenę lekcji - Zaloguj się