Referencijalni integritet

Opcija Enforce Referential Integrity

Na poslednoj slici iz prethodnog predavanja primećuju se dve kolone: Table i Related Table. Prva se odnosi na tabelu Mesto i njen atribut IDmesta, a druga na tabelu Učenici i njen atribut Mesto. Ispod ovoga, postoji opcija Enforce Referential Integrity koju je moguće uključiti. Ova opcija se odnosi na referencijalni integritet. Ukoliko se uključi, baza podataka neće dozvoliti unos vrednosti spoljnog ključa ukoliko ona ne postoji kao vrednost primarnog ključa odgovarajuće tabele. U ovom konkretnom slučaju to bi značilo da baza podataka neće dozvoliti korisniku da u tabelu Učenici upiše vrednost atributa Mesto koja ne postoji u tabeli Mesto.

Referencijalni integritet – Opcija Cascade Update Related Fields

Kada se opcija Enforce Referential Integrity uključi, dozvoljava se uključivanje i preostale dve opcije. Cascade Update Related Fields, kao što naziv kaže, kaskadno ažurira (Update) povezujuća polja (Fields). To znači da, ukoliko se promeni primarni ključ tabele, vrednost tog primarnog ključa u ulozi spoljnog ključa odgovarajuće tabele će se automatski ažurirati, tj. dobiti novu vrednost. U primeru, ukoliko bi se promenila neka vrednost atributa IDmesta u tabeli Mesto, automatski bi se ta vrednost dodelila odgovarajućem spoljnom ključu Mesto u tabeli Učenici. Ukoliko se naziv mesta u tabeli Mesto promeni, automatski bi se prikazivala nov naziv mesta polja mesto u tabeli Učenici, jer je podešeno da ovo polje prikazuje nazive mesta, a ne IDmesta.

Referencijalni integritet – Opcija Cascade Delete Related Records

Treća opcija, Cascade Delete Related Records, razlikuje se od prethodne opcije u dve reči: Delete i Records. Kao što naziv kaže, ova opcija omogućava kaskadno brisanje (Delete) povezujućih slogova, tj. instanci, objekata (Records). Dakle, ukoliko bi se obrisala neka instanca tabele, automatski bi se obrisale sve instance odgovarajuće tabele(a) koje su povezane sa primarnim ključem obrisane instance. U primeru, ukoliko bi se obrisalo neko mesto, dakle jedna cela instanca iz tabele Mesto, obrisali bi se i svi učenici iz tabele Učenici koji su iz tog mesta, tj. svi koji sadrže primarni ključ mesta koji je obrisan. U ovom slučaju to ne bi imalo smisla, pa ne bi trebalo uključiti ovu opciju prilikom povezivanja tabela Mesto i Učenici. Međutim, pri povezivanju tabela Učenici i Telefoni ova opcija se preporučuje, jer ukoliko dođe do fluktuacije nekog učenika, odnosno njegovog brisanja iz baze podataka, svakako bi se preporučilo i brisanje svih njegovih brojeva telefona, jer nema smisla čuvati ih.

Dakle, može se uočiti da je veza prepoznata kao veza tipa one-to-many i nakon svih podešavanja, tj. uključivanja prve dve opcije i potvrđivanjem na dugme Create, veza izgleda kao na sledećoj slici (Slika 1).

referencijalniintegritet371
Slika 1

Dalje, potrebno je povezati tabele Učenici i Telefoni, prevlačenjem IDučenika iz tabele Učenici na IDučenika tabele Telefoni i uključiti potrebne opcije referencijalnog integriteta kao na sledećoj slici (Slika 2).

referencijalniintegritet372
Slika 2

Ova veza je, takođe, tipa one-to-many i izgleda kao na sledećoj slici (Slika 3).

referencijalniintegritet373
Slika 3

Preostaje još povezivanje tabela Učenici, Istorije učenika i Smer, što zapravo znači povezivanje tabela Učenici i Smer preko agregirajuće tabele Istorije učenika. Dakle, vrši se povezivanje tabele Učenici sa tabelom Istorije učenika, a zatim tabele Smer sa Istorijom učenika. Vrlo je važno prevući primarni ključ IDučenika iz tabele Učenici na IDučenika u tabeli Istorija učenika, a ne obrnuto, jer vrednost atributa IDučenika nastaje u tabeli Učenici, a ne u tabeli Istorija učenika. Isto se odnosi i na primarni ključ tabele Smer. Na slikama u nastavku (Slika 4 i Slika 5), prikazano je kreiranje ove dve veze i njihov izgled u prozoru Relationships, respektivno.

referencijalniintegritet374
Slika 4

referencijalniintegritet375
Slika 5

 

Sada su sve tabele povezane i Relationships prozor izgleda kao na sledećoj slici (Slika 7).

referencijalniintegritet376
Slika 6

 

Komentariši