Jak dobrze zaprojektować bazę danych?

Od wielu lat mówi się, że informacja to władza. A w dzisiejszych czasach ilość produkowanych i docierających do nas informacji rośnie w niesamowitym tempie. Rozwój technologii pozwala na magazynowanie i przetwarzanie ogromnych ilości danych, na każdym poziomie złożoności — od prostych informacji o pracownikach firmy do tych zbieranych przez Google i inne internetowe koncerny na temat każdego naszego posunięcia w sieci i świecie rzeczywistym.

Jendak aby te informacje były użyteczne i stanowiły dobrą postawę do analiz i wyciągania wniosków, należy zastosować przemyślany sposób ich przechowywania. Projektowanie baz danych to sprawa dużo bardziej skomplikowana niż mogłoby się wydawać. Przede wszystkim ważne jest to, żeby nie dublować informacji, czemu zapobiega zasada możliwie najbardziej elementarnych danych w jednym polu. Przykładowo: zamiast atrybutu „adres”, na który składałyby się elementy takie jak ulica/aleja/plac, nazwa ulicy, numer domu, numer mieszkania, kod pocztowy oraz miejscowość, lepiej stworzyć dla części z tych elementów oddzielne pole. Unikniemy w ten sposób wielokrotnego występowania miasta czy ulicy, co przy większym rozmiarze bazy ma duże znaczenie. Taka sama zasada dotyczy imion i nazwisk — poza nielicznymi wyjątkami są to dość powtarzalne cechy. Innym obliczem tak zwanej „redundancji” jest przechowywanie w jednej tabeli danych, które są ze sobą wzajemnie skorelowane, bądź wynikają z siebie nawzajem. Typowym przykładem mogą być wartości netto, brutto oraz podatek. Jeśli znamy wartości netto i brutto, to bez problemu możemy obliczyć wartość (bezwzględną, jak i procentową) podatku, tak samo rzecz jasna można na podstawie wartości brutto i podatku obliczyć wartość netto. Wydawać by się mogło, że jedno dodatkowe pole tak bardzo nie zaszkodzi, jednak należy pamiętać, że przy większej liczbie odstępstw od złotej zasady różnice w rozmiarze bazy mogą być znaczące. Oczywiście, mogą zdarzyć się przypadki, że wartość obliczona z pozostałych zawartych w bazie jest na tyle skomplikowana do obliczenia i często wykorzystywana, że uzasadnione będzie utrzymanie jej w bazie, mimo wystąpienia redundancji.

Kolejnym ważnym elementem jest unikalność rekordów, czyli pewność, że żadne dwa rekordy nie są takie same. O tej unikalność decyduje klucz główny, który może mieć automatycznie generowanego numeru id, lub jego funkcję może pełnić rodzaj informacji, o którym wiemy, że jest unikalny — jak np. numer pesel czy numer telefonu. Czasem klucz główny składa się z kilku pól, które w sumie tworzą niepowtarzalny zestaw, jednoznacznie identyfikujący dany rekord. Przeoczenie kwestii unikalności rekordów może skutkować brakiem integralności danych.

Oczywiście, opisane powyżej aspekty projektowania baz danych to tylko podstawy, punkt wyjściowy, który pokazuje ogólną logikę dobrze zaprojektowanej bazy. Jednak ważniejsze niż sztywne trzymanie się reguł i zasad jest mądre dostosowanie bazy do indywidualnych potrzeb. Nie ma bowiem jednej recepty na idealną bazę, są jedynie zasady, które zazwyczaj się sprawdzają, oraz wiedza, która pozwala na wykorzystanie tych zasad w sposób maksymalizujący efektywność użytkowania bazy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *