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.