Chciałbym dopytać o postacie normalne, a dokładniej doprecyzować definicje jednocześcnie poprosić o pomoc w wyjaśnieniu. Korzystam z kilku źródeł i w każdym autorzy inaczej tłumaczą postacie normalne, co finalnie doprowadza mnie do małego zakłopotania :) Dużo chyba również jest niedopowiedzeń i sam nie wiem jak to w końcu jest. Najbardziej zależy mi na wyjaśnieniu 2NF, 3NF i o ile to możliwe to również BCNF oraz 4NF.
Moje rozumowanie odnośnie 1NF (to akurat wydaje się w pełni zrozumiałe):
- tabela przechowuje dane w sposób atomowy
- każda kolumna przechowuje 1 informację (brak kolekcji)
- tabela posiada klucz główny
Z 2NF robi się trudniej czytając poniższe wyjaśnienia:
Tabela jest zgodna z 2PN, jeżeli znajduje się w pierwszej postaci normalnej i wartości jej wszystkich niekluczowych kolumn zależą od całego klucza podstawowego). W praktyce oznacza to, że jeśli klucz podstawowy tabeli jest prosty (założony na pojedynczej kolumnie), a nie złożony (założony na kilku kolumnach), i tabela jest w 1PN, to spełnia ona też automatycznie wymogi drugiej postaci normalnej.
Tabela jest w 2PN, jeżeli jest w 1PN i żaden atrybut niekluczowy nie jest częściowo zależny od klucza.
Tabela jest w 2NF, jeśli jest w 1NF i wszystkie jej kolumny wchodzą w skład klucza głównego LUB jeśli jej klucz główny jest pojedynczą kolumną.
Druga postać normalna mówi, że tabela przechowuje dane dotyczące tylko konkretnej klasy obiektów.
No i mam problem z określeniem co tak naprawdę oznacza 2NF, bo według mnie:
- tabela jest w 1NF
- każdy niekluczowy atrybut zależy od klucza głównego
- tabela przechowuje dane dotyczące tylko konkretnej klasy obiektów, czyli np. tabela użytkowników nie zawiera informacji o produktach
Definicja 3NF:
Doprowadzenie tabeli do trzeciej postaci normalnej polega na znalezieniu i usunięciu przechodnich zależności pomiędzy atrybutami (tabela jest zgodna z 3PN, jeżeli jest już w drugiej postaci normalnej i wartości jej kolumn nie są zależne od niekluczowych atrybutów).
Kolumna informacyjna nie należąca do klucza nie zależy od innej kolumny informacyjnej.
Według mnie 3NF:
- tabela jest w 2NF
- każdy niekluczowy atrybut nie jest zależny od innych niekluczowych atrybutów (brak przechodnich zależności funkcjonalnych)
Doprezycowanie odnośnie przechodniej zależności funkcjonalnej:
- przechodnia zależność funkcjonalna oznacza, że dowolny niekluczowy atrybut jest powiązany z innym niekluczowym atrybutem
- atrybut jest funkcjonalnie zależny od innego atrybutu, gdy zmiana w innym atrybucie powoduje konieczność zmiany w pierwszym atrybucie
Funkcjonalnie, czy funkcyjnie - które słowo lepiej pasuje?
Definicja BCNF:
Kolejną, czasami nazwaną postacią trzecią i pół, postacią normalną jest postać Boyce’a-Codda (BCNF). Jej formalna definicja brzmi następująco: tabela jest zgodna z BCNF, jeżeli jest już w trzeciej postaci normalnej i dla każdej nietrywialnej zależności
między podzbiorami jej atrybutów zbiór będący wyznacznikiem jest jej zbiorem identyfikującym.
Definicja 4NF:
W definicji czwartej postaci normalnej termin „zależność funkcyjna” jest zastąpiony terminem „zależność wielowartościowa” (tabela jest zgodna z 4PN, jeżeli jest już w postaci Boyce’a-Codda i nie występują w niej zależności wielowartościowe).
Tutaj wysiadłem :)
Jeśli ktoś mógłby wyjaśnić temat to zapraszam, bo zapewne nie jest to trudne w zrozumieniu, a ludzie niepotrzebnie komplikują pewne rzeczy. Mocno teoretyczny temat, ale może ktoś pomoże.