GeeksforGeeks
First Normal Form (1NF) nie eliminuje redundancji, ale raczej to, że eliminuje powtarzające się grupy.
Zamiast posiadania wielu kolumn tego samego rodzaju danych w rekordzie, (0NF lub Unnormalized form) usuwasz powtarzające się informacje do oddzielnej relacji i reprezentujesz je jako wiersze. To jest to, co stanowi 1NF.
Druga forma normalna (2NF):
Druga forma normalna (2NF) jest oparta na koncepcji pełnej zależności funkcjonalnej. Druga forma normalna ma zastosowanie do relacji z kluczami złożonymi, czyli relacji z kluczem głównym złożonym z dwóch lub więcej atrybutów. Relacja z jednoatrybutowym kluczem głównym jest automatycznie w co najmniej 2NF. Relacja, która nie jest w 2NF może cierpieć z powodu anomalii aktualizacji.
Aby być w drugiej postaci normalnej, relacja musi być w pierwszej postaci normalnej i relacja nie może zawierać żadnej częściowej zależności. Relacja jest w 2NF, jeśli nie ma częściowej zależności, tj. żaden atrybut niebędący pierwszorzędnym (atrybuty, które nie są częścią żadnego klucza kandydującego) nie jest zależny od żadnego właściwego podzbioru dowolnego klucza kandydującego tabeli.
Innymi słowy,
relacja, która jest w Pierwszej Formie Normalnej i każdy atrybut nie będący kluczem głównym jest w pełni funkcjonalnie zależny od klucza głównego, wtedy relacja jest w Drugiej Formie Normalnej (2NF).
Uwaga – Jeżeli odpowiedni podzbiór klucza kandydującego określa atrybut nie będący kluczem głównym, to nazywamy to zależnością częściową.
Normalizacja relacji 1NF do 2NF polega na usunięciu zależności częściowych. Jeśli istnieje częściowa zależność, usuwamy częściowo zależny atrybut(y) z relacji, umieszczając je w nowej relacji wraz z kopią ich wyznacznika.
Rozważmy przykłady podane poniżej.
Przykład-1:
Rozważmy tabelę jak poniżej.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Zauważmy, że jest wiele kursów o tej samej opłacie za kurs.
Tutaj,
OPŁATA ZA KURS nie może sama decydować o wartości COURSE_NO lub STUD_NO;
OPŁATA ZA KURS razem ze STUD_NO nie może decydować o wartości COURSE_NO;
OPŁATA ZA KURS razem z COURSE_NO nie może decydować o wartości STUD_NO;
Więc,
COURSE_FEE byłby atrybutem nieprymarnym, gdyż nie należy do jedynego klucza kandydującego {STUD_NO, COURSE_NO} ;
Ale, COURSE_NO -> COURSE_FEE, tzn.e., COURSE_FEE jest zależne od COURSE_NO, które jest właściwym podzbiorem klucza kandydującego. Atrybut nie-prime COURSE_FEE jest zależny od odpowiedniego podzbioru klucza kandydującego, co jest zależnością częściową, a więc relacja ta nie jest w 2NF.
Aby przekonwertować powyższą relację do 2NF,
musimy podzielić tabelę na dwie tabele takie jak :
Tabela 1: STUD_NO, COURSE_NO
Tabela 2: COURSE_NO, COURSE_FEE
Table 1 Table 2STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 10002 C2 C2 15001 C4 C3 10004 C3 C4 20004 C1 C5 2000 2 C5
Uwaga – 2NF stara się zredukować nadmiarowe dane przechowywane w pamięci. Na przykład, jeśli jest 100 studentów biorących udział w kursie C1, nie musimy przechowywać jego opłaty jako 1000 dla wszystkich 100 rekordów, zamiast tego możemy przechowywać ją w drugiej tabeli jako opłatę za kurs C1 równą 1000.
Przykład-2:
Rozważ następujące zależności funkcjonalne w relacji R (A, B, C, D )
AB -> C BC -> D
W powyższej relacji, AB jest jedynym kluczem kandydującym i nie ma częściowej zależności, tj. dowolny właściwy podzbiór AB nie określa żadnego atrybutu nieprime.