WEBnSTUDY.com
Softver

Relacione baze podataka

Relacione baze podataka su i danas izuzetno zastupljene u informacionim sistemima. Zasnovane su na relacionom modelu, prema kome se podaci smeštaju unutar relacija (tabela) koje predstavljaju skupove slogova (redova) koji poseduju atribute (kolone). Relacije (tabele) mogu biti bazične (koje sadrže same podatke) ili izvedene (rezultati kreirani na osnovu bazičnih). Operacije nad relacionom bazom podataka nazivaju se relaciona algebra i njen dobar deo potiče iz matematičke teorije skupova. To znači da se nad skupovima podataka mogu kreirati unije i preseci, kao i da se pronalaze podskupovi.[1]

Kod relacionih baza, podaci se beleže u obliku tabela, što nas na prvi pogled može asocirati na programe za tabelarne kalkulacije, međutim, postoje neke suštinske razlike.

Tabele u spreadsheet programima Tabele u bazama podataka
Iako veoma velik, broj redova i kolona je unapred ograničen Broj kolona je ograničen, ali broj redova zavisi samo od količine dostupne memorije na disku
Osnovni podatak je ćelija, a podaci su raspoređeni u niz – za svaku ćeliju se tačno zna „adresa“ i bitno je u kojoj ćeliji se nalazi koji podatak Osnovni podatak je red (slog, zapis), a podaci su raspoređeni u skup – ne postoji „prvi“ ili „poslednji“ podatak – svi su ravnopravni, a kasnije se mogu sortirati prema nekom kriterijumu
Bilo koja ćelija može sadržati bilo koji podatak, bilo kog tipa (tekstualni, numerički i sl.) Podaci imaju strukturu – svaka kolona sadrži istorodne podatke (npr. kolona za imena, kolona za datume rođenja i sl.)
Ćelije mogu sadržati podatke ali i formule za izračunavanja U tabelama se beleže isključivo podaci

Uporedni pregled karakteristika tabela u spreadsheet programima i bazama podataka

Osnovni koncepti sa kojima se susrećemo u radu sa bazama podataka su:

Tipovi podataka

Kako bi rad bio efikasniji, podaci u tabelama se moraju „tipizirati“ prema svom sadržaju. Tako baze podataka prepoznaju različite tipove podataka (tekstualni, celobrojni, brojevi sa decimalama, logički, datumski i sl).

Numerički podaci Tekstualni podaci
1 1
5 1125
6 12
12 32
32 5
579 579
1125 6

Sortiranje numeričkih i tekstualnih podataka

Istina je da bi svaki podatak mogao da se predstavi u obliku teksta, međutim, rad sa takvim podacima bi narušio performanse celog sistema – sortiranje, pretraga, izračunavanje rezultata bilo bi veoma usporeno pošto bi podaci morali stalno da se pretvaraju iz teksta u odgovarajuće tipove. U priloženoj tabeli možemo videti kako se razlikuje sortiranje brojeva, od brojeva predstavljenih u tekstualnom obliku. Brojevi koji su dati u numeričkom obliku sortiraju se po vrednosti, dok se brojevi dati u tekstualnom obliku sortiraju prema ciframa.

Normalizacija

U sledećem primeru vidimo tabelu u kojoj su dati podaci o studentima i njihovim položenim ispitima.

INDEKS GODINA IME PREZIME ISPIT PROFESOR OCENA POENI
5/2010 2010 Milan Jovanović INF 55 9 87
49/2010 2010 Saša Arsenić INF 55 6 55
156/2009 2009 Ana Stojanović PRA 19 7 66
5/2010 2010 Milan Jovanović STA 24 10 100
170/2010 2010 Jasna Gajić INF 4 6 55
170/2010 2010 Jasna Gajić PRA 19 7 65
5/2010 2010 Milan Jovanović PRA 19 6 59

Ono što primećujemo jeste da se jedan broj podataka ponavlja (za svaki ispit koji je neki student položio ponavljaju se svi podaci vezani za tog studenta). Mane su višestruke i očigledne – bespotrebno zauzimanje memorije, gubljenje vremena prilikom unosa podataka, veća mogućnost greške. Ovakva situacija je česta prilikom projektovanja baze podataka i rešava se kroz proces koji se naziva normalizacija. Normalizacija se na najjednostavniji način može definisati kao proces razdvajanja podataka na više tabela, tako da:

Suštinski, najvažniji rezultat normalizacije je uklanjanje nepotrebnih ponavljanja u podacima. Osim toga, svako polje bi trebalo da bude nezavisno – uz mogućnost da se promeni bez menjanja drugih polja. Takođe, polja ne bi trebalo da sadrže podatke koji se izračunavaju na osnovu već postojećih polja.

Najjednostavniji primer normalizacije u ovom slučaju jeste razdvajanje na dve tabele – u jednoj se nalaze samo podaci o studentima, a u drugoj podaci o položenim ispitima.

INDEKS GODINA IME PREZIME
5/2010 2010 Milan Jovanović
49/2010 2010 Saša Arsenić
156/2009 2009 Ana Stojanović
170/2010 2010 Jasna Gajić
STUDENT ISPIT PROFESOR OCENA POENI
5/2010 INF 55 9 87
49/2010 INF 55 6 55
156/2009 PRA 19 7 66
5/2010 STA 24 10 100
170/2010 INF 4 6 55
170/2010 PRA 19 7 65
5/2010 PRA 19 6 59

Ključevi

Već je rečeno da jedan red podataka u tabeli predstavlja jedan element skupa. Kao što je poznato, svaki element skupa je jedinstven (ne mogu postojati dva ista), što znači da je u tabeli zabranjeno da se pojave dva potpuno ista reda podataka. Međutim, neki podaci se zbog svoje prirode moraju ponavljati (npr. sasvim je moguće imati dva studenta sa istim imenom). Zbog toga svaka tabela mora imati bar jednu kolonu (ili kombinaciju kolona) u kojoj će svi podaci garantovano uvek biti različiti – tzv. primarni ključ. Primarni ključ predstavlja podatak koji jedinstveno identifikuje svaki red tabele.

Ukoliko među podacima ne postoji podatak koji bi bio prihvatljiv kao primarni ključ (matični brojevi građana, broj indeksa...), moramo kreirati neki nov podatak – veštački primarni ključ (npr. ako uvedemo neku novu šifru kao podatak).

U gornjem primeru, za studente je broj indeksa sasvim prihvatljiv kao primarni ključ. Sa druge strane, u tabeli položenih ispita primećujemo da ne postoji kolona u kojoj će podaci biti uvek različiti. Međutim, ako pažljivije osmotrimo, vidimo da je svaki student mogao samo jednom da položi jedan predmet, pa tako kombinacija kolona student+ispit predstavlja primarni ključ.

Da bi se uspostavila veza između dve tabele potrebno je da postoje kolone u kojima se nalaze odgovarajući podaci. Polje koje služi za povezivanje sa drugom tabelom naziva se strani ključ. U primeru, polje student iz tabele o ispitima služi za povezivanje sa tabelom o studentima i samim tim predstavlja strani ključ.

Veze među tabelama

Razdvojene tabele se mogu povezivati kako bi se dobili kompleksni rezultati prilikom upita. Postoje tri tipa veze koje se mogu uspostaviti među tabelama.

Indeksi

Jedan od osnovnih zadataka baze podataka je njihovo pretraživanje. Međutim, što ima više podataka, proces pretraživanja i sortiranja postaje sve sporiji. Ovaj problem se rešava uvođenjem indeksa. Indeksi su „interne“ tabele kojima manipuliše sama baza podataka. U njima se nalaze podaci koji su već sortirani, tako da je pretraživanje veoma ubrzano. Sa druge strane, unos, brisanje i promena podataka postaje sporija, pošto za svaku promenu treba osvežavati i sam indeks.

  1. Ambler, S.W. (2011), AgileData, On Relational Theory: Questioning the Dogma
  2. Ambler, S.W. (2010), AgileData, Introduction to Data Normalization: A Database "Best" Practice
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies) radi vođenja interne statistike u cilju unapređenja korisničkog iskustva. Tako prikupljeni podaci su anonimni i nedostupni trećim licima. Vaša privatnost nije ugrožena ni na koji način.