Denormalizacja jest techniką optymalizacji bazy danych, w której dodajemy nadmiarowe dane do jednej lub więcej tabel. Może to pomóc nam uniknąć kosztownych złączeń w relacyjnej bazie danych. Zauważ, że denormalizacja nie oznacza nie wykonywania normalizacji. Jest to technika optymalizacji, która jest stosowana po wykonaniu normalizacji.
W tradycyjnej, znormalizowanej bazie danych przechowujemy dane w oddzielnych tabelach logicznych i staramy się zminimalizować nadmiarowość danych. Możemy dążyć do posiadania tylko jednej kopii każdego fragmentu danych w bazie.
Na przykład, w znormalizowanej bazie danych, możemy mieć tabelę Kursy i tabelę Nauczyciele. Każdy wpis w tabeli Kursy przechowywałby identyfikator nauczyciela dla kursu, ale nie nazwę nauczyciela. Kiedy potrzebujemy pobrać listę wszystkich kursów z nazwą nauczyciela, wykonujemy złączenie pomiędzy tymi dwoma tabelami.
Pod pewnymi względami jest to świetne rozwiązanie; jeśli nauczyciel zmieni swoje nazwisko, musimy je zaktualizować tylko w jednym miejscu.
Wadą tego rozwiązania jest to, że jeśli tabele są duże, możemy spędzić niepotrzebnie dużo czasu na wykonywaniu złączeń między tabelami.
Denormalizacja stanowi zatem inny kompromis. W ramach denormalizacji decydujemy, że nie mamy nic przeciwko pewnej nadmiarowości i dodatkowemu wysiłkowi związanemu z aktualizacją bazy danych, aby uzyskać korzyści związane z mniejszą liczbą połączeń.
Zalety denormalizacji:-
- Pobieranie danych jest szybsze, ponieważ wykonujemy mniej złączeń
- Kwerendy do pobierania danych mogą być prostsze (i dlatego mniej prawdopodobne jest, że będą miały błędy),
ponieważ musimy patrzeć na mniej tabel.
Cons of Denormalization:-
- Updaty i inserty są droższe.
- Denormalizacja może sprawić, że kod aktualizacji i insertów będzie trudniejszy do napisania.
- Dane mogą być niespójne. Która wartość jest „poprawna” dla kawałka danych?
- Redundancja danych wymaga więcej pamięci masowej.
W systemie, który wymaga skalowalności, jak w przypadku każdej większej firmy technologicznej, prawie zawsze używamy elementów zarówno znormalizowanych, jak i zdenormalizowanych baz danych.
Tagi praktyczne :