Matične i prometne tablice

Matične i prometne tablice


Pri postupku dizajniranja najprije se keiraju matične tablice. U takvim tablicama zapisi se upisuju samo jedanput. Primjer takve tablice je tablica kupaca ili tablica filmova.

Prometne tablice (engl. Junction table) nazivaju se još i srce baze podataka. U njih se bilježe transakcije i promet tj. posudbe. Glavni ključevi u prometnim tablicama u praksi se često sastoje od više polja.

Pravila za ključeve

Tablice se sastoje od polja i zapisa. Kako bi oslikali relacijski model podataka, svaka tablica mora imati jedinstveni indetifikator. Bez jedinstvenog identifikatora nemoguće je adresirati zapis. Jedinstvenost se ostvaruje stvaranjem glavnog ključa (engl. Primary key).

Glavni ključ se sastoji od jednog ili više polja koja jedinstvno identificiraju svaku zapis tablice. Svako polje ili skupina polja tablice koje sadrže jedinstvene vrijednosti smatraju se mogućim ključevima (engl. Candidate key)

Jedan od mogućih ključeva postaje glavni ključ a ostali mogući ključevi postali alternativni ključevi (engl. Alternate key).

Jednostavni i složeni ključevi


Glavni ključ koji se sastoji od samo jednog polja nazivamo jednostavan ključ (engl. Simple key).

Glavni ključ koji se sastoji od više polja nazivamo složeni ključ (engl. Composite key).

Dobro je da je glavni ključ: - minimalan (ima što je moguće manje polja) - stabilan (rijetko se mijenja) - jednostavan (poznat korisniku)

Glavni i strani ključ


Glavni ključ (engl. Primary key) je polje ili više polja koje jedinstveno određuje svaku zapis. Po glavnom ključu svi su zapisi obavezno različiti.

Primjeri glavnog ključa su: OIB, ISBN knjige, Poštanski broj, bar kod proizvoda itd.

Zajedničko polje između dvije tablice a nalazi se na strani više u relaciji zovemo strani ključ (engl. Foreign key) i omogućava nam uspostavu relacija između tablica.

Relacije između tablica


Relacija jedan prema više ili 1:N (engl. One to Many)

Relacija jedan prema jedan ili 1:1 (engl. One to One)

Relacija više prema više ili M:N (engl. Many to Many)

Relacije 1:N


Relacija 1:N odnosno jedan prema više je najvažnija vrsta odnosa između tablica. U tom slučaju jednom zapisu prve tablice odgovara više zapisa druge tablice.

U gotovo svim slučajevima je zajedničko polje po kojem se spajaju tablice na strani jedan glavni ključ

Zajedničko polje na strani druge tablice je strani ključ.

Relacije 1:1


U relaciji 1:1 odnosno jedan prema jedan, svakom zapisu tablice s jedne strane odgovara jedan zapis tablice s druge strane.

Ovakva vrsta relacija nije uobičajena i koristi se samo u posebnim slučajevima.

Najčešći razlozi zbog kojih se koristi relacija jedan prema jedan su: - ograničen broj polja u tablici baze podataka - neka polja tablice se moraju bolje zaštititi od preostalih polja - nekoliko polja tablice su neophodna samo kao podskup slogova iste tablice.

Relacije M:N


U relaciji M:N odnosno više prema više, za slogove obje tablice postoji više slogova u drugoj tablici.

U većini baza podataka ne možemo izravno uspostaviti relaciju više prema više.

Ovu relaciju ostvarujemo umetanjem prometne tablice (engl. Junction table) između tablica za koje želimo ostvariti relaciju više prema više.

Između prometne tablice i druge dvije tablice koje ostvarujemo relaciju jedna prema više.

Referenicjalni integritet


Pravila referencijalnog integriteta znači da u bazi podataka ne smije biti ne uparene vrijednosti stranog ključa. To znači da:

U tablicu se ne mogu unijeti slogovi ukoliko za njih ne postoji odgovarajući slog u drugoj tablici.

Vrijednost glavnog ključa se ne može promijeniti ako se ta vrijednost koristi kao strani ključ u drugoj tablici.

???Iz tablice se ne može obrisati zapis ako u drugoj tablici postoje zapisi u kojima ja za vrijednost dio stranog ključa

Entitetski integritet


Pravilo entitetskog integriteta određuje da vrijednost glavnog ključa ne može imati vrijednost NULL.

Ovo pravilo se ne odnosi samo na glavne ključeve koji su napravljeni nad jednim poljem, već i na glavne ključeve koji se sastoje od više polja. U glavnom ključu koje se sastoji od više polja vrijednost niti jednog polja ne smije sadržavati vrijednost NULL.

To ima smisla jer kada bi glavni ključ imao vrijednost NULL, on više ne bi bio jedinstveni identifikator zapisa. Access Jet Engine ne dopušta dodjeljivanje glavnom ključ vrijednost NULL.



Hvala na pozornosti!


Pitanja?