Ja ne mogu da se složim da je postojanje dva atributa 'datum_pocetka' i 'datum_zavrsetka' krešenje 3NF, pa čak ni 2NF!
Za objašnjenje 2NF i 3NF se koristi pojam
'funkcionalne zavisnosti'. To se često skrati pa se koristi samo pojam 'zavisnosti'. Ubacite ovo 'funkcionalno' u predhodne postove, i ti postovi dobijaju sasvim drugo značenje.
Da bi postojala funkcionalna zavisnost, mora postojati funkcija.
Neka imao sledeće sasvim legitimne podatke:
Code:
datum_pocetka datum_zavrsetka
------------- ---------------
2007-09-06 2007-09-07
2007-09-06 2007-09-08
Podsetimo se da funkcija za jedan argument mora imati samo jednu vrednost.
Neka je datum početka argument neke naše funkcije, a datum završetka njena vrednost. Da li postoji funkcija koja atribut 'datum_pocetka' preslikava u atribut 'datum_zavrsetka'? Ne postoji, jer se isti datum početka preslikava u dva različita datuma završetka. Ovo je u kontradikciji sa samom definicijom funkcije.
Pošto nemamo funkciju, nemamo ni funkcionalnu zavisnost.
-------------------------
Nemojte zaboraviti da je znak '<' ustvari
relacija između dva argumenta.
Svaka funkcija je relacija, ali nije i svaka relacija funkcija.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming." - Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo