Ogranicznia

Kolejnym niezwykle istotnym konceptem relacyjnych baz danych są ograniczenia narzucane na kolumny danych w tabeli. Służą do ograniczenia rodzaju danych, które mogą trafić do tabeli. Wpływają na dokładność i wiarygność danych w bazie danych.

Ograniczenia mogą być nakładane na poziomie kolumn lub tabel. Ograniczenia na poziomie kolumny stosowane są tylko dla jednej z nich. W przypadku tabeli ograniczenie nakładamy na wszystkie kolumny.

Zanim przejdziemy dalej skupimy się na kilku najczęściej używanych ograniczeniach:

  • NOT NULL - kolumna nie może mieć wartości NULL;
  • DEFAULT - domyślna wartość dla kolumny jeśli żadna nie została określona;
  • UNIQUE - wszystkie wartość w kolumnie są różne;
  • Primary Key - klucz główny tabeli, jednoznaczna identyfikacja danego wiersza w tabeli;
  • Foreign Key - klucz obcy, unikalny identifkator rekordu z innej tabeli bazy danych;
  • CHECK - wszystkie wartości w danej kolumnie spełniają określone warunki;
  • INDEX - używany do tworzenia spisu treści rekordów – zabieg indeksowania pozwala na bardzo szybkie tworzenie i pobierane danych z bazy danych.

Powyższe tematy będziemy szczegółowo omawiać na późniejszym etapie.

Integralność danych

Integralność danych jest procesem zapobiegania przed wprowadzeniem zmian w nieautoryzowany sposób podczas odczytu, zapisu, przekazywania oraz przechowywania danych. Najprostszym przykładem jest zabezpiecznie przed usunięciem rekordów, które są wykorzystywane przez inne rekordy.

Wszystko stanie się nieco jaśniejsze jeżeli spojrzymy na poniższe kategorie integralności danych:

  • Entity Integrity - brak duplikatów wierszy w tabeli;
  • Domain Integrity - poprawność danych wynikająca z ograniczeń: typu, formatu lub zakresu wartości;
  • Referential Integrity - wiersze nie mogą zostać usunięte jeżeli są wykorzystywane przez inne rekordy;
  • User-Defined Integrity - specyficzne reguły biznesowe, których nie jesteśmy w stanie zdefiniować w ramach żadnego z powyższych ograniczeń.

Normalizacja bazy danych

Normalizacja bazy danych to proces efektywnej organizacji danych znajdujących się w bazie danych. Istnieją dwa główne powody tego procesu:

  1. eliminacja zbędnych danych;
  2. ustanawianie relacji między tabelami.

Proces ten wpływa na zmniejszenie ilości miejsca zajmowanego przez bazę danych oraz zapewnia logiczny sposób przechowywania tych danych. Najprostszym przykładem może być system zarządzania komisem samochodowym. W jednej z tabel przechowujemy informację dotyczącą wszystkich dostępnych marek. Druga tabela (będą w relacją do pierwszej) posiada informację o modelach danych marek. W momencie przyjazdu lawety musimy dodać kilka ogłoszeń do naszego systemu...

Z pierwszej listy rozwijalnej wybieramy dany model (zapytanie do pierwszej tabeli). Na drugiej liście rozwijalnej wyświetlają się wszystkie dostępne modele dla danej marki (zapytanie do drugiej tabeli z odpowiedniem identyfikatorem z pierwszej). Mając wskazane dwie wartości dodajemy do 3-ciej tabeli nasze ogłoszenie (w okrojonej formie na potrzeby wizualizacji przykładu). Załóżmy, że do naszego komisu przyjechało właśnie Audi S8 D4:

+----+----------+   +-----+----------+-----------------+
| ID | BRAND    |   | ID  | BRAND_ID | MODEL           |
+----+----------+   +-----+----------+-----------------+
|  1 | Audi     |   |  1  | 1        |  RS6 C5         |
|  2 | BMW      |   |  2  | 1        |  RS6 C6         |
|  3 | Mercedes |   |  3  | 1        |  S8 D4          |
|  4 | Nissan   |   |  4  | 2        |  M3 E46         |
|  5 | Pagani   |   |  5  | 2        |  M5 E39         |
|  6 | Porsche  |   |  6  | 3        |  C63 AMG W204   |
|  7 | Renault  |   |  7  | 6        |  718 Cayman GT4 |
|  8 | Volvo    |   |  8  | 6        |  911 Speedster  |
+----+----------+   +-----+----------+-----------------+
Dla przypadku o którym wspomnieliśmy nasza tabela wynikowa (aktywne ogłoszenia) prezentowałaby się w poniższy sposób:
+----+----------+
| ID | OFFERS   |
+----+----------+
|  1 | 3        | 
+----+----------+

Wytyczne dotyczące normalizacji podzielone są na tzw. postaci normalne:

  • 1NF - pierwsza postać normalna;
  • 2NF - druga postać normalna;
  • 3NF - trzecia postać normalna.

Warto mieć na uwadzę, że postaci te są progresywne. Oznacza to, iż kwalifikacja do 3 postaci normalnej możliwa jest po spełnieniu warunków 2 postaci normalnej a 2 postać normalna musi spełniać zasady 1 postaci normalnej.

W tym wpisie nie będę skupiał się na opisie poszczególnych postaci normalnych. Chciałbym jednak dodać, że to nie wszystko. Możecie również spotkać się z postacią normalną taką jak BCNF czy 4NF.