Skip to main content

Pełna zależność funkcjonalna w normalizacji bazy danych

Projektowanie i uczestnictwo dla wszystkich cz. 1 (PJM, napisy) (Może 2024)

Projektowanie i uczestnictwo dla wszystkich cz. 1 (PJM, napisy) (Może 2024)
Anonim

Pełna zależność funkcjonalna to stan normalizacji baz danych, który odpowiada standardowi normalizacji Drugiej Normalnej Formy (2NF). W skrócie oznacza to, że spełnia on wymagania Pierwszej Normalnej Formy (1NF), a wszystkie nie-kluczowe atrybuty są w pełni funkcjonalnie zależne od klucza podstawowego.

To nie jest tak skomplikowane, jak mogłoby się wydawać. Przyjrzyjmy się temu bardziej szczegółowo.

Podsumowanie pierwszej formy normalnej

Zanim baza danych będzie w pełni funkcjonalnie zależna, musi najpierw zachować zgodność z Pierwszą Normalną Formą.

Wszystko to oznacza, że ​​każdy atrybut musi zawierać pojedynczą, atomową wartość.

Na przykład: poniższa tabela nie stosować się do 1NF, ponieważ pracownik Tina jest połączony z dwiema lokalizacjami, obie w jednej komórce:

Pierwsza niezgodność z normalną formą
Pracownik Lokalizacja
Jan Los Angeles
Tina Los Angeles, Chicago

Dopuszczenie tego projektu może negatywnie wpłynąć na aktualizacje danych lub wpisy. Aby zapewnić zgodność z 1NF, zmień kolejność tabel tak, aby wszystkie atrybuty (lub komórki kolumn) zawierały jedną wartość:

Pierwsza zgodność z normalną formą

Pracownik Lokalizacja Jan Los Angeles Tina Los Angeles Tina Chicago

Ale 1NF nadal nie wystarcza, aby uniknąć problemów z danymi.

Jak działa 2NF, aby zapewnić pełną zależność

Aby być w pełni zależnymi, wszystkie niezatwierdzone atrybuty klucza muszą zależeć od klucza podstawowego. (Pamiętaj, że kluczem kandydującym jest dowolny klucz (na przykład klucz podstawowy lub klucz obcy) używany do jednoznacznego identyfikowania rekordu bazy danych.

Projektanci baz danych używają notacji, aby opisać zależności zależne między atrybutami:

Jeśli atrybut A określa wartość B, to to piszemyA -> B- co oznacza, że ​​B jest funkcjonalnie zależne od A. W tej zależności A określa wartość B, podczas gdy B zależy od A.

Na przykład poniżej Działy pracownicze tabela, EmployeeID i DeptID są obydwoma kluczami kandydującymi: EmployeeID jest kluczem podstawowym tabeli, a DeptID jest kluczem obcym.

Każdy inny atrybut - w tym przypadku EmployeeName i DeptName - musi zależeć od klucza podstawowego, aby uzyskać jego wartość.

Działy pracownicze
Numer identyfikacyjny pracownika Imię i nazwisko pracownika DeptID DeptName
Emp1 Jan Dept001 Finanse
Emp2 Tina Dept003 Obroty
Emp3 Carlos Dept001 Finanse

W tym przypadku tabela nie jest w pełni zależna, ponieważ podczas gdy nazwa pracownika jest zależna od klucza podstawowego EmployeeID, DeptName zależy od DeptID. To się nazywa zależność częściowa .

Aby ta tabela była zgodna z 2NF, musimy oddzielić dane na dwie tabele:

Pracowników
Numer identyfikacyjny pracownika Imię i nazwisko pracownika DeptID
Emp1 Jan Dept001
Emp2 Tina Dept003
Emp3 Carlos Dept001

Usuwamy atrybut DeptName z pliku Pracowników tabela i utwórz nową tabelę Departamenty :

Departamenty
DeptID DeptName
Dept001 Finanse
Dept002 Zasoby ludzkie
Dept003 Obroty

Teraz relacje między tabelami są w pełni zależne lub w 2NF.

Dlaczego pełna zależność jest ważna

Pełna zależność między atrybutami bazy danych pomaga zapewnić integralność danych i uniknąć anomalii danych.

Weźmy na przykład tabelę w powyższej sekcji, która przylega tylko do 1NF. Oto znowu:

Pierwsza zgodność z normalną formą
Pracownik Lokalizacja
Jan Los Angeles
Tina Los Angeles
Tina Chicago

Tina ma dwie płyty. Jeśli zaktualizujemy jeden, nie zdając sobie sprawy, że są dwa, wynik będzie niespójny danych.

A co, jeśli chcemy dodać pracownika do tej tabeli, ale nie znamy jeszcze lokalizacji? Możemy nie być uprawnieni do dodania nowego pracownika, jeśli atrybut Location nie zezwala na wartości NULL.

Pełna zależność nie jest jednak całością, jeśli chodzi o normalizację. Musisz upewnić się, że twoja baza danych jest w trzeciej normalnej formie (3NF).