Tabele se sastoje od redova i kolona. Kolone se nazivaju polja (Field). Svako polje ima jedinstveno ime i sadrži specifičnu informaciju o redu. Svaka tabela u SQL Server bazi podataka mora imati jedinstveno ime:
Slika 2.6.1. - Kreiranje tabela
Jedan način za uspostavljanje i održavanje zavisnosti između tabela SQL Server baze podataka jeste da napravite dijagram baze podataka. Veoma je važno da znate kako se pravi dijagram baze podataka, kako se u dijagram dodaju tabele, kako da izmenite dijagram i kako da tabele uklonite iz dijagrama baze podataka.
Pravljenje dijagrama baze podataka
Da bi se napravio dijagram baze podataka:
1. Desnim tasterom miša kliknite na čvor Database Diagrams i odaberite New Database dijagrama. Prikazaće se ekranska maska za potvđivanje kreiranja dijagrama slika 2.6.2.
Slika 2.6.2. Ekranska maska za potvrđivanje kreiranja dijagrama
2. Kliknite na Yes.
3. Desnim tasterom miša ponovo kliknite čvor Database Diagrams i odaberite New Database Diagram. Prikazaće se okvir za dijalog Add Table slika 2.6.3.
Slika 2.6.3. Prikaz svih objekata
4. Odaberite tabele koje želite da prikažete u dijagramu baze podataka i potom kliknite Add. Kliknite Close. Prikazaće se dijagram kao dijagram koji vidite na slici 2.6.4.
Slika 2.6.4 Prikaz dijagrama sa prethodno selectovanim tabelama
5. Kliknite i prevucite polje (polja) u tabeli Primar Key na polju (polje) u tabeli Foreign Key kako biste uspostavili zavisnost. Prikazaće se okvir za dijalog Tables and Columns slika 2.6.5.
Slika 2.6.5. Prikaz za kreiranje Foreign Key u alatu Managment Studio
6. Zadajte ime za zavisnost i proverite da li je zavisnost uspostavljena. Kliknite OK kako biste zatvorili okvir za dijalog. Prikazaće se okvir za dijalog Foreign Key Relationships slika 2.6.6.
Slika 2.6.6. Ekranska maska za definisanje kolone za Foreign Key
7. Zadajte atribute zavisnosti i potom kliknite Ok. Vratićete se na dijagram baze podataka.
8. Pošto zatvorite dijagram baze podataka, SQL Server će vas prvo upitati da li želite da zapišete izmene koje ste napravili slika 2.6.7. Kliknite Yes kako biste zapisali izmene koje ste napravili nad tabelama. Prikazaće se okvir za dijalog Choose Name.
Slika 2.6.7. Prikaz dijaloga Choose Name
9. Zadajte ime dijagrama baze podataka i potom kliknite Ok. Prikazaće se okvir dijalog Save u kojem ćete videti tabele koje se nalaze u dijagramu baze podataka (slika 2.6.8). Kliknite Yes kako biste ažurirali tabele. Dijagram baze podataka bi sada trebalo da se nalazi u čvoru Database Diagrams alatke SQL Server Management Studio.
Slika 2.6.8. Okvir dijalog Save
Da biste izmenili zavisnost između dve tabele u dijagramu baze podataka:
Slika 2.6.9. Okvir za dijalog Foreign Key Relationships
Da biste u dijagram baze podataka uvrstili tabele:
Da biste iz diagrama baze podataka uklonili tabelu:
Veoma lako mžete prikazati sve zavisnosti stranog ključa tabele u kojima ta tabela učestvuje. Evo šta treba da uradite:
Koristeći okvir za dijalog Foreign Key Relationships možete da napravite indeks. Treba samo da kliknete komandno dugme Add. Prikazaće se zavisnost koja ima unapred definisano ime i nema opis.
Pre nego što bilo šta uradite, treba da unesete specifikacije u ovir za dijalog Tables and Colums onako kako je to opisano u odeljku "Zadavanje specifikacija u okviru za dijalog Tables and Columns". Specifikacije za tabelu i kolonu morate zadati kako bi SQL Server Express mogao da napravi novu zavisnost.
Uklanjanje zavisnosti stranog ključa
Zavisnost stranog ključa se veoma lako uklanja, na sledeći način:
Zadavanjem specifikacije u okviru za dijalog Tables and Columns zadajete tabelu stranog ključa koja će učestvovati u zavisnosti, polje tabele stranog ključa koje će učestvovati u zavisnosti i polje u tekućoj tabeli koje će učestvovati u zavisnosti. Da biste upotrebili okvir za dijalog Tables and Columns, treba da uradite sledeće:
Slika 2.6.10. Okvir za dijalog Tables and Columns
Svakoj zavisnosti koju napravite, treba da dodelite opisno ime i kratak opis. Na taj način, kada zavisnost budete prikazali u prozou Foreign Key Relationships, možete lako uočiti prirodu zavisnosti koju ste odabrali.
Da biste uneli ili promenili ime zavisnosti, kliknite svojstvo (Name) zavisnosti, kratak opis.
Da biste za zavisnost uneli opis, kliknite svojtvo Description indeksa. Unesite kratak opis.
Kako se utvrđuje da li zavisnosti stranog ključa ograničavaju podatke koji se unose u kolonu?
Kao što vidite, zavisnosti se lako uspostavljaju. Uspostavljanje odgovarajućeg tipa zavisnosti nije tako lak zadatak. Kada pokušate da uspostavite zavisnost između dve tabele, SQL Server donosi neke odluke na osnovu unapred definisanih činilaca:
Pre nego što se uspostavi referencijalni integritet između dve tabele, moraju se ispuniti sledeći uslovi:
Pošto između dve tabele uspostavite refrencijalni integritet, SQL Server primenjuje sledeća pravila:
Ukoliko se naruši bilo koje od prethodna tri pravila, a između tabela se primenjuje referencijalni integritet, prikazuje se odgovarajuća poruka.
Osnovno ponašanje SQL Server-a je da zabrani uklanjanje roditeljskih slogova za koje postoje dete-slogovi i da zabrani menjanje vrednosti primarnog ključa roditeljskog sloga, a da za taj slog postoji dete-slog. Ova ograničenja možete da zaobiđete ukoliko koristite specifikacije INSERT i UPDATE.
Između tabela baze podata može uspostaviti referencijalni integritet:
SQL Server vam omogućava da definišete pravila pomoću kojih se određuje šta se dešava kada korisik ukloni ili ažurira slog.
Ta pravila se nalaze unutar čvora INSERT and UPDATE Specifications prozora Foreign Key Relationships.
Uvođenjem pravila uklanjanja (pravilo Delete) određujete šta se događa kada korisnik ukloni slog koji se nalazi na strani "jedan" zavisnosti jedan-prema-više. Na primer, zadavanjem pravila Delete za Cascade uspostaljate pravilo tako da korisnik može da ukloni slog koji se nalazi na strani "jedan" zavisnosti jedan-prema-više, čak i kada u tabeli na strani "više" zavisosti jedan-prema-više postoje odgovaraući slogovi. Korisnik može da ukloni mušteriju čak i kada za mušteriju postoje narudžbine. Referencijalni integritet između tabela se ne narušava pošto SQL Server automtski uklanja sve odgovarajuće slogove iz dete-tabele.
Ukolio pokušate da uklonite slog iz tabele koja se nalazi na strani "jedan" zavisnosti jedan-prema-više, a za slog u tabeli koja se nalazi na strani "više" ne postoje odgovarajući slogovi, onda ćete bez problema moći da uklonite slog. Sa druge strane, ukoliko pokušate da uklonite slog iz tabele koja se nalazi na strani "jedan" zavisnosti jedan-prma-više, a za slog u tabeli koja se nalazi na strani "više" postoje odgovarajući slogovi, onda ćete ukloniti slog iz roditeljske tabele i sve odgovarjuće slogove iz dete-tabele.
Kada za pravilo ažuriranja (pravilo Update) zadate opciju Cascade, korisnik može da promeni vrednost primarnog ključa sloga na strani "jedan" zavisnosti. Kada korisnik pokuša da promeni polje po kojem se dve tabele spajaju na strani "jedan" zavisnosti, promena se propagira na polje stranog ključa na strani "više" zavisnosti. To je korisna opcija ukoliko se polje primarog ključa može menjati.
Na primer broj računa za narudžbinu se možda može promeniti. Ukoliko korisnik promeni broj narudžbenice u roditeljskom slogu, onda tu promenu treba propagirati na odgovarajuće slogove u dete-tabeli.