1. Baze podataka Ciljevi lekcije 1. Upoznati se sa značenjem termina "baza podataka". 2. Upoznati se sa pojmom "sistem za upravljanje bazama podataka" (DBMS), njegovim tipičnim funkcijama. 3. Upoznati namenu "modela podataka". 4. Upoznati se sa osnovim konceptima relacionog modela podataka Moderne kompanije i institucije poseduju različite elektronske (računarske, informacione) sisteme koje koriste kao podršku u procesu obrade informacija, koje nastaju kako unutar samog sistema tako i onih koji dolaze spolja. Takvi informacioni sistemi obezbeđuju kako osoblju tako i spoljnim korisnicima (kupci, dobavljači, agencije i sl) da pristupe informacijama kompanije sa različitim nivoima prioriteta i prava pristupa. Takvi sistemi mogu da budu sistemi za upravljanje dokumenata, sistemi za upravljanje projektima, e-mailing sistemi, intranet, internet stranice i sl. Takvi sistemi imaju jedan neizostavan deo sistem baza podataka, koja čuva sve informacije koje se obrađuju i obezbeđuje pristup tim informacijama. Baze podataka su ključna komponenta kod standardnih informacionih sistema, ali i e-komerc i drugih Web zasnovanih aplikacija. Koriste ih oragnizacije i preduzeća od onih najmanjih do globalnih korporacija i milioni korisnika. Neophodno predznanje - WikiPedia 1. Rad u Windows okruženju 2. Osnovno znanje o korišćenju Excel i drugih Office alata 3. Poznavanje pojmova „podatak", „tabela", „informacioni sistem" i sl.
1.1. Šta je sistem baza podataka? Sistem baza podataka Sistem baza podataka sadrži 4 osnovne komponente (slika 1): (1) korisnici, (2) aplikacija nad bazom podataka, (3) sistem za upravljanje bazama podataka (Database Management System - DBMS), i (4) baza podataka.
Slika 1. Komponente sistema baza podataka
1.2. Šta je baza podataka? Baza podataka predstavlja kolekciju međusobno povezanih podataka koji su organizovani u tabele i druge strukture podataka, a koriste za jednu ili više aplikacija. Osnovna namena baze podataka je da bude repozitorijum (skladište) za podatke. Podaci mogu biti različitog tipa, tekstualni, numerički, slike, audio i video zapisi i sl. Iz „definicije" baze podataka vidi se da je ona kolekcija međusobno povezanih podataka organizovanih u tabele. U ovoj „definiciji" dve su činjenice od značaja organizacija podataka u tabele i njihova međusobna povezanost. Podaci u bazama podataka su organizovani u dvodimenzionalne tabele. Tabela može da ima više kolona, gde svaka kolona predstavlja neku osobinu ili atribut. Vrste tabele čine konkretni podaci, odnosno konkrente vrednosti osobina/atributa nekog objekta. Na primer, jedna tabela može da sadrži informacije o učenicima. Kolone tabele mogu da definišu ime, prezime, godinu rođenja učenika, i sl. Vrste u takvoj tabeli su učenici, tako da se svaka vrsta odnosi na jednog učenika. Koje će tabele da sadrži baza podataka zavisi od problema za koji treba realizovati bazu podataka. Na primer, baza podataka se može odnosti na školu, pa će u tom slučaju tabele biti o učenicima, nastavnicima, odeljenjima, i sl. Postupak izbora i definisanja tabela za bazu podataka je deo procesa modeliranja odnosno izgradnje modela podataka. Međusobna povezanost podataka je ono po čemu se baza podataka razlikuje u odnosu na fajl sisteme (datoteke) i programe za unakrsna izračunavanja ko što je Excel. Povezanost podataka obezbeđuje značajne prednosti kod pretraživanja kada korisnik može da na osnovu veza izvuče mnogo više podataka. Na primer, ako postoji tabela koja čuva podatke o učenicima i tabela sa podacima o odeljenjima, veza između učenika i odeljenja može da obezbedi da odgovarajućim zahtevom (SQL upitom) izvučete sve učenike željenog odeljenja. Baza podataka sadrži i tzv. metapodatke, odnosno podatke o samoj strukturi baze podataka. Metapodaci mogu da se odnose na imena tabela, imena kolona u svakoj tabeli, na podatke o korisnicima podataka, kao i raznim pomoćnim strukturama koje obezbeđuju brz prstup podacima (indeksi).
1.3. Šta je Sistem za upravljanje bazama podataka (DBMS)? Softverski sistem koji omogućava korisnicima definisanje, ažuriranje i kontrolu pristupa bazi podataka naziva se sistem za upravljanje bazama podataka (eng. Database Management System - DBMS). DBMS obično nudi:
Jezik za opis podataka (eng. Data Definition Language - DDL), koji omogućava korisnicima definisanje tipa i strukture podataka, kao i ograničenja nad podacima memorisanim u bazi podataka (naredne lekcije - CREATE TABLE naredba). Jezik za manipulaciju podacima (eng. Data Manipulation Language - DML), koji omogućava korisnicima umetanje, ažuriranje, brisanje i pretraživanje podataka iz baze podataka (naredne lekcije - SELECT, INSERT INTO, UPDATE naredbe). Jezik za definisanje načina memorisanja podataka (eng. Storage Definition Language - SDL), koji se koristi za specificiranje interne šeme baze podataka. Kontrolisani pristup bazi podataka, što uključuje različite funkcije i mehanizme za pristup podacima u bazi podataka
1.3.1. Funkcije DBMSa DBMS treba da obezbedi sledeće funkcije za kontrolisani pristup podacima u bazi podataka:
Sigurnosni sistem, koji onemogućava pristup bazi podataka neautorizovanim korisnicima (sigurnosni servisi), odnosno samo autorizovani korisnici mogu da koriste podatke u skladu sa definisanim privilegijama (autorizacioni servisi) Integritetni sistem, koji održava konzistentnost podataka u bazi podataka, odnosno da se sve promene dešavaju u skladu sa definisanim pravilima. Sistem za kontrolu konkurencije, koji dopušta deljivi pristup podacima iz baze podataka, tj da se obezbedi korektno ažuriranje podataka kada više korisnika pokušava istovremeno da vrši ažuriranja. Sistem za kontrolu oporavka baze podataka, koji omogućava rekonstrukciju prethodnog konzistentnog stanja u slučaju neke hardverske ili softverske neispravnosti. Katalog kome korisnici mogu pristupati, koji sadrži opis podataka koji su memorisani u bazi podataka. Podrška za transakcije, koja obezbeđuje korektno izvršavanje niza transakcija koje mogu biti međusobno zavisne; transakcija je skup operacija upisa i čitanja iz baze podataka koji se tretira kao celina tj ima svoj početak i kraj. Razne korisničke funkcije, kao što su import, eksport podataka, statističke analize, funkcije za nadgledanje,...
1.3.2. Tipovi sistema baza podataka Tehnologija baza podataka se može koristiti za veliki broj aplikacija. Praktično danas skoro i da ne možete da realizujete aplikaciju koja ne koristi neki sistem baza podataka za čuvanje podataka - bez obzira da li se radi o standardnim desktop aplikacijama, kao što su knjigovodstvene aplikacije, sistemi za upravljanje dokumentima, sistemi za banke, i sl, ili se radi o modernim Web aplikacijama koje obezbeđuju složenu funkcionalnost u distribuiranom okruženju, od on-line kupovine do raznih socijalnih mreža i sl. Jedan granični slučaj je da vam treba aplikacija za evidenciju kućnih troškova. U tom slučaju ona obično sadrži samo nekoliko tabela, gde svaka tabela može da ima samo nekoliko stotina vrsti. Aplikaciju, a samim tim i bazu podataka, koristite samo vi, odnosno samo jedan korisnik. Za takve sisteme se obično koristi naziv personalni sistemi baza podataka. Naravno, ovakvi sistemi mogu da se primene i na mnogo složenije aplikacije od evidencije kućnog budžeta. Na primer, mogu da pokriju i poslovane manjeg preduzeća, ili da podrže rad nekog Web sajta. S druge strane, ako imate veliku kompaniju koja ima više organizacionih jedinica, gde svaka od njih ima sopstvene poslovne procese, neophodna vam je podrška sistema baza podataka koji može da obezbedi čuvanje i pretragu velike količine informacija na više distribuiranih lokacija. Takvi sistemi sadrže veliki broj tabela, a neke od njih mogu da imaju i nekoliko stotina hiljada vrsta i više. Podacima može konkurentno da pristupa veliki broj korisnika. Takvi sistemi obično moraju da rade 24 časa dnevno, 7 dana u nedelju. Takvi sistemi su poznati kao enterprise sistemi baza podataka. Komponente personalnog sistema baza podataka su prikazane na slici 2.
Slika 2. Personalni sistem baza podataka Na slici 3. prikazan je enterpise sistem baza podataka. Zanimljivo je da su na slici prikazane aplikacije razvijane u različitim jezicima: Java, C#, HTML i ASP.NET. Takve aplikacije koriste velike DBMS sisteme za upravljanje bazom podataka. Nem čarobnjaka ili sličnih alata da pomognu u razvoju takvih sistema. Programeri moraju da napišu kod koji će da obezbedi pristup i pretraživanje podataka korišćenjem funkcija DBMSa
Slika 3. Enterprise sistem baza podataka
1.4. Modeli podataka
U procesu razvoja baze podataka najpre se formira model realnog sistema, tako što se izaberu značajne karakteristike sistema koje se predstavljaju modelom. Postoji mnogo različitih mogućnosti da se modelira sistem. U fazi modeliranja zadatak projektanta baze podataka je da otkrije funkcije koje sistem mora izvršavati, podatke koje mora pamtiti i obrađivati, informacije koje mora obezbeđivati za potrebe korisnika, sekvence u kojima se funkcije moraju izvršavati i u kojima se može pristupati podacima. Deo modela sistema koji se odnosi na podatke naziva se model podataka. Važno Izabrani entiteti će kasnije u bazi podataka biti predstavljeni tabelama. Zbog toga pogledajte pažljivo naveden objekte pošto mogu da vam budu dobar vodič kod izbora entiteta!
Svaki objekat, odnosno entitet, poseduje neka svojstva. Na primer, entitet "vozilo" ima vlasnika, registarski broj, datum registracije, godinu proizvodnje, proizvođača, marku, boju, tip motora, i dodatnu opremu. Svojstva ili atributi objekta će biti predstavljena kolonama u odgovarakućoj tabeli. Objekti međusobno mogu biti povezani različitim odnosima odnosno relacijama. Svaka takva relacija može da poseduje posebna svojstva. Relacije se mogu iskoristiti kod pretraživanja međusobno povezanih podataka, na primer, kod pretraživanja podataka o registrovanim vozilima i njihovim vlasnicima. Više detalja o načinu povezivanja podataka iz tabela pogledajte u sekciji koja se odnosi na ključeve relacija, konkretno na strane ključeve i očuvanje integriteta.
Važno Izborom objekata, definisanjem njihovih svojstava i prepoznavanjem veza između objekata, izvršili smo modeliranje dela realnog sveta koji predstavlja naš problem!
1.5. Relacioni model podataka Zanimljivosti Relacioni model je svakako najpopularniji i najrasprostranjeniji model podataka danas i predstavlja osnovu za relacione baze podataka koje dominiraju na tržištu. Relacione baze podataka dominiraju na tržištu već skoro 40 godina! Relacioni model je predložio E.F. Codd 1970 godine, dok je radio u IBMu. System R je prvi sistem koji je koristio relacioni model, nakon toga IBM je implementirao svoj sistem poznat kao DB2. Nakon toga je Oracle realizovao svoj sistem zasnovan na ovom modelu,... i sve ostalo je istorija. Relacija, kao osnovni koncept relacionog modela je zapravo matematička relacija, i ima jednostavnu reprezentaciju u obliku tabele sa podacima.
Osnove relacionog modela Relacioni model ima snažnu teorijsku osnovu, koja se zasniva na matematičkoj teoriji relacija i na logici prvog reda, i za korisnika vrlo prihvatljivu reprezentaciju u vidu dvodimenzionalne tabele. U relacionom modelu podataka relacije se koriste za čuvanje informacije o objektima koje treba predstaviti u bazi podataka. U fazi projektovanja baze podataka, za konkretan problem, treba najpre prepoznati objekte realnog sveta (entiteti) za koje treba čuvati podatke i prepoznati njihove atribute. Svaki takav objekat predstavlja se relacijom u relacionom modelu. Atributi su zajedničke osobine koje poseduju svi entiteti jednog skupa entiteta. Iz skupa atributa entiteta za potrebe konkretnog informacionog sistema bira se samo određeni podskup. Pošto se entiteti odnosno objekti realnog sveta predstavljaju relacijom, atributi predstavljaju svojstva te relacije. Pošto je relacija predstavljena tabelom, atributi predstavljaju kolone te tabele. Svaka relacija predstavlja skup torki, gde se svaka torka odnosi na konkretan entitet iz skupa entiteta. U tabelarnom prikazu relacije, vrste tabele su podaci o konkretnim entitetima, odnosno torke, tako da atribut za svaki konkretni entitet iz skupa entiteta poseduje određenu vrednost. Skup vrednosti koje neki atribut može uzimati zovemo domen atributa. Praktično, svaki atribut u relaciji je definisan nad nekim domenom. Koncept domena je vrlo važan. Omogućava korisniku da definiše na jednom centralnom mestu značenje i izvor vrednosti koje atribut može uzimati. Svaki domen atributa se definiše: tipom podataka, dužinom podataka i opsegom vrednosti.
1.5.1. NULL Vrednosti atributa Atributi uzimaju vrednosti iz odgovarajućeg domena koji im je dodeljen, što u praksi znači da će vrednosti u tabeli za neku kolonu da budu onog tipa podataka koji smo izabrali za tu kolonu. Međutim, DBMS dozvoljava da atribut nema dodeljenu vrednost, što podrazumeva korišćenje tzv. NULL vrednosti. Ova specijalna vrednost se mora uvesti zato što u odgovarajuću ćeliju tabele treba da stoji neka vrednost da bi pretrage i analize radile. NULL vrednost može da ima dva značenja:
Vrednost atributa za posmatrani entitet ne postoji ili još uvek nije poznata. Na primer, za radnika koji je tek treba ili je tek počeo da radi vrednost atributa prethodni radni staž nije poznata. Vrednost atributa za posmatrani nije primenjiva. Na primer, ako za relaciju RADNIK imamo atribut FAKULTET u kome se čuva naziv fakulteta koji je radnik završio, svi radnici sa srednjom školskom spremom će imati NULL vrednost za taj atribut.
1.5.2. Pregled osnovnih koncepata relacionog modela podataka Važno Relacija se u bazi podataka predstavlja dvodimenzionalnom tabelom, gde vrste odgovaraju pojedinim slogovima, a kolone atributima. Atributi se mogu pojavljivati u bilo kom redosledu u tabeli. Redosled vrsta tabele takođe nije bitan. Svaka tabela, kao i svaka kolona u tabeli imaju ime.
Osnovni koncepti relacionog modela podataka su:
Relacija
Relacija odgovara pojmu tabela sa vrstama i kolonama.
Atribut relacije
Predstavlja osobinu entiteta predstavljenog relacijom. Atribut je praktično imenovana kolona relacije odnosno tabele, koje se odnose na svojstva objekta predstavljenog relacijom.
Domen atributa
Domen je skup dozvoljenih vrednosti za jedan ili više atributa. Praktično se odnosi na tip podatka za kolonu.
Torka relacije
Torka je vrsta relacije i odnosi se na jedan slog podataka.
Stepen relacije
Broj atributa relacije (unarna, ako ima jednu kolonu, binarna sa dve kolone i sl)
Kardinalnost relacije
Broj vrsta (torki) relacije.
Šema relacije
Šema relacije je opis relacije. Sadrži ime relacije, imena atributa i domene atributa.
Relaciona baza podataka
Kolekcija normalizovanih relacija.
Šema relacione baze podataka
Skup šema relacija, pri čemu svaka ima različito ime. Očigledno je da je relacija u relacionom modelu, odgovara pojmu tabela u bazi podataka. U svetu baza podataka, obično se koriste jedni termini kada se govori o relacionom modelu, a drugi kada se govori o bazi podataka, odnosno implementaciji relacionog modela. Uporedni prikaz termina i njihovog značenja dat je na slici 4.
Relacioni model Relacija Torka Atribut Domen atributa Šema relacije
Baza podataka Tabela Vrsta Kolona Tip podatka kolone Opis tabele
Slika 4. Ekvivalentni skup pojmova
1.5.3. Svojstva relacije Relacija ima sledeća svojstva:
Svaka relacija ima ime koje se razlikuje od imena svih ostalih relacija u šemi relacione baze podataka, Svaka ćelija tabele (određena vrstom i kolonom) kojom je relacija predstavljena sadrži samo jednu atomičnu (prostu) vrednost, Svi atributi jedne relacije imaju različito ime, Sve vrednosti jednog atributa su iz istog domena, Sve torke relacije su različite, tj. u relaciji ne postoje duple torke, Redosled atributa u relaciji nema značaja, i Redosled torki u relaciji teoretski nema značaja, ali praktično redosled torki u relaciji može uticati na efikasnost pristupa torkama!
Primer Recimo da RADNIK predstavlja skup radnika nekog preduzeća (entiteta, tj objekata iz realnog sveta). RADNIK je relacija u relacionom modelu koju predstavljamo tabelom u koju ćemo da čuvamo sve radnike. Za radnike treba čuvati informacije o imenu, prezimenu, matičnom broju, adresi stanovanja i plati – sve ovo su svojstva/osobine koje su nam važne i koje smo izabrali da ih predstavimo atributima relacije, odnosno to su nam kolone u tabeli. Svaka vrsta te tabele se odnosi na konkretnog radnika. U rešenju narednog zadatka, dat je izgled tabele koja odgovara relaciji RADNIK.
Relaciona šema baze podataka PREDUZEĆE Baza podataka PREDUZECE Na osnovu navedenih zahteva projektovati relacionu šemu baze podataka PREDUZEĆE. Zahtevi: 1. Preduzeće ima više sektora. Svaki sektor ima ime, broj i rukovodioca. Sektor ima bar četiri radnika. Vodi se evidencija o datumu kada je rukovodilac postavljen na tu funkciju. Sektor može imati više lokacija. 2. U sektoru se radi na više projekata. Svaki projekat ima ime, broj i jedinstvenu lokaciju. 3. Za svakog radnika se pamti ime, matični broj, adresa, plata, pol i datum rođenja. Svaki radnik radi u jednom sektoru, a može biti angažovan na više projekata, koje ne vodi isti sektor. Pri tome se vodi evidencija o broju radnih časova koje radnik provede na nekom od projekata. Takođe se vodi evidencija o hijerarhiji odgovornosti, odnosno evidentira se za svakog radnika ko mu je neoposredni rukovodilac. 4. Vodi se i evidencija o članovima porodice. Za svakog člana evindetira se ime, pol, datum rođenja i srodstvo.
Rešenje zadatka: baza podataka PREDUZECE Najpre ćemo na osnovu zahteva da prepoznamo potencijalne relacije koje ćemo predstaviti tabelama. To su RADNIK, SEKTOR i PROJEKAT, sa atributima kako je to prikazano: RADNIK LIME SSLOVO PREZIME MATBR DATRODJ POL PLATA ADRESA SEKTOR NAZIV SBROJ
PROJEKAT NAZIV LOKPR
BROJPR
Član porodice je takođe potencijalna relacija, ali je očigledno da se svako dete u ovom slučaju nema atribut koji može da bude ključ. S druge strane, dete se može identifikovati preko svog imena ako je poznato ko mu je roditelj (odnosno preko ključa roditelja). Zbog toga se ovoj relaciji dodaje kao strani ključ matični broj roditelja. Ovo je situacija kada se član porodice pojavljuje kao slabi tip entiteta, kod koga se ključ formira kao kombinacija delimičnog ključa (u ovom slučaju ime deteta) i stranog ključa (mat.br. roditelja). Vodite računa da je ovo dugačija situacija od dodavanja ključa surogata kako je to navedeno kod objašnjavanja ključeva. CLAN_PORODICE MATBRRAD IME
POL
SRODSTVO
DATROĐ
Na osnovu zahteva se mogu prepoznati i veze: RUKOVODI, između radnika i sektora. Ovo je veza 1:1, pošto jedan radnik može da rukovodi samo jednim sektorom, a jedan sektor ima jednog rukovodioca. Izbor na koju stranu staviti strani ključ se može doneti na osnovu dodatne analize veze: u ovoj vezi potpuno učestvuje svaka torka iz relacije SEKTOR, odnosno svaki sektor mora da ima rukovodioca (s druge strane, relacija RADNIK ne učestvuje potpuno, jer nisu svi radnici rukovodioci sektora). Zbog toga se relaciji SEKTOR dodaje atribut DAT_POST (datum postavljanja rukovodioca) i spoljni ključ MATBRR (matični broj rukovodioca) koji predstavlja primarni ključ relacije RADNIK. SEKTOR NAZIV
SBROJ
MATBRR
DATPOST
Veze RADI_U i NADZOR, koje su tipa 1:N, u kojima se na N strani javlja RADNIK, kao i veza JE_NOSILAC u kojoj je na N strani PROJEKAT. Relacijama na N strani se dodaju kao spoljni ključevi primarni ključevi relacije na 1 strani. RADNIK LIME
SSLOVO PREZIME MATBR DATRODJ POL PLATA ADRESA MATBROJS BRSEK
PROJEKAT NAZIV LOKPR
BROJPR
BRS
Na osnovu zahteva može se prepoznati i jedna veza M:N: RADI-NA između relacija RADNIK i PROJEKAT, tako da se za nju formira posebna relacija RADI-NA u koju se kao spoljni ključevi uključuju primarni ključevi relacija RADNIK i PROJEKAT. Ova dva spoljna ključa formiraju primarni ključ relacije RADI-NA. RADI_NA MBR BRPR
SATI
Dodatna komplikacija u ovim zahtevima je i viševrednosni atribut LOKACIJA koji se odnosi na relaciju SEKTOR. Za njega se formira nova relacija LOK-SEKTOR koja kao spoljni ključ ima primarni ključ relacije SEKTOR. LOK_SEKTOR BRS
LOKACIJA
Na taj način, na osnovu navedenih zahteva kreiran je kompletni relacioni model baze podataka PREDUZEĆE koji konačno izgelda ovako:
RADNIK LIME SSLOVO PREZIME MATBR DATRODJ POL PLATA ADRESA MATBROJS BRSEK PROJEKAT NAZIV LOKPR BROJPR BRS SEKTOR NAZIV SBROJ MATBRR DATPOST CLAN_PORODICE MATBRRAD IME POL SRODSTVO DATROĐ LOK_SEKTOR RADI_NA BRS
LOKACIJA
MBR BRPR SATI