Svodjenje modela na drugu normalnu formu

S

Svodjenje modela na drugu normalnu formu

Ako pogledamo tabelu „ZNANJE“ iz prethodnog primera gde smo sveli model na prvu normalnu formu, primetićemo da nam se podaci dupliciraju. Za razliku od tabele „KORISNIK“ gde atribut KORISNIK_ID definiše slog tabele, u tabeli KORISNIK slog definišu KORISNIK_ID i ZNANJE_ID atributi zajedno. Ovo u nekim slučajevima može da ima smisla, ali u našem slučaju, gde ime „znanja“ realno nije ni u kakvoj relaciji sa korisnikom i bezrazložno se multiplicira u tabeli, možemo zaključiti da nam se podaci „dupliraju“. Ovo dupliranje podataka, osim sto se odražava na prostor potreban za čuvanje istih, otežava i usporava operacije sa bazom.

Ako na primer želite da promenite ime jednog „znanje“ (na primer želite da „Audio“ postane „Rad sa zvukom“) morate to ime promeniti na više mesta, umesto samo na jednom (anomalija pri promeni). Dalje, pretpostavite da „mali perica“ ode sa foruma; u tom slučaju treba obrisati sve slogove vezane za njega; u tom slučaju, potpuno će nestati referenca da je znanje „Linux“ postojalo na forumu (anomalija pri brisanju).

Da bi ste zaobišli ove anomalije, potrebna vam je druga normalna forma.

Da bi „razvili“ našu bazu u drugu normalnu formu, potrebno je da razdvojimo atribute koji zavise od oba ključa koji definišu tabelu „ZNANJE“. Rezultat će biti dve tabele:

TABELA: ZNANJE

ZNANJE_ID: 1
ZNANJE_IME: Audio

ZNANJE_ID: 2
ZNANJE_IME: Video

ZNANJE_ID: 3
ZNANJE_IME: Hardware

ZNANJE_ID: 4
ZNANJE_IME: Windows

ZNANJE_ID: 5
ZNANJE_IME: Baze

ZNANJE_ID: 6
ZNANJE_IME: Linux

ZNANJE_ID: 7
ZNANJE_IME: Programiranje

TABELA: KORISNIK_ZNANJE

ZNANJE_ID: 1
KORISNIK_ID: 1

ZNANJE_ID: 2
KORISNIK_ID: 2

ZNANJE_ID: 1
KORISNIK_ID: 3

ZNANJE_ID: 2
KORISNIK_ID: 3

ZNANJE_ID: 3
KORISNIK_ID: 3

ZNANJE_ID: 4
KORISNIK_ID: 3

ZNANJE_ID: 1
KORISNIK_ID: 4

ZNANJE_ID: 2
KORISNIK_ID: 4

ZNANJE_ID: 3
KORISNIK_ID: 4

ZNANJE_ID: 4
KORISNIK_ID: 4

ZNANJE_ID: 5
KORISNIK_ID: 4

ZNANJE_ID: 6
KORISNIK_ID: 4

ZNANJE_ID: 7
KORISNIK_ID: 4

ZNANJE_ID: 3
KORISNIK_ID: 5

ZNANJE_ID: 7
KORISNIK_ID: 5

Druga Normalna Forma
Druga Normalna Forma

O autoru

Bogdan Kecman

2 komentara

  • Pozdrav,

    Volio bih da mi autor ili neko objasni razliku između prve i druge normalizacije. Malo sam zbunjen jer i u prvoj i u drugoj se radi na ukljanjanju dupliranja podataka, pa mi je sad problem da ih razlikujem.

    Usput, mislim da ima greška napisana u članku.

    „Za razliku od tabele “KORISNIK” gde atribut KORISNIK_ID definiše slog tabele, u tabeli KORISNIK slog definišu…“

    Valjda bi trebalo biti:

    „Za razliku od tabele “KORISNIK” gde atribut KORISNIK_ID definiše slog tabele, u tabeli ZNANJE slog definišu…“

Ključne Reči

Kategorije

Blog