Zależności funkcyjne sa to związki występujące pomiędzy atrybutami relacji. Jako przykład można podać tabelę w której dwie osoby o takim samym nazwisku i imieniu funcjonują na tej samej liście. Osoby te mają różne nemery identyfikacyjne. Dlatego też imiona i nazwiska zależą funkcjonalnie od numerów do których zostały przypisane.
atrybut A | atrybut B | atrybut C |
---|---|---|
l.p. | Nazwisko | Imię |
1. | Nowak | Adam |
2. | Nowak | Adam |
3. | Nowak | Ewa |
4. | Paluch | Tomasz |
W powyższym przykładzie nie jesteśmy w stanie wyznaczyć osoby według imienia i nazswiska.
jedyną możliwością jest wyznaczenie osoby wedgług numeru.
(artybuty B i C tworzą zależność od atrybutu A.
Występuje wówczas gdy po usunięciu jednego artybutu jesteśmy w stanie jednoznacznie zidentyfikować osobę
atrybut A | atrybut B | atrybut C |
---|---|---|
Nazwisko | Imię | wzrost |
Nowak | Adam | 152 |
Nowak | Adam | 188 |
Nowak | Ewa | 173 |
Paluch | Tomasz | 183 |
(usuwając z powyższej tabeli atrybut B nie jesteśmy w stanie określić który nowak jaki ma wzrost)
atrybut A | atrybut C |
---|---|
Nazwisko | wzrost |
Nowak | 152 |
Nowak | 188 |
Nowak | 173 |
Paluch | 183 |
W powyższym przykładzie nie zachodzi "Pełna zależność funkcyjna"
Zachodzi wówczas, gdy atrybut C jest zależny od atrybutu B, a atrybut B jest zależny od atrybutu A
atrybut A | atrybut B | atrybut C |
---|---|---|
Nr | Nazwisko | Nr telefonu |
1. | Nowak | 721 376 700 |
2. | Nowak | 722 700 376 |
3. | Nowak | 513 492 356 |
4. | Paluch | 514 356 492 |
W przykładzie tym atrybut C jest zależny od atrybutu A ponieważ gdy osoba (atrybut B) zmieni nr telefonu to ulegnie on również zmianie dla atrybutu A
Istnieją jeszcze inne zależności funkcyjne jak wieloartościowa i złączeniowa
Poziomy normalizacji baz danych (według narastającej normalizacji):
Tabela musi być relacyjną i musi spełniać warunki
przykład:
Nazwisko | Nr telefonu |
---|---|
Nowak | 721 376 700 |
Nowak | 722 700 376 |
Nowak | 513 492 356 |
Paluch | 514 356 492 |
Wszytkie kolumny nie należące do klucza głównego muszą od niego zależeć i muszą być przez niego jednoznacznie identyfikowane. Dane mogą być redundantne (mogą się powtarzać, ale nie w kluczu głównym)
przykład:
ID_Osoby | Nazwisko | Nr telefonu |
---|---|---|
1. | Nowak | 721 376 700 |
2. | Nowak | 722 700 376 |
3. | Nowak | 513 492 356 |
4. | Paluch | 514 356 492 |
Przykład tabeli nie spełniajcej normalizacji:
ID_Osoby | Nazwisko | Imię | Nr telefonu |
---|---|---|---|
1. | Nowak | Anna | 721 376 700 |
2. | Nowak | Adam | 721 376 700 |
3. | Paluch | Tomasz | 514 356 492 |
Powiyższą tabelę należy rozbić (zmiana nr telefou w krotce 2. nie pociągnie zmiany numeru telefonu w krotce 1.) na dwie mniejsze: osoby i numery telefonów. Wówczas zmiana telefonu wywoła zmianę we wszystkich krotkach
Przykład tabel spełniących normalizację 3NF:
|
|
W powyższej sytuacji zmieniając numer telefonu 1 zmieni się on dla obu "Nowaków" - co było naszym zamysłem.
Postać relacji w której atrybut prosty lub złożony jest kluczem dla każdego innego atrybutu relacji. Inny atrybut (B, C, BC, ...) nie może być częścią klucza głównego lub innym podkluczem relacji. Innaczej: jeżeli relacja posiada klucz kandydujący (złożony z przynajmniej 2 atrybutów np. AB) będący jednocześnie kluczem głównym to postać BCNF jest spełniona, ale jeżeli zachodzi relacja że atrybu C może być kluczem dla atrybutu A to postać BCNF nie jest już spełniona
Przykład:
Postać BCNF nie spełniona:
|
Postać BCNF spełniona:
|
Czwarta forma normalizacji całkowicie eliminuje możliwość umieszczania wielowartościowych (MVD - multi-valued-dependency) danych w tabeli BCNF.
Przykład:
Postać 4NF nie spełniona:
|
Postać 4NF spełniona:
|
|
Są używane przeważnie w teorii. W formach tych eleiminuje się zależności złączeniowe które mogą wystąpić w jakikolwiek sposób. Dodatkowo 6NF jest bazą temporalną co oznacza, że może uwględniać zależności czasowe lub interwały czasowe.
Ten typ bazy uzależnia indeksy baz od ich domen, czyli miejsc i sposobów przechowywania. Indeksy mogą być przechowywane w innych plikach, bazach, itp.