Wprowadzenie do normalizacji w relacyjnych bazach danych

Czy znasz podstawową różnicę między bazami danych OLTP i OLAP? Dostęp do OLTP jest ogromny, wykonywane są w nim różnego rodzaju operacje (odczyt, zapis, modyfikacja), a baza danych wymaga optymalizacji, aby móc przetwarzać te żądania tak szybko, jak to możliwe. Właśnie dlatego bazy danych OLTP są silnie znormalizowane, podczas gdy bazy danych OLAP są silnie zdenormalizowane.

Normalizacja bazy danych oznacza podzielenie jej na małe tabele, tak aby dane nie były zbędne. Podczas normalizacji możesz napotkać te pojęcia.

Bezstratny rozkład

Pod tym terminem możesz sobie wyobrazić, że możesz nie utracić żadnych danych. Musisz upewnić się, że nie stracisz żadnych danych, jeśli spróbujesz ponownie połączyć bazę danych w jedną tabelę.

Określanie kluczy kandydatów

Klucze kandydujące to zestawy atrybutów encji, które określają unikalność instancji (rekordów, wierszy) encji. Mogą być naturalne lub sztuczne. Ważne jest, aby móc zidentyfikować każdy wiersz tabeli. Zwłaszcza jeśli spróbujemy normalizować. Bo wtedy będziemy mogli łączyć ze sobą poszczególne mniejsze tabele lub tworzyć relacje właśnie za pomocą tych kluczy kandydujących. Zawsze wybieram najbardziej unikalny i najmniejszy z kluczy kandydujących i tworzę z niego klucz podstawowy.

Zależność funkcjonalna

Koncepcja ta stara się wyrazić relację poszczególnych atrybutów w danej jednostce, która musi być bezpośrednio związana z kluczem podstawowym. Załóżmy na przykład tabelę INVOICE_HEADER, w której będą przechowywane takie informacje, jak numer faktury (klucz podstawowy), na kogo faktura zostanie wystawiona, kiedy i przez kogo.

Wyobraźmy sobie, że w tabeli mam także inną gałąź pracownika z atrybutem. Poinformowałaby, że pracownik wystawi fakturę w oddziale. Atrybut ten nie jest funkcjonalnie zależny od numeru faktury, gdyż nie opisuje bezpośrednio faktury. Ten atrybut opisuje bezpośrednio oddział, a nie fakturę. Nie jest zatem funkcjonalnie uzależniona od faktur. Dlatego nie powinno go tam być. Zależność funkcjonalna oznacza więc, że każdy atrybut danej jednostki jest bezpośrednio zależny od wybranego przez nas klucza podstawowego.

Normalizacja składa się z postaci normalnych. Każdy normalny formularz to seria reguł, które możesz zastosować w swojej bazie danych.

Marián Knězek