P. 1
baze-podataka

baze-podataka

|Views: 705|Likes:
Published by Konstantin Petrovic

More info:

Published by: Konstantin Petrovic on Apr 19, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/15/2013

pdf

text

original

Sections

  • 1.1. Ciljevi lekcije
  • 1.2. Neophodno predznanje
  • 1.3. Sistem baza podataka
  • 1.4. Šta je baza podataka?
  • 1.5.1. Funkcije DBMSa
  • 1.5.2. Tipovi sistema baza podataka
  • 1.6. Modeli podataka
  • 1.7.1. NULL Vrednosti atributa
  • 1.7.2. Pregled osnovnih koncepata relacionog modela podataka
  • 1.7.3. Svojstva relacije
  • 1.8. Ključevi relacije
  • 1.9.1. Referencijalni integritet i spoljni ključevi
  • 1.10.1. Relaciona šema baze podataka PREDUZEĆE
  • 2.1. Ciljevi lekcije
  • 2.2. Neophodno predznanje
  • 2.3. Baza podataka PREDUZEĆE
  • 2.4.1. Tipovi podataka
  • 2.4.2. SQL DDL naredbe za kreiranje tabela RADNIK i SEKTOR
  • 2.4.3. Ograničenje kolone
  • 2.4.4. SQL DDL naredba za kreiranje tabele PROJEKAT
  • 2.4.5. Ograničenja tabele
  • 2.4.6. Ograničenje stranog ključa
  • 2.4.7. DDL naredbe za kreiranje baze podataka PREDUZEĆE
  • 2.5. MS Access specifičnosti
  • 2.7. Praktičan rad : MS Access
  • 3.1. Ciljevi lekcije
  • 3.2. Neophodno predznanje
  • 3.3.1. Klauzula WHERE
  • 3.3.2. Aritmetičke funkcije
  • 3.3.3. Funkcije agregacije
  • 3.4. Praktični rad: MS Access
  • 4.1. Ciljevi lekcije
  • 4.2. Neophodno predznanje
  • 4.3. Klauzule GROUP BY i HAVING
  • 4.4.1. Dekartov proizvod (cross-join)
  • 4.4.2. Unutrašnji spoj (inner-join)
  • 4.4.3. Levi spoljašnji spoj (left-outer join)
  • 4.4.4. Desni spoljašnji spoj (right-outer join)
  • 4.4.5. Potpuni spoljašnji spoj (full-outer join)
  • 4.5. Kombinovanje rezultata više SQL upita
  • 5.1. Ciljevi lekcije
  • 5.2. Neophodno predznanje
  • 5.3.1. Dodavanje novih podataka korišćenjem upita
  • 5.4. Ažuriranje podataka
  • 5.5. Brisanje podataka
  • 5.6.1. Brisanje tabele
  • 5.6.2. Modifikacija tabele
  • 6.1. Ciljevi lekcije
  • 6.2. Neophodno predznanje
  • 6.3. Uvod
  • 6.4.1. Kreiranje formi korišćenjem Form Wizard-a
  • 6.4.2. Modifikovanje strukture forme
  • 6.5.1. Sličnosti i razlike formi i izveštaja
  • 6.5.2. Osnovni tipovi izveštaja u Access-u
  • 6.5.3. Kreiranje izveštaja korišćenjem Report Wizard-a
  • 6.5.4. Početno grupisanje i sortiranje podataka
  • 6.6.1. Pokretanje i izvršenje makroa
  • 6.6.3. Dodavanje akcija makroa
  • 6.6.4. Filtriranje podataka korišćenjem makroa
  • 6.7. Kreiranje aplikacije u Access-u
  • 7.1. Ciljevi lekcije
  • 7.2. Neophodno predznanje
  • 7.3. Uvod
  • 7.4. ADO.NET data provider-i
  • 7.5.1. Kreiranje konekcije ka bazi podataka
  • 7.5.2. Kreiranje SQL komande
  • 7.5.3. Korišćenje DataReader objekta
  • 7.6. Korišćenje sloja sa raskinutom vezom ADO.NET-a za pristup podacima
  • 8.1. Ciljevi lekcije
  • 8.2. Neophodno predznanje
  • 8.3. Uvod
  • 8.4. Povezivanje podataka sa Windows Forms kontrolama
  • 8.5. Jednostavno povezivanje Windows Forms kontrola sa podacima
  • 8.6. Složeno povezivanje Windows Forms kontrola sa podacima
  • 8.7. Povezivanje podataka sa ASP.NET kontrolama
  • 8.8. Jednostavno povezivanje podataka sa ASP.NET kontrolama
  • 8.9. Složeno povezivanje podataka sa ASP.NET kontrolama

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

Lekcija 1
Sadržaj

• o o o

Baze podataka Šta je sistem baza podataka? Šta je baza podataka? Šta je Sistem za upravljanje bazama podataka (DBMS)? Funkcije DBMSa Tipovi sistema baza podataka

o o

Modeli podataka Relacioni model podataka NULL Vrednosti atributa Pregled osnovnih koncepata relacionog modela podataka Svojstva relacije Zadatak 1 Zadatak 2

o o o o o o

Ključevi relacije Zadatak 3 Relacioni integritet Referencijalni integritet i spoljni ključevi Predstavljanje šema relacione baze podataka Pitanja Relaciona šema baze podataka PREDUZEĆE Zadaci

1. Baze podataka
1.1. 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, emailing 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.

-1-

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

1.2. Neophodno predznanje
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.3. 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.4. Š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. Podaci u bazi podataka se čuvaju tako da je unos novih podataka, kao i čitanje i pretraživanje postojećih, je jednostavno, efikasno i ako je moguće, bez grešaka. 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 -2-

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

podataka je deo procesa modeliranja odnosno izgradnje modela podataka. Model podataka je detaljno objašnjen u sekciji nakon sekcije o DBMS-u. 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.5. Š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.5.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.

-3-

mogu da pokriju i poslovane manjeg preduzeća.Baze podataka . gde svaka tabela može da ima samo nekoliko stotina vrsti. 1. Izbor DBMSa Danas na tržištu postoji veliki broj proizvođača DBMSa koji nude sistema različitih performansi i koji su namenjeni različitim segmentima tržišta. Razne korisničke funkcije. ako imate veliku kompaniju koja ima više organizacionih jedinica. Praktično danas skoro i da ne možete da realizujete aplikaciju koja ne koristi neki sistem baza podataka za čuvanje podataka . sistemi za banke. gde svaka od njih ima sopstvene poslovne procese. Koji DBMS ćete izabrati zavisi od tipa i veličine problema koji treba da rešite realizacijom aplikacije. eksport podataka. 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. Za takve sisteme se obično koristi naziv personalni sistemi baza podataka. odnosno samo jedan korisnik..5. Takvi sistemi su poznati kao enterprise sistemi baza podataka. Na primer. od on-line kupovine do raznih socijalnih mreža i sl. ovakvi sistemi mogu da se primene i na mnogo složenije aplikacije od evidencije kućnog budžeta. U narednoj sekciji dat je kratak prikaz tipova sistema baza podataka. kao što su import. U tom slučaju ona obično sadrži samo nekoliko tabela. Podacima može konkurentno da pristupa veliki broj korisnika.. statističke analize. Jedan granični slučaj je da vam treba aplikacija za evidenciju kućnih troškova. i sl. U zavisnosti od aplikacije. 7 dana u nedelju. Naravno.2. funkcije za nadgledanje. zahtevi prema bazi podataka mogu značajno da se razlikuju.bez obzira da li se radi o standardnim desktop aplikacijama. koristite samo vi. Aplikaciju. ili da podrže rad nekog Web sajta. ili se radi o modernim Web aplikacijama koje obezbeđuju složenu funkcionalnost u distribuiranom okruženju. Takvi sistemi obično moraju da rade 24 časa dnevno. -4- .Relacioni model • Elektronski fakultet u Nišu • Podrška za transakcije. a neke od njih mogu da imaju i nekoliko stotina hiljada vrsta i više. sistemi za upravljanje dokumentima. a samim tim i bazu podataka. kao što su knjigovodstvene aplikacije. Komponente personalnog sistema baza podataka su prikazane na slici 2. koja obezbeđuje korektno izvršavanje niza transakcija koje mogu biti međusobno zavisne. S druge strane.. Tipovi sistema baza podataka Tehnologija baza podataka se može koristiti za veliki broj aplikacija. Takvi sistemi sadrže veliki broj tabela. transakcija je skup operacija upisa i čitanja iz baze podataka koji se tretira kao celina tj ima svoj početak i kraj.

marku. prikazan je enterpise sistem baza podataka.NET. odnosno entitet. Enterprise sistem baza podataka 1. tako što se izaberu značajne karakteristike sistema koje se predstavljaju modelom. Zanimljivo je da su na slici prikazane aplikacije razvijane u različitim jezicima: Java. sekvence u kojima se funkcije moraju izvršavati i u kojima se može pristupati podacima.Baze podataka . Takve aplikacije koriste velike DBMS sisteme za upravljanje bazom podataka. -5- . Zbog toga pogledajte pažljivo navedene objekte pošto mogu da vam budu dobar vodič kod izbora entiteta! Svaki objekat. datum registracije. Postoji mnogo različitih mogućnosti da se modelira sistem. informacije koje mora obezbeđivati za potrebe korisnika. Modeli podataka U procesu razvoja baze podataka najpre se formira model realnog sistema. Važno: Izabrani entiteti će kasnije u bazi podataka biti predstavljeni tabelama. Deo modela sistema koji se odnosi na podatke naziva se model podataka. HTML i ASP. podatke koje mora pamtiti i obrađivati.6. registarski broj. proizvođača. entitet "vozilo" ima vlasnika. Programeri moraju da napišu kod koji će da obezbedi pristup i pretraživanje podataka korišćenjem funkcija DBMSa Slika 3. godinu proizvodnje. U fazi modeliranja zadatak projektanta baze podataka je da otkrije funkcije koje sistem mora izvršavati. Na primer. poseduje neka svojstva. Personalni sistem baza podataka Elektronski fakultet u Nišu Na slici 3. Nema čarobnjaka ili sličnih alata da pomognu u razvoju takvih sistema. C#.Relacioni model Slika 2.

zalaženja u detalje smeštanja podataka i metodama pristupa iz korisničkog interfejsa. System R je prvi sistem koji je koristio relacioni model. atributi predstavljaju -6- . Relacioni model obezbeđuje sredstva za opis podataka sa njihovom prirodnom strukturom. Relacije se mogu iskoristiti kod pretraživanja međusobno povezanih podataka.. i mašinske reprezentacije. s druge strane.7. i za korisnika vrlo prihvatljivu reprezentaciju u vidu dvodimenzionalne tabele. Relacija. Iz skupa atributa entiteta za potrebe konkretnog informacionog sistema bira se samo određeni podskup. treba najpre prepoznati objekte realnog sveta (entiteti) za koje treba čuvati podatke i prepoznati njihove atribute. i dodatnu opremu. kod pretraživanja podataka o registrovanim vozilima i njihovim vlasnicima. nakon toga IBM je implementirao svoj sistem poznat kao DB2.Relacioni model Elektronski fakultet u Nišu boju. Svaki takav objekat predstavlja se relacijom u relacionom modelu. 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. Svaka takva relacija može da poseduje posebna svojstva.Baze podataka . dok je radio u IBMu. Više detalja o načinu povezivanja podataka iz tabela pogledajte u sekciji koja se odnosi na ključeve relacija. i ima jednostavnu reprezentaciju u obliku tabele sa podacima. izvršili smo modeliranje dela realnog sveta koji predstavlja naš problem! 1. Relacione baze podataka dominiraju na tržištu već skoro 40 godina! Relacioni model je predložio E. Svojstva ili atributi objekta će biti predstavljena kolonama u odgovarakućoj tabeli. i sve ostalo je istorija. atributi predstavljaju svojstva te relacije. definisanjem njihovih svojstava i prepoznavanjem veza između objekata. s jedne strane. Atributi su zajedničke osobine koje poseduju svi entiteti jednog skupa entiteta.. Codd 1970 godine. Relacioni model oslobađa korisnika frustracija oko rukovanja podacima na niskom nivou.. Pošto je relacija predstavljena tabelom. Osnove relacionog modela Relacioni model ima snažnu teorijsku osnovu. kao osnovni koncept relacionog modela je zapravo matematička relacija.F. konkretno na strane ključeve i očuvanje integriteta. Objekti međusobno mogu biti povezani različitim odnosima odnosno relacijama. na primer. za konkretan problem. bez dodatnih struktura za potrebe mašinske reprezentacije. Važno: Izborom objekata. Ovaj model daje osnovu za jezik visokog nivoa za pristup podacima koji obezbeđuje maksimalnu nezavisnost između programa. Nakon toga je Oracle realizovao svoj sistem zasnovan na ovom modelu. Pošto se entiteti odnosno objekti realnog sveta predstavljaju relacijom. koja se zasniva na matematičkoj teoriji relacija i na logici prvog reda. U relacionom modelu podataka relacije se koriste za čuvanje informacije o objektima koje treba predstaviti u bazi podataka. tip motora. U fazi projektovanja baze podataka.

Vrednost atributa za posmatrani nije primenjiva. Atributi se mogu pojavljivati u bilo kom redosledu u tabeli. Atribut je praktično imenovana kolona relacije odnosno tabele. NULL Vrednosti atributa Atributi uzimaju vrednosti iz odgovarajućeg domena koji im je dodeljen.7.2. NULL vrednost može da ima dva značenja: • • Vrednost atributa za posmatrani entitet ne postoji ili još uvek nije poznata.Baze podataka . 1. Svaki domen atributa se definiše: tipom podataka. Ova specijalna vrednost se mora uvesti zato što u odgovarajuću ćeliju tabele treba da stoji neka vrednost da bi pretrage i analize radile. a kolone atributima. svi radnici sa srednjom školskom spremom će imati NULL vrednost za taj atribut. Osnovni koncepti relacionog modela podataka su: Relacija: Relacija odgovara pojmu tabela sa vrstama i kolonama. Domen atributa: -7- . odnosno torke. gde vrste odgovaraju pojedinim slogovima.1. ako za relaciju RADNIK imamo atribut FAKULTET u kome se čuva naziv fakulteta koji je radnik završio. Praktično. Redosled vrsta tabele takođe nije bitan. Svaka tabela. gde se svaka torka odnosi na konkretan entitet iz skupa entiteta. dužinom podataka i opsegom vrednosti. tako da atribut za svaki konkretni entitet iz skupa entiteta poseduje određenu vrednost. Pregled osnovnih koncepata relacionog modela podataka Važno Relacija se u bazi podataka predstavlja dvodimenzionalnom tabelom.Relacioni model Elektronski fakultet u Nišu kolone te tabele. Skup vrednosti koje neki atribut može uzimati zovemo domen atributa. kao i svaka kolona u tabeli imaju ime. Atribut relacije: Predstavlja osobinu entiteta predstavljenog relacijom. Na primer. Koncept domena je vrlo važan. svaki atribut u relaciji je definisan nad nekim domenom. 1. što u praksi znači da će vrednosti u tabeli za neku kolonu da budu onog tipa podataka koji smo izabrali za tu kolonu. za radnika koji je tek treba ili je tek počeo da radi vrednost atributa prethodni radni staž nije poznata. Svaka relacija predstavlja skup torki. U tabelarnom prikazu relacije. koje se odnose na svojstva objekta predstavljenog relacijom. Međutim.7. DBMS dozvoljava da atribut nema dodeljenu vrednostm što podrazumeva korišćenje tzv NULL vrednosti. vrste tabele su podaci o konkretnim entitetima. Omogućava korisniku da definiše na jednom centralnom mestu značenje i izvor vrednosti koje atribut može uzimati. Na primer.

Stepen relacije: Broj atributa relacije (unarna. odnosno implementaciji relacionog modela. Uporedni prikaz termina i njihovog značenja dat je na slici 4. Torka relacije: Torka je vrsta relacije i odnosi se na jedan slog podataka. Relacioni model Relacija Torka Atribut Domen atributa Šema relacije Baza podataka Tabela Vrsta Kolona Tip podatka kolone Opis tabele Slika 4. ako ima jednu kolonu.Relacioni model Elektronski fakultet u Nišu Domen je skup dozvoljenih vrednosti za jedan ili više atributa.) Kardinalnost relacije: Broj vrsta (torki) relacije. Redosled atributa u relaciji nema značaja.7. Sadrži ime relacije. tj. Relaciona baza podataka: Kolekcija normalizovanih relacija. u relaciji ne postoje duple torke. pri čemu svaka ima različito ime. Svi atributi jedne relacije imaju različito ime. imena atributa i domene atributa.3. i -8- . Svojstva relacije Relacija ima sledeća svojstva: Svaka relacija ima ime koje se razlikuje od imena svih ostalih relacija u šemi relacione baze podataka. Praktično se odnosi na tip podatka za kolonu. obično se koriste jedni termini kada se govori o relacionom modelu. odgovara pojmu tabela u bazi podataka. binarna sa dve kolone i sl. Šema relacije: Šema relacije je opis relacije. U svetu baza podataka. Očigledno je da je relacija u relacionom modelu. Šema relacione baze podataka: Skup šema relacija. Sve vrednosti jednog atributa su iz istog domena. Svaka ćelija tabele (određena vrstom i kolonom) kojom je relacija predstavljena sadrži samo jednu atomičnu (prostu) vrednost. Sve torke relacije su različite. Ekvivalentni skup pojmova 1.Baze podataka . a drugi kada se govori o bazi podataka.

DATRODJ (datum rođenja). Podaci o radnicima preduzeća se mogu predstavljaju relacijom/tabelom RADNIK sa atributima LIME (lično ime). PLATA i ADRESA. Svaka vrsta te tabele se odnosi na konkretnog radnika. stručna sprema. odnosno tabelama u bazi podataka. RADNIK je relacija u relacionom modelu koju predstavljamo tabelom u koju ćemo da čuvamo sve radnike. 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. datum rođenja. pol. POL. SSL (srednje slovo). MBR (matični broj). prezimenu. Niže je prikazana jedna instanca relacije RADNIK (tabela RADNIK) i jedna instanca relacije ODELJENJE (tabela SEKTOR). Rešenje Pretpostavimo da preduzeće ima više radnika. Zadatak 1: Izbor relacija: Ako je neophodno projektovati bazu podataka koja se odnosi na preduzeće. 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. broj). plata. Za radnike treba čuvati informacije o imenu. prepoznati entitete i njihova svojstva. PREZIME. dat je izgled tabele koja odgovara relaciji RADNIK. i za svakog od njih treba čuvati informacije: ime. Neka je preduzeće organizovano u sektore (sektor ima naziv. RADNIK LIME Ivana Milan Ana Pera SSL S I P K PREZIME Gocić Savić Rodić Kostić MBR 123456 234567 666777 555333 DATRODJ 15-10-87 01-03-57 03-12-50 31-12-53 POL Ž M Ž M PLATA 17000 32000 27000 43000 ADRESA Niška 4 Humska 2 Savska 34 Čairska 3 SEKTOR -9- . U rešenju narednog zadatka.Baze podataka . tj objekata iz realnog sveta). matičnom broju. koje ćete predstaviti relacijama u relacionom modelu. matični broj. adresa.Relacioni model Elektronski fakultet u Nišu Redosled torki u relaciji teoretski nema značaja.

Rešenje Domeni nekih atributa relacije RADNIK su prikazani u sledećoj tabeli: Atribut LIME PREZIME MBR DATRODJ POL PLATA Domen Imena Osoba Prezime Osoba Maticni Broj Datum Rodjenja Pol PlataRadnika Značenje Definicija domena Niz karaktera. opsega 111111999999* Datum. gde je minLD minimalni republički lični dohodak Niz karaktera (30) Skup mogućih imena osoba Skup mogućih prezimena osoba Skup mogućnih matičnih brojeva radnika Moguće vrednosti za datume rođenja zaposlenih u preduzeću Pol radnika Moguće vrednosti plata radnika ADRESA AdresaRadnika Moguće adrese radnika preduzeća Dodatni zadatak Identifikovati domene atributa relacije SEKTOR!! .10 - .00. opseg. od 01-JAN-44 nadalje Karakter (1). Prepoznati ostale potencjalne relacije i njihove atribute!! Zadatak 2: Domeni atributa Identifikovati domene atributa relacije RADNIK iz prethodnog primera. opseg od minLD do 40000.Baze podataka . dužine do 15. dužine do 15. napr. Niz karaktera. Celi brojevi.Relacioni model Elektronski fakultet u Nišu Dodatni zadatak Ovo je delimično rešenje zadatka. vrednost M i Ž Broj.

u relaciji mora postojati atribut ili skup atributa (tzv kompozitni ključ – ključ od više atributa). nazvani relacioni ključevi ili ključevi relacije. Ako relacija ne poseduje atribut ili skup atributa koji je identifikuju. . tada se uvodi specijalni identifikacioni atribut .11 - . Spoljni ključ / Strani ključ Atribut ili skup atributa jedne relacije koji se uparuje sa ključem kandidatom neke druge ili iste relacije. koji se obično označava sa ID. Terminologija: Ključ Pošto su sve torke relacije različite. takvu da vrednost tog ili tih svojstava jednoznačno određuju svaku pojavu tog tipa entiteta. Ključevi relacije Da bismo jedan entitet jednoznačno identifikovali u posmatranom skupu entiteta on mora posedovati neko svojstvo. Primarni ključ Ključ kandidat koji je odabran da na jedinstven način identifikuje torke unutar relacije. koji na jedinstven način identifikuje svaku torku relacije. odnosno predstavlja jednog konkretnog radnika. Važan za ostvarivanje međusobnih veza između tabela!!! Zadatak 3: Ključ relacije Identifikovati primarne ključeve relacija RADNIK i SEKTOR iz prethodnog primera. što će niže biti uvedeno. U tom slučaju neophodno je prepoznati svojstva (atribute) koje možemo da koristimo za identifikaciju radnika unutar skupa radnika.ključ surogat. a njihove vrednosti koristimo kao identifikator entiteta unutar skupa. skup entiteta RADNIK predstavljamo relacijom/tabelom gde svaka vrsta odgovara jednom entitetu.Relacioni model Elektronski fakultet u Nišu 1. Takvi atributi se nazivaju ključni atributi. U relacionom modelu podataka atribut ili skup atributa čije vrednosti predstavljaju identifikator entiteta (torke u relaciji) nazivamo ključem relacije. Ključ surogat Identifikator koji je dodat relaciji kao primarni ključ. zato što relacija nema odgovarajući atribut ili skup atributa koji može biti primarni ključ relacije. ili kombinaciju od nekoliko svojstava.Baze podataka .8. Takva svojstva nazivamo karakterističnim. U relacionom modelu podataka postoji više termina koji se koriste za relacione ključeve. Na primer.

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

Rešenje Primarni ključ u relaciji SEKTOR je broj sektora, odnosno atribut SBROJ, zato što na jedinstven način identifikuje svaki sektor u preduzeću (ne mogu da postoje dva sektora sa istim brojem). Ključ kandidat (i potencijalni primarni ključ) u ovoj relaciji može biti i naziv sektora, uz pretpostavku da sektori ne mogu da imaju ista imena. U relaciji RADNIK primarni ključ je očigledno matični broj radnika. Kod radnika se može identifikovati i potencijalni kompozitni ključ kandidat, na primer od kombinacije atributa ime (ime, srednje slovo i prezime zajedno) i datuma rođenja. Naravno, ovakav ključ se može izabrati ako ne postoji neki očigledniji i jednostavniji kao što je u ovom slučaju matični broj. U relaciji RADNIK atributi BRSEK i MATBRS su spoljni ključevi. Prvi je primarni ključ u matičnoj relaciji SEKTOR, a drugi je primarni ključ u relaciji RADNIK. Relacija SEKTOR ima spoljni ključ MATBRR koji je primarni ključ u relaciji RADNIK. U relaciji SEKTOR atribut NAZIV je ključ kandidat, ako važi pravilo da u preduzeću nepostoje dva ili više sektora sa istim imenima.

1.9. Relacioni integritet
U prethodnim odeljcima smo ukratko prikazali strukturnu komponentu relacionog modela podataka. U ovom odeljku ćemo se upoznati sa integritetnom komponentom. Već smo ukazali da se za svaki atribut u relaciji vezuje određeni domen. Ustvari radi se o domenskim ograničenjima (eng. domain constraints), kojima se ograničava skup dozvoljenih vrednosti atributa relacije. Postoje još dva pravila integriteta, poznata kao integritet entiteta (eng. entity integrity) i referencijalni integritet (eng. referential integrity), koja ograničavaju ili zabranjuju pojave određenih torki u relaciji. Ograničenja Integritet entiteta Nijedan atribut primarnog ključa bazne relacije nesme imati NULL vrednost. Referencijalni integritet Ako postoji neki spoljni ključ u relaciji, njegova vrednost mora biti jednaka vrednosti ključa kandidata neke torke u matičnoj relaciji ili njegova vrednost mora biti NULL. Referencijalni integritet je važan kod definisanja međusobnih veza između tabela. Ograničenja poslovanja (Business constraints, business logic)

- 12 -

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

To su ograničenja koja definiše korisnik ili administrator baze podataka, a proističu iz pravila poslovanja realnog sistema za koji se baza projektuje. Jedno od pravila poslovanja u preduzeću je da rukovodilac mora imati veću platu od svog osoblja. Drugo pravilo može biti da radnici koji rade na lokaciji X imaju platu uvećanu za 10% od radnika na istom poslu na ostalim lokacijama sektora.

1.9.1. Referencijalni integritet i spoljni ključevi
Jedna od osnovnih osobina relacionih baza podataka je međusobna povezanost podataka. Za ostvarivanje veza između podataka predstavljenih relacijom koriste se strani (spoljni) ključevi. Kao što je već navedeno, strani ključ predstavlja atribut koji se uparuje sa ključem iz neke relacije. Šta to znači u praktičnoj realizaciji? Pretpostavimo da imamo relacije RADNIK i SEKTOR, kako je to navedeno u prvom primeru, i da za radnike treba čuvati informacije o sektoru u kome rade. U tom slučaju, dovoljno je da se u relaciju RADNIK doda atribut čije vrednosti odgovaraju ključevima u relaciji SEKTOR, tako da za konkretnog radnika ovaj atribut ima vrednost koja odgovara ključu sektora u kome radnik radi. Za relaciju RADNIK koju smo imali u primeru 1, treba dodati atribut BRSEK kao spoljni ključ relacije. S druge strane, za SEKTOR se može zahtevati da se čuvaju informacije o rukovodiocu sektora. Rukovodioci su takođe radnici, pa se svi podaci o njima čuvaju u tabeli RADNIK. Zbog toga je dovoljno u relaciju SEKTOR dodati atribut MATBRS (sa značenjem „matični broj šefa“) koji odgovara ključu relacije RADNIK i čuva vrednost koja odgovara šefu sektora. Uz strani ključ koji predstavlja vezu mogu se čuvati i druge vrednosti preko atributa veze. Na primer, uz podatak o šefu sektora može se čuvati i informacija o datumu postavljanja tako što se doda atribut DATPOST. Na primeru relacija koje smo imali u primeru 1, može se videti sadržaj tabela RADNIK sa dodatim stranim ključevima BRSEK i MATBRS (prvi je primarni ključ u matičnoj relaciji SEKTOR, a drugi je primarni ključ u relaciji RADNIK), i SEKTOR sa stranim ključem MATBRR koji je primarni ključ u relaciji RADNIK. Može se uočiti da je Ivani Gocić šef radnik sa matičnim brojem 66777, a to je Ana Rodić, dok je Anin šef radnik sa matičnim brojem 55333, odnosno Pera Kostić. Radnici Milan i Petar nemaju šefove, odnosno vrednost atributa MBRS je NULL. Na osnovu vrednosti atributa BRSEK, vidi se da tri radnika rade u sektoru čiji je broj 40 (iz tabele SEKTOR to je Projektovanje), a samo jedan u sektoru sa brojem 60 (iz tabele SEKTOR to je Proizvodnja). RADNIK
LIME Ivana Milan Ana Pera SSL S I P K PREZIME Gocić Savić Rodić Kostić MBR 123456 234567 666777 555333 DATRODJ 15-10-87 01-03-57 03-12-50 31-12-53 POL Ž M Ž M PLATA 17000 32000 27000 43000 ADRESA Niška 4 Humska 2 Savska 34 Čairska 3 MBRS 66777 NULL 55333 NULL BRSEK 40 60 40 40

SEKTOR

- 13 -

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

Navedeni primeri pokazuju kako se preko stranih ključeva mogu ostvariti veze između podataka u tabelama. Međutim, ovakav način povezivanja omogućava predstavljanje veza 1:1 i 1:N. Pri tome, 1 i N se odnose na kardinalnost (brojnost). Ako posmatrate vezu između dve relacije, gledate najpre odnos između jednog entiteta iz prve relacije i svih ostalih entiteta iz druge. Nakon toga isti postupak ponovite za drugi smer, odnosno odnos jednog entiteta iz druge relacije sa svim entitetima iz prve. Na primer, pomenuta veza između relacija RADNIK i SEKTOR (odnosi se na radnike koji rade u nekom sektoru): RADNIK : SEKTOR X:Y Najpre posmatramo jednog radnika i određujemo sa koliko sektora je on u vezi. Pošto jedan radnik može da radi samo u jednom sektoru, kardinalnost sa strane sektora je 1: RADNIK : SEKTOR X:1 Nakon toga posmatramo jedan sektor i određujemo sa koliko radnika je u pomenutoj vezi. Jedan sektor može da ima više radnika, pa je kardinalnost sa strane radnika u ovoj vezi N: RADNIK : SEKTOR N:1 Veze tipa 1:1 i 1:N se jednostavno definišu dodavanje stranog ključa. Kod veza 1:N, strani ključ se dodaje na N strani (u primeru, u relaciju RADNIK se doda strani ključ iz relacije SEKTOR). Kod veza 1:1 strani ključ se može dodati bilo kojoj relaciji, ali se obično bira ona kod koje svi entiteti učestvuju u vezi (ako takva postoji, ili proizvoljno na jednu ili drugu stranu ako ne postoji). Na primer, ako posmatramo vezu RADNIK:SEKTOR, ali u smislu rukovodioca sektora, svaki sektor ima jednog rukovodioca, i jedan radnik rukovodi samo jednim sektorom. Veza je očigledno 1:1. U tom slučaju treba izabrati dodavanje stranog ključa u relaciju SEKTOR zato što svi entiteti iz ove relacije učestvuju u vezi, dok to nije slučaj za entitete iz relacije RADNIK (svi sektori imaju šefa, ali nisu svi radnici šefovi). Komplikovanija situacija je ako je veza između dve relacije više-na-više, odnosno M:N. Na primer, ako imamo relacije PREDMET koja se odnosi na predmete, i relaciju UČENIK, veza između njih (PREDMET:UČENIK) koja definiše koji učenici pohađaju odgovarajući predmet je M:N. Jedan predmet pohađa više učenika (x:N), a jedan učenik ima više predmeta (M:N). Kako predstaviti ovakvu vezu? Predstavljanje veza tipa M:N je jedino moguće kreiranjem nove relacije koja sadrži ključeve iz obe relacije koje učestvuju u vezi, plus eventualno dodatne atribute veze ako postoje. U primeru veze PREDMET:UČENIK treba kreirati novu relaciju POHAĐA, koja sadrži atribute: ključ relacije PREDMET, ključ relacije UČENIK, i eventualno dodatne atribute veze. Ključ te nove relacije je kombinacija atributa ključeva obe relacije. - 14 -

9. Za svaki tačan odgovor dodelite sebi 2 poena. za delimično tačan 1. Ime relacije se ispisuje iznad pravougaonika. Nakon toga pogledajte ponovo materijal u ovoj lekciji. Predstavljanje šema relacione baze podataka Uobičajena konvencija za predstavljanje relacione šeme je dijagram relacije... Navesti osnovne koncepte relacionog modela podataka? . Pogledajte ponovo one delove lekcije za koje ste imali 0 poena. pri čemu ostaje pravilo da se primarni ključ podvlači. Navesti tipove sistema baza podataka... a šta su atributi relacije? 12. PLATA ADRESA MATBROJS BRSEK PROJEKAT NAZIV LOKPR BROJPR BRS SEKTOR NAZIV SBROJ MATBRR DATPOST CLAN_PORODICE MATBRRAD IME POL SRODSTVO DATRODJ LOK_SEKTOR BRS LOKACIJA MBR RADI_NA BRPR SATI Pitanja: Pokušajte da odgovorite na sledeća pitanja. Na koji način relacioni model predstavlja entitete (objekte realnog sveta)? 11. 1. a za netačan 0. Svaka relacija se predstavlja jednim izduženim pravougaonikom koji ima onoliko ćelija koliko je atributa u relaciji.Baze podataka . Šta je relacija. a imena atributa u ćelijama. Šta je Sistem za upravljanje bazama podataka (DBMS)? 7. Šta je baza podataka? 5. Koje su funkcije DBMSa? 8. Kako su organizovani podaci u bazi podataka? 6.10. . Koja je svrha baze podataka? 3. a da se spoljni ključevi pišu italikom. Koje značenje imaju NULL vrednosti atributa? 14.15 - . Niže je prikazan dijagram relacione šeme baze podataka PREDUZEĆE: RADNIK LIME SSLOVO PREZIME MATBR DATRODJ POL .Relacioni model Elektronski fakultet u Nišu 1. Zašto je korišćenje baza podataka važno? 2. Šta je sistem baza podataka i koje su 4 osnovne komponente? 4. Šta obezbeđuju modeli podataka? 10. Šta je domen atributa? 13.

Za svakog radnika se pamti ime. 4. datum rođenja i srodstvo. Svaki sektor ima ime. Svaki radnik radi u jednom sektoru. adresa. Sektor može imati više lokacija. Rešenje zadatka: baza podataka PREDUZECE Najpre ćemo na osnovu zahteva da prepoznamo potencijalne relacije koje ćemo predstaviti tabelama. Vodi se evidencija o datumu kada je rukovodilac postavljen na tu funkciju.Baze podataka .10. Pri tome se vodi evidencija o broju radnih časova koje radnik provede na nekom od projekata. pol i datum rođenja. Relaciona šema baze podataka PREDUZEĆE Baza podataka PREDUZECE Na osnovu navedenih zahteva projektovati relacionu šemu baze podataka PREDUZEĆE. Za svakog člana evindetira se ime. broj i rukovodioca.16 - . pol. Svaki projekat ima ime. matični broj. U sektoru se radi na više projekata. 3. 19. broj i jedinstvenu lokaciju. 20. Sektor ima bar četiri radnika. 21.Relacioni model 15. a može biti angažovan na više projekata.1. Preduzeće ima više sektora. Zahtevi: 1. 17. sa atributima kako je to prikazano: RADNIK LIME SSLOVO PREZIME MATBR DATRODJ POL PLATA ADRESA SEKTOR NAZIV SBROJ . 16. Takođe se vodi evidencija o hijerarhiji odgovornosti. Navesti svojstva relacije. odnosno evidentira se za svakog radnika ko mu je neoposredni rukovodilac. Vodi se i evidencija o članovima porodice. SEKTOR i PROJEKAT. To su RADNIK. Koja je uloga primarnog ključa relacije? Navesti vrste ključeva koji mogu da postoje? Kada se uvodi ključ surogat ili kolona ID? Koje je značenje stranog ključa? Šta podrazumeva relacioni integritet? Na koji način se predstavlja relacioni model podataka? Elektronski fakultet u Nišu 1. plata. 18. koje ne vodi isti sektor. 2.

pošto jedan radnik može da rukovodi samo jednim sektorom. 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. kod koga se ključ formira kao kombinacija delimičnog ključa (u ovom slučaju ime deteta) i stranog ključa (mat. jer nisu svi radnici rukovodioci sektora). Ovo je veza 1:1. relacija RADNIK ne učestvuje potpuno. kao i veza JE_NOSILAC u kojoj je na N strani PROJEKAT. roditelja). a jedan sektor ima jednog rukovodioca. odnosno svaki sektor mora da ima rukovodioca (s druge strane.17 - . CLAN_PORODICE MATBRRAD IME POL SRODSTVO DATROĐ Na osnovu zahteva se mogu prepoznati i veze: RUKOVODI. ali je očigledno da se svako dete u ovom slučaju nema atribut koji može da bude ključ. S druge strane. između radnika i sektora. 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. tako da se za nju formira posebna relacija RADI-NA u koju se kao .Baze podataka .br. koje su tipa 1:N. SEKTOR NAZIV SBROJ MATBRR DATPOST Veze RADI_U i NADZOR. 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. Ovo je situacija kada se član porodice pojavljuje kao slabi tip entiteta. Relacijama na N strani se dodaju kao spoljni ključevi primarni ključevi relacije na 1 strani. u kojima se na N strani javlja RADNIK. 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.Relacioni model PROJEKAT NAZIV LOKPR BROJPR Elektronski fakultet u Nišu Član porodice je takođe potencijalna relacija. Vodite računa da je ovo dugačija situacija od dodavanja ključa surogata kako je to navedeno kod objašnjavanja ključeva.

18 - . LOK_SEKTOR BRS LOKACIJA Na taj način. Ova dva spoljna ključa formiraju primarni ključ relacije RADI-NA.Relacioni model Elektronski fakultet u Nišu spoljni ključevi uključuju primarni ključevi relacija RADNIK i PROJEKAT.Baze podataka . Za njega se formira nova relacija LOK-SEKTOR koja kao spoljni ključ ima primarni ključ relacije SEKTOR. RADI_NA MBR BRPR SATI Dodatna komplikacija u ovim zahtevima je i viševrednosni atribut LOKACIJA koji se odnosi na relaciju SEKTOR. 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 .

BrojMotora. tako da morate da predložite određeni skup atributa relacije koji opisuju svojstva entiteta): (a) Fakultet ima više studenata. a jedan doktor ima više pacijenata. i vrstu hrane (roštilj. definisati odgovarajuće tabele. pice). 2.jednostavan relacioni model U bazi podataka treba čuvati podatke o dva tipa entiteta: VOZILO.Relacioni model Elektronski fakultet u Nišu Zadaci: Relacije Na osnovu zahteva koji su dati prepoznati relacije i njihove atribute. svaki region ima više gradova. (e) Pacijent može da ima više doktora. rasu i numerisnu plastičnu oznaku na uvetu. i VLASNIK sa atributima LičnoIme. telefon. (d) Ćevapdžinica prodaje više vrsta pljeskavica. BrojDozvole. primarne ključeve i spoljne ključeve koji predstavljaju veze (napomena: atributi nisu navedeni. Koji strani ključ i u koju relaciju treba dodati da bi se modelirala veza između vlasnika i vozila? . Prepoznati relacije i definisati odgovarajuće tabele.19 - . Isti dodaci (salate) se mogu koristiti uz različite tipove pljeskavica. RegistarskiBroj. (b) Restoran: restorani imaju naziv. broj mesta. datum rođenja. BrojŠasije. riba.Baze podataka . Adresa. definisati odgovarajuće tabele i njihove primarne ključeve: (a) Brod: brod ima ime. Modeliranje . Za vozila se znaju vlasnici. ali jedan student može da studira samo na jednom fakultetu. registracioni kod. a vozilo ima samo jednog vlasnika. bruto nosivost. Prezime. sa atributima Tip. i godina igradnje. (b) Avion može da ima više putnika. (c) Država ima više regiona. 1. Jedan vlasnik može da poseduje više vozila. Veze između relacija Na osnovu zahteva koji su dati prepoznati relacije i njihove međusobne veze. (c) Krava: krava muzara ima ime. Koji atributi su primarni ključevi ovih relacija? 3. ali jedan putnik može da bude na samo jednom letu u određeno vreme. adresu.

Za svaki film treba pamtiti imena glumaca i tip uloge (glavna. Za svakog glumca postoji jedinstveni identifikator.).. Za svaku ekipu na utakmici vodi se statistika o broju as servisa. sporedna. ukupan iznos najamnine (od svih iznajmljenih kaseta) i vrednost ostvarenog bonusa (određuje se na osnovu pet iznajmljivanja). pamtiti lokaciju.. Za svakog igrača. Brojevi igrača su jedinstveni u okviru ekipe. dobijene nagrade Akademije. a za svaki set na utakmici treba pamtiti njegov redni broj i rezultat. datum dobijanja. rejting filma („kritika“ u novinama označena brojem zvezdica). Pamtiti podatke o režiserima filmova: za svakog režisera postoji jedinstveni broj. . adresa. Za utakmice pamti se i statistika za igrace i ekipu.Relacioni model Elektronski fakultet u Nišu Baza podataka o slikarima Projektovati relacionu šemu baze podataka koja treba da čuva podatke o slikarima i muzejima u kojima se nalaze njihove slike. U bazi podataka treba čuvati informacije o ekipama koje učestvuju (naziv. Za svaku sliku. sudije. vreme. naslov filma. tip (akcioni. kao i specijalnost. drama. naslov i stil. Treba pamtiti i informacije o članovima kluba: broj članske karte. Academy Award). „Oskar“. godini kada je ona nastala. mesto u timu i broj.). datumu smrti (ako postoji).Baze podataka . Baza podataka za Video klub Projektovati relacionu šemu baze podataka za Video klub. nominacije za nagrade Akademije (tzv. zemlja. Više kaseta može biti sa istim filmom. broju direktnih poena i broju poena na greške protivnika. za svaku utakmicu. datum.... godina. Za slikare pamtiti nacionalnost. režiser. ime i prezime. O glumcima se pamte imena (ime i prezime). Za svakog člana kluba treba pamtiti kasete koje je uzeo i datum izdavanja. datum rođenja i datum smrti (ako postoji). dve ekipe koje igraju i konacni rezultat u setovima). Pamtiti podatke o kasetama: jedinstveni kod kasete. film koji se na njoj nalazi i broj iznajmljivanja kasete. datum učlanjenja. komedija.. najbolji plasman na svetskim i evropskim prvenstvima) i igračima za svaku ekipu. Treba pamtiti i podatke o utakmicama (jedinstveni identifikator. pamte se imena. Za svaki muzej. ako postoji. treba pamtiti informacije o veličini (dimenzijama). datum rođenja i datum smrti (ako je poznat).20 - . pamti se broj osvojenih poena i broj promena. podaci o datumu rođenja i mestu rođenja. Baza podataka o takmičenju u odbojci Projektovati relacionu šemu baze podataka o takmičenju u odbojci. Za igrače pamti se ime i prezime. trener. jedinstveni broj. Potrebno je pratiti sledeće informacije o filmovima: jedinstveni broj. Utakmice se igraju na tri dobijena seta.

Svi SQL standardi koji su naknadno .Relacioni model Elektronski fakultet u Nišu Lekcija 2 Sadržaj • • o o SQL naredbe za kreiranje podataka Neophodno predznanje Baza podataka PREDUZEĆE o o o Definicija tabela Test podaci za bazu podataka PREDUZEĆE SQL naredbe za kreiranje podataka Tipovi podataka SQL DDL naredbe za kreiranje tabela RADNIK i SEKTOR Ograničenje kolone Ograničenja tabele Ograničenje stranog ključa DDL naredbe za kreiranje baze podataka PREDUZEĆE MS Access specifičnosti Praktičan rad : MS Access Pitanja za samostalni rad o o o 2. Ova verzija. je razvijena za potrebe manipulacije podacima System R sistemu za upravljanje relacionim bazama podataka.21 - . za kreiranje i modifikacija šema relacione baze podataka i za kontrolu pristupa objektima baze podataka.RDBMS). Prva verzija programskog jezika SQL razvijena je od strane kompanije IMB krajem 1970-ih godina. SQL naredbe za kreiranje podataka 2. inicijalno nazvana SEQUEL. pod nazivom SQL-86. od strane American National Standards Institute (ANSI). SQL je formalno standardizovan 1986 godine.Baze podataka .1. Ovaj standard je kasnije prihvaćen id od strane International Organization for Standardization (ISO). Ciljevi lekcije • • • • Upoznati se sa osnovama SQL programskog jezike Upoznati se sa različitim standardima SQL-a Naučiti osnovne SQL naredbe za kreiranje strukture relacione baze podataka Proučiti primer SQL naredbi za kreiranje structure relacione baze podataka PREDUZEĆE Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u Sistemima za upravljanje relacionim bazama podataka (Relational Database Management Systems .

korisnički definisane tipove podataka i druge elemente. SQL standard SQL-99 mnoga od ovih proširenja su formalno prihvaćenakao delovi SQL jezika u vidu SQL Persistent Stored Modules (SQL/PSM) (Tabela 2). dodavanje.jezik koji se koristi za definisanje strukture relacione baze podataka 2. je obezbeđena programksa podrška koja omogućava da se SQL naredbe kreiraju i koriste iz drugih programskih jezika. Većina RDBMS-ova implementira jedan od navedenih standarda. u većini slučajeva. Proizvođač Ime Puno ime ANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL Procedural Language (implements SQL/PSM) Microsoft/Sybase T-SQL Transact-SQL MySQL SQL/PSM SQL/Persistent Stored Module (implements SQL/PSM Oracle PL/SQL Procedural Language/SQL (based on Ada) PostgreSQL PL/pgSQL Procedural Language/PostgreSQL Structured Query Language (bazira se na Oracle PL/SQL) PostgreSQL PL/PSM Procedural Language/Persistent Stored Modules Tabela 2 Proširena SQL jezika koja su postala deo standarda Većina proizvođača relacionih DBMS-ova оbezbeđuje alat za kreiranje i izvršavanje naredbi SQL jezika.Baze podataka . Data Manipulation Language (DML) . Njegova osnovna karakteristika je da se radi o deklarativnom jeziku za upravljanje i manipulacijom podacima u relacionim bazama podataka.Relacioni model Elektronski fakultet u Nišu usvojeni predstavljaju zajedničke standarde organizacija ANSI i ISO (Tabela 1). SQL omogućava pribavljanje.jezik za pribavljanje i ažuriranje podataka u relacionoj bazi podataka. . Sve naredbe SQL jezika se mogu podeliti u dve velike grupe: 1. Data Definition Language (DDL) .22 - . Većina proizvođača RDBMS-a proširuje SQL standard dodajući proceduralne elemente. Ostali nazivi Godina Naziv 1986 SQL-86 SQL-87 1989 SQL-89 FIPS 127-1 1992 SQL-92 SQL2. kontrolne strukture. Ovaj alat može biti običan Command-line Interface (SQL/CLI) ili alat sa bogatim grafičkim interfejsom. Takođe. FIPS 127-2 1999 SQL:1999 SQL3 2003 SQL:2003 2006 SQL:2006 2008 SQL:2008 Tabela 1 Usvojeni SQL standardi SQL je programski jezik razvijen sa specifičnom namenom. ažuriranje i brisanje podataka u relacionoj bazi podataka.

Baze podataka . Neophodno predznanje Baza podataka Predstavlja kolekciju predstavljene tabelama.23 - . 2. obradu i administraciju nad bazom podataka.3. Atribut relacije Predstavlja osobinu entiteta predstavljenog relacijom. koje se odnose na svojstva objekta predstavljenog relacijom. . DBMS dobija zahteve u obliku upita (SQL upiti . Torka relacije Vrsta relacije. Relacioni dijagram baze podataka PREDUZEĆE prikazan je na Slici 1. Relacioni model Model podataka koji ima snažnu teorijsku osnovu.2.naredne lekcije!) i prevodi te zahteve u odgovarajuće akcije nad bazom podataka. Atribut je praktično imenovana kolona relacije odnosno tabele. koja se zasniva na matematičkoj teoriji relacija i na logici prvog reda. Relacija Tabela sa vrstama i kolonama. i za korisnika vrlo prihvatljivu reprezentaciju u vidu dvodimenzionalne tabele. povezanih podataka organizovanih u logičke celine Sistem za upravljanje bazama podataka (DBMS) Računarski program (u praksi obično skup računarskih programa odnosno aplikacija) koji obezbeđuje kreiranje.Relacioni model Elektronski fakultet u Nišu 2. Baza podataka PREDUZEĆE U nastavku je prikazana relaciona baza podataka PREDUZEĆE koja će biti korišćena u svim lekcijama ovog kursa koje se bave SQL programskim jezikom. Relaciona baza podataka Kolekcija normalizovanih relacija.

matični broj šefa sektora i datum kada je šef sektora postavljen na svoju dužnost. Kolona Radnik referencira kolonu MatBr u tabeli RADNIK a kolona Projekat referencira kolonu Broj u tabeli PROJEKAT. Preduzeće je podeljeno na veći broj sektora. Za svako angažovanje se pamti: matični broj angažovanog radnika. matični broj neposrednog rukovodioca i broj sektora u kome radnik radi. Tabela CLAN_PORODICE čuva sledeće podatke o članovima porodica radnika: matični broj radnika. Za primarni ključ je izabran broj sektora odnosno kolona Broj. Primarni ključ je kompozitni i čine ga kolone Radnik i Ime. datum rođenja. srodstvo sa radnikom i datum rođenja. . Tabela PROJEKAT čuva podatke o projektima koji su aktivni unutar preduzeća. Za primarni ključ je izabran broj projekta odnosno kolona Broj. pol. naziv projekta. lokacija projekta i broj sektora koji je zadužen za projekat. Tabela ima dva strana ključa: Radnik i Projekat. plata. Za svakog radnika se pamti matični broj. U tabeli SEKTOR se pamte sledeći podaci o sektorima: broj sektora. Jedini strani ključ je kolona Sef koja referencira kolonu MatBr u tabeli RADNIK (šef sektora je jedan od radnika u preduzeću). ime člana porodice. Jedini strani ključ je kolona Sektor koja referencira kolonu Broj u tabeli Sektor. prezime. broj projekta na kome je angažovan i broj radnih sati nedeljno koliko je angažovan na projektu. Tabela RADI_NA predstavlja evidenciju angažovanja radnika na različitim projektima. srednje slovo. Primarni ključ je kompozitni i čine ga kolone Sektor i Lokacija. Za primarni ključ je izabran matični broj radnika odnosno kolona MatBr. Primarni ključ je kompozitni i čine ga kolone Radnik i Projekat. ime. Strani ključ je kolona Sektor koja referencira kolonu Broj u tabeli SEKTOR. Strani ključ je kolona Radnik koja referencira kolonu MatBr u tabeli RADNIK. Tabela ima dva strana ključa: Rukovodilac i Sektor. naziv sektora. . Kolona Sektor referencira kolonu Broj u tabeli Sektor. pol.Relacioni model Elektronski fakultet u Nišu Slika 1 Relacioni dijagram baze podataka PREDUZEĆE Tabela RADNIK čuva podatke o radnicima preduzeća. adresa. Tabela LOK_SEK čuva podatke o lokacijama na kojima se nalazi određeni sektor: broj sektora i naziv lokacije.Baze podataka .24 - . Za svaki projekat se pamti: broj projekta. Kolona Rukovodilac referencira kolonu MatBr u istoj tabeli jer rukovodilac je jedan od radnika (rekurzivna veza).

Baze podataka .Relacioni model Elektronski fakultet u Nišu Definicija tabela Kolona MatBr Ime SSLovo Prezime DatumRodj Adresa Pol Plata Rukovodilac Sektor Tip Number Text(20) Text(1) Text(30) Date/Time Text(100) Text(1) Number Number Number Ključ Primarni ključ Ne Ne Ne Ne Ne Ne Ne Strani ključ Strani ključ Obavezna Da Da Da Da Ne Ne Ne Ne Ne Da Napomena Long Integer Single Long Integer Byt Definicija tabele RADNIK Kolona Broj Naziv Sef DatPost Tip Number Text(50) Number Date/Time Ključ Primarni ključ Ne Strani ključ Ne Obavezna Da Da Da Ne Napomena Byte Long Integer Definicija tabele SEKTOR Kolona Broj Naziv Lokacija Sektor Tip Number Text(100) Text(50) Number Ključ Primarni ključ Ne Ne Strani ključ Obavezna Da Da Ne Da Napomena Integer Byte Definicija tabele PROJEKAT Kolona Tip Radnik Number Ime Text(20) Pol Text(1) Srodstvo Text(10) DatRodj Date/Time Ključ Primarni ključ. Strani ključ Primarni ključ Obavezna Da Da Napomena Byte Definicija tabele LOK_SEK . Strani ključ Primarni ključ Ne Ne Ne Obavezna Napomena Da Long Integer Da Ne Da Ne Definicija tabele CLAN_PORODICE Kolona Tip Sektor Number Lokacija Text(50) Ključ Primarni ključ.25 - .

Relacioni model Kolona Tip Radnik Number Projekat Number Sati number Ključ Primarni ključ. Strani ključ Ne Obavezna Da Da Da Elektronski fakultet u Nišu Napomena Long Integer Integer Byte Definicija tabele RADI_NA Test podaci za bazu podataka PREDUZEĆE .26 - .Baze podataka . Strani ključ Primarni ključ.

Specifikacije ograničenja za tabelu su navedena u odeljku Ograničenja tabele. Navedena sintaksa naredbe CREATE TABLE nije kompletna. U odeljku Tipovi podataka navedeni su tipovi podataka koje možete koristiti. ograničenja za kolonu. . Osim toga proizvođači RDBMS-ova prošuruju CREATE TABLE naredbu klauzulama koje su posledica specifičnih osobina njihovih proizvoda. SQL standard obezbeđuju korišćenje velikog broja dodatnih klauzula koje korisnicima omogućavaju preciznu kontrolu procesa kreiranja tabele. u zavisnosti od tipa podatka) i opciono.4. Deklaracija kolone sadrži ime kolone.27 - . tip podatka kolone. Centralni objekat svake relacione baze podataka jeste tabela. Za deklaraciju kolona se koristi format koji je dat u nastavku: <ime_kolone><tip_podatka>[(<dužina>)] [<ograničenje_kolone>]. Za kreiranje tabele koristi se SQL naredba CREATE TABLE. Osnovni format CREATE TABLE dat je u nastavku: CREATE TABLE <ime_tabele> (<lista_deklaracija_kolona> [.<lista_deklaracija_organičenja_tabele>]). Deklaracije kolona se razdvojaju zapetama.Relacioni model Elektronski fakultet u Nišu 2. opciono dužinu (ako je neophodna. Nakon deklaracije svih kolona navode se ograničenja koja važe za celu tabelu. što je detaljnije opisano u odeljku Ograničenja kolona. Ograničenja za kolonu su opciona i mogu da sadrže specifikaciju predefinisane vrednosti i niz specifikacija ograničenja. izmenu i brisanje same relacione baze podataka kao i objekata koji čine relacionu baze podataka. SQL naredbe za kreiranje podataka SQL DDL naredbe se koriste za kreiranje.Baze podataka .

Npr.Relacioni model Elektronski fakultet u Nišu 2. Tabela 3 Generički SQL tipovi podataka U Tabeli 4 su navedeni tipovi podataka koje implementira Microsoft SQL Server familija proizvoda. time with time time koji uključuje i informaciju o vremenskoj zoni. Tip podataka integer smallint numeric(p. bit(x) Argument x definiše maksimalan broj bitova koje podataka može da prihvati. Ovaj tip definiše tekstualne podatke fiksne dužine. Ovaj tip definiše tekstualne podatke fiksne dužine.s) Opis Celobrojna vrednost Celobrojna vrednost Argument p definiše ukupan broj cifara broja dok argument s definiše broj cifara desno od decimalnog zareza. Broj u pokrenom zarezu jednostruke preciznosti Broj u pokretnom zarezu dvostruke preciznosti decimal(p. Ne podržavaju svi RDBMS-ovi tipove podataka definisane u SQL standardu. bit varying(x) Argument x definiše maksimalan broj bitova koje podataka može da prihvati.s) real double precision float(p) char(x) Argument p definiše preciznost broja. varchar2(x) Argument x predstavlja maksimalan broj karaktera koji kolona može da prihvati. 2) je broj koji ima 4 cifre ispred decimalnog zareza i 2 cifre iza decimalnog zareza. Podaci su fiksne dužine. Argument n (1 do 8000) predstavlja maksimalan broj karaktera koji kolona može da prihvati. time Vreme.1. Argument p definiše ukupan broj cifara broja dok argument s definiše broj cifara desno od decimalnog zareza. Tipovi podataka U Tabeli 3 su dati generički tipovi podataka koje definiše SQL standard.28 - . Npr. 2) je broj koji ima 4 cifre ispred decimalnog zareza i 2 cifre iza decimalnog zareza. odnosno .4. Argument x predstavlja maksimalan broj karaktera koji kolona može da prihvati. Ovaj tip definiše tekstualne podatke promenljive dužine (nema dopunjavanja blanko znacima). numeric(6. zone timestamp with timestamp koji uključuje i informaciju o vremenskoj zoni. time zone Interval Vremenski interval. timestamp Datum i vreme. Ovaj tip definiše binarne podatke fiksne dužine. Podaci su promenljive dužine. Tip podataka binary(n) char(n) Opis Argument n (1 do 8000) definiše maksimalan broj bajtova koji kolona može da prihvati..Baze podataka . odnosno podataka se dopunjuje blanko znacima sa desne strane kako bi se obezbedila specificirana dužina. numeric(6. date Datum.

Int.1 (2. Numeric(8. SQL DDL naredbe za kreiranje tabela RADNIK i SEKTOR Primer 1 CREATE TABLE RADNIK ( MatBr Ime SSlovo Prezime DatRodj Pol Plata Adresa Rukovodilac Sektor ). godine.1 (2.647) bajtova.1 (-32. int Colobrojna vrednost u opsegu od -2^31 (-2. Date.768) do 2^15 .648) do 2^31 .2. Int. smalldatetime Tip podataka koji se koristi za predstavljanje informacija o vremenu i datumu.2079.Relacioni model Elektronski fakultet u Nišu podataka se dopunjuje blanko znacima sa desne strane kako bi se obezbedila specificirana dužina. VarChar(15). s) Argument p (1 do 38) definiše ukupan broj cifara broja dok argument s (0 ≤ s ≤ p) definiše broj cifara desno od decimalnog zareza. Mogu se predstaviti podaci o datumu i vremenu u opsegu od 01. Mogu se predstaviti brojevi u opsegu od .147.01.483.Baze podataka .647). smallint Colobrojna vrednost u opsegu od -2^15 (--32.767). 2).9999. Int .1 (2. VarChar(15). Maksimalan broj bajtova koji kolona može prihvatiti je 2^31 .483.33 milisekunde. image Binarni podaci promenljive dužine.01.1753 do 31. Maksimalna dužina je 2^31 .06. VarChar(30).12.10^38 +1 through 10^38 . godine. varchar(n) Argument x definiše maksimalan broj bitova koje podataka može da prihvati. text Tip podataka koji se koristi za predstavljanje tekstualnih podataka promenljive dužine. Char(1). Koristi 8 bajtova za pamćenje informacija o datumu i vremenu sa preciznošću od 3. tinzint(x) Colobrojna vrednost u opsegu od 0 do 255. Char(1).1900 do 06. datetime Tip podataka koji se koristi za predstavljanje informacija o vremenu i datumu.29 - .147.4. Tabela 4 Tipovi podataka koje implementira MS SQL Server 2. Podaci su promenljive dužine.483. Koristi 4 bajta za pamćenje informacija o datumu i vremenu sa preciznošću od 1 minuta.147.647).483. numeric(p.147. Mogu se predstaviti podaci o datumu i vremenu u opsegu od 01.1.

ostali atributi ). ako je definisano za konkretnu kolonu. tako da ga ne treba posebno navoditi. Na taj način atribit iza koga stoji klauzula REFERENCES definisan je kao spoljni ključ u odnosu na primarni ključ tabele čije je ime navedeno iza klauzule REFERENCES. u maloj zagradi. VarChar(15). Ograničenje kolone Ograničenja koja možete da definišete za kolonu kod kreiranja tabela su: • • • • • • NULL ili NOT NULL -definiše da kolona može ili ne može imatu NULL vrednosti. DBMS očekuje da je referencirana kolona primarni ključ (kolona deklarisana sa PRIMARY KEY) u referenciranoj tabeli. Za vrednost kolone se mogu specificirati ograničenja NULL ili NOT NULL čime se dozvoljava ili zabranjuje NULL vrednost kolone. Int. ako vrednost kolone nije navedena). DEFAULT .definiše podrazumevanu vrednost za kolonu (kolona uzima ovu vrednost. Uočite da kod deklaracije spoljnog ključa tabele treba navesti iza ključne reči REFERENCES ime referencirane tabele i opciono. koje ne dozvoljava ponavljanje vrednosti u koloni.definiše da kolona ima jedinstvene vrednosti (kandidati za ključeve). B <tip_podatka> REFERENCES <ime_ref_tabele>(<ime_ref_kolone>). CREATE TABLE <imeTabele> ( A <tip_podatka> PRIMARY KEY. . ime referencirane kolone u toj tabeli. To znači da navodimo samo ograničenje NOT NULL.30 - .3. PRIMARY KEY . Za kolonu podrazumevano ograničenje je NULL vrednost.4.Relacioni model CREATE TABLE SEKTOR ( Broj Naziv Sef DatPost ). Date 2. a atribut B spoljni ključ možete koristi oblik naredbe CREATE TABLE koji je prikazan u nastavku. Strože ograničenje je UNIQUE.definiše da kolona predstavlja primarni ključ tabele (može da se primeni na samo jednu kolonu u tabeli).Baze podataka . UNIQUE . CHECK -definiše ograničenje za proveru vrednosti kolone (koristi se kod upisa ili ažuriranja vrednosti). Kod navođenja PRIMARY KEY podrazumeva se NOT NULL ograničenje za tu kolonu. Pri kreiranju tabele u kojoj je atribut A primarni ključ. REFERENCES -definiše da kolona predstavlja spoljni ključ tabele. Elektronski fakultet u Nišu Int.

Ograničenja tabele Za definisanje ograničenja koja važe za tabelu u celini možete koristiti: • • • • PRIMARY KEY . . DEFAULT("Niš"). Int RadiNaPK NOT NULL. CREATE TABLE PROJEKAT ( Broj Int Naziv VarChar(25) Lokacija VarChar(15) Sektor Integer ).b. Int.4.b.4.4. UNIQUE . CREATE TABLE RADI_NA ( Radnik Projekat Sati CONSTRAINT Projekat) ). NOT NULL.c) ). PRIMARY KEY. Za kreiranje tabele u kojoj je skup atributa (a. Atribute a.definiše koja kolona ili koje kolone imaju jedinstvene vrednosti (kandidati za ključeve). Int.Baze podataka . REFERENCES SEKTOR(Broj) 2. FOREIGN KEY .c) primarni ključ možete koristiti oblik CREATE TABLE naredbe prikazan u nastavku. b i c treba deklarisati u sekciji < atributi i njihovi tipovi podataka >. PRIMARY KEY (a. CHECK -definiše ograničenja vrednosti kolone ili kolona koje DBMS proverava kod upisa ili ažuriranja vrednosti te ili tih kolona. SQL DDL naredba za kreiranje tabele PROJEKAT.definiše koja kolona ili koje kolone čine spoljni ključ tabele. CREATE TABLE < ime_tabele > ( <atributi i njihovi tipovi podataka>.31 - .definiše koja kolona ili koje kolone čine primarni ključ tabele.Relacioni model Elektronski fakultet u Nišu 2. PRIMARY KEY (Radnik. Primer 3 SQL DDL naredba za kreiranje tabele RADI_NA.5.

Baze podataka . CONSTRAINT RadnikFK REFERENCES RADNIK(MatBr). Ograničenje stranog ključa U deklaraciji kolone ili tabele.6. Ne zaboravite da je kod deklarisanja FOREIGN KEY ograničenja na kraju deklaracije tabele. Primer 4 SQL DDL naredba za kreiranje tabele CLAN_PORODICE. odnosno vrstama tabele. nakon klauzule REFERENCES. SET NULL . FOREIGN KEY (Radnik) FOREIGN KEY (Projekat) . Projekat Int. iza ovih klauzula se navodi jedna od klauzula koja definiše aktivnost koja će se izvršiti nad torkama u slučaju brisanja ili ažuriranja vrednosti torke u tabeli u kojoj je ograničenje navedeno: • • • • NO ACTION . tako da CREATE TABLE naredba ima sledeći oblik: CREATE TABLE <naziv_tabele> ( FOREIGN KEY (<lista_atributa_koji_čine_spoljni_ključ>) REFERENCES (<lista_referenciranih_atributa>) [ON DELETE { NO ACTION | CASCADE | SET DEFAULT |SET NULL}] [ON UPDATE { NO ACTION | CASCADE | SET DEFAULT |SET NULL}] CHECK (<uslovni_izraz>) ). NOT NULL. mogu se navesti klauzule ON DELETE ili ON UPDATE koje specificiraju aktivnosti u slučaju narušavanja integriteta. neophodno navesti listu referentnih atributa u okviru zagrada. Sati Int CONSTRAINT RadiNaPK Projekat). U oba slučaja. CONSTRAINT ProjekatFK REFERENCES PROJEKAT(Broj) ).4. na koju se referencirate u REFERENCES klauzuli u slučaju brisanja torki u tabeli u kojoj je navedeno ovo ograničenje. SET DEFAULT . ON UPDATE omogućava specifikaciju aktivnosti nad torkama referencirane tabele u slučaju ažuriranja (promene vrednosti) podataka u tabeli gde je REFERENCES ograničenje specificirano.Relacioni model Elektronski fakultet u Nišu 2. CASCADE . ON DELETE omogućava specifikaciju aktivnosti nad torkama relacije.promena vrednosti atributa u tabeli na koju se referencirate na predefinisanu vrednost.kaskadno izvršenje aktivnosti brisanja (brišu se torke u tabeli na koju se referencirate) kod ON DELETE ili aktivnosti ažuriranja (ažuriraju se vrednosti referenciranih atributa) kod ON UPDATE. CREATE TABLE RADI_NA ( Radnik Int. PRIMARY KEY (Radnik.32 - .promena vrednosti atributa u tabeli na koju se referencirate na NULL.nema akcije (ovo je predefinisana vrednost).

FOREIGN KEY (Sef) REFERENCES CREATE TABLE PROJEKAT ( Broj Int. CHECK (PLATA > 1000). Prezime VarChar(15) DatRodj Date.Baze podataka . CREATE TABLE SEKTOR ( Broj Naziv Sef DatPost CONSTRAINT CONSTRAINT RADNIK(MatBr) ). Ime VarChar(15) SSlovo Char(1). PRIMARY KEY (Broj). CREATE TABLE CLAN_PORODICE ( Radnik Int. NOT NULL. Rukovodilac Int. Pol Char(1) DatRodj Date. VarChar(15) Int Date. . PRIMARY KEY (Broj). FOREIGN KEY (Sektor) NOT NULL DEFAULT "M". CONSTRAINT SektorFK1 REFERENCES SEKTOR(Broj) ). NOT NULL. 2) Adresa VarChar(30).Relacioni model Elektronski fakultet u Nišu 2. Pol Char(1) Plata Numeric(8. NOT NULL. DEFAULT "M". NOT NULL.7. FOREIGN KEY (Rukovodilac) FOREIGN KEY (Sektor) Int. SektorPK SefFK NOT NULL. PRIMARY KEY (MatBr). NOT NULL.33 - .4. DEFAULT "Niš". Ime VarChar(15). Naziv VarChar(25) Lokacija VarChar(15) Sektor Integer CONSTRAINT ProjekatPK CONSTRAINT NadlezanFK REFERENCES SEKTOR(Broj) ). NOT NULL. DDL naredbe za kreiranje baze podataka PREDUZEĆE Primer 5 CREATE TABLE RADNIK ( MatBr Int. Sektor Int CONSTRAINT RadnikPK CONSTRAINT RukovodiFK REFERENCES RADNIK(MatBr). NOT NULL.

. CONSTRAINT RoditeljFK REFERENCES RADNIK(MatBr) ). CHECK i DEFAULT ograničenja. postoje elementi SQL standarda koji neće raditi u MS Access-u. FOREIGN KEY (Radnik) CREATE TABLE LOK_SEK ( Sektor Int.Relacioni model CONSTRAINT Ime). CONSTRAINT SektorFK2 REFERENCES SEKTOR(Broj) ). PRIMARY KEY (Sektor.Baze podataka . Ovaj standard implementira najveći broj proizvođača DBMS-a. CREATE TABLE RADI_NA ( Radnik Int. Ekvivalentna ograničenja se mogu definisati u tabeli korišćenjem Desig View-a za tabelu. kao i većina drugih proizvođala DBMSa. MS Access specifičnosti Trenutno najrasporostranjeniji standard SQL-a koji se koristi je ANSI SQL-92. koje MS Access ne podržava: • • • MS Access ne podržava UNIQUE. CONSTRAINT ProjekatFK REFERENCES PROJEKAT(Broj) ). Ove akcije se mogu naknadno definisati korišćenjem posebnih alata za kreiranje tabela i definisanje relacija. CONSTRAINT LokacijaPK Lokacija). Lokacija VarChar(15).34 - . a vezani su za CRATE TABLE naredbu. Takođe. PRIMARY KEY (Radnik. Char i VarChar tipovi podataka se konvertuju u Text tip podataka MS Access ne podržava u potpunosti SQL standard za definisanje ograničenja stranog ključa.5. Microsoft je u MS Access SQL implementirao specifičnosti koje nisu deo SQL standarda. FOREIGN KEY (Radnik) FOREIGN KEY (Projekat) 2. Sati Int CONSTRAINT RadiNaPK Projekat). Projekat Int. Iz ovih razloga. CONSTRAINT RadnikFK REFERENCES RADNIK(MatBr). Sa druge strane MS Access koristi nešto stariju verziju standarda ANSI SQL-89. U nastavku će biti navedene neki od elemenata SQL standarda. ClanPorodicePK Elektronski fakultet u Nišu PRIMARY KEY (Radnik. FOREIGN KEY (Sektor) NOT NULL. Podržano je samo osnovno kreiranje stranog ključa bez mogućnosti definisanje ON UPDATE i ON DELETE akcija.

Windows . a nakon toga izabrati Blank Database i uneti ime baze podataka: .kada se otvori Access. pronaći ikonicu za Access Pojaviće se početna upozorenja koja se odnose na sigurnost i treba ih potvrditi Kreirati novu bazu podataka .35 - . Create New database. VIDEO KLUB i sl). kao na slici. Programs. kreirati novu bazu podataka i u njoj kreirati tabele iz nekog od primera (PREDUZEĆE. Kreiranje baze podataka • • • Startujte MS Access . Praktičan rad : MS Access Proučiti detaljno funkcije MS Access-a kao alata za razvoj aplikacija i DBMSa.Relacioni model Elektronski fakultet u Nišu 2. Kratko uputstvo za korišćenje MS Access-a: 1.Baze podataka .7.

Baze podataka .Relacioni model Elektronski fakultet u Nišu 2.nakon otvaranja Database Window-a kao na slici: • Počnite sa kreiranjem tabela klikom na Table i Create Table in Design View: . Kreiranje tabela i izbor ključa .36 - .

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

Kreirajte sve tabele iz baze podataka koju ste projektovali tako što ćete da unesete imena i tipove kolona:

• •

snimite tabelu pod željenim imenom domene atributa odredite tipovima podataka koje nudi Access

Izaberite ključni atribut, selekcijom tog atributa i klikom na ikonicu sa ključem na toolbar-u.

3. Tabele možete modifikovati tako što ćete iz istog prozora da klikom na tabelu i izborom opcije Design. - 37 -

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

4. Unos i modifikacija podataka u tabeli - jednostavno dvostrukim klikom na tabelu otvara se tabela u modu za prikaz i unos podataka. Možete da unosite nove vrste ili da menjate postojeće:

5. Podešavanja za očuvanje referencijalnog integriteta

Izabrati ikonicu za Relationship i otvoriće vam se sledeći prozor u kome možete da dodate tabele između kojih ćete definisati veze za očuvanje referencijalnog integriteta:

- 38 -

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

Za kreiranje veze između dve tabele jednostavno kliknite i povucite ključ jedne tabele i prevucite ga preko stranog ključa u drugoj tabeli. Podesite ograničenja:

Pitanja za samostalni rad
Proučiti detaljno funkcije MS Access-a kao alata za razvoj aplikacija i DBMSa, kreirati bazu podataka PREDUZEĆE korišćenjem relacionog modela koji je dat u ovoj lekciji.

- 39 -

Korišćenjem ove naredbe korisnici imaju mogućost samo da specificiraju rezultate koje žele. Sa druge strane RDBMS je zadužen da isplanira.1.Baze podataka . manipulište tim podacima i kao rezultat generiše tabelu. . Naredba SELECT pribavlja podatke iz jedne tabele ili više povezanih tabela koje se nalaze u relacionoj bazi podataka. Čak i kada je rezultat obrade skalarna vrednost ona se tretira kao tabela sa jednom vrstom i jednom kolonom.Relacioni model Elektronski fakultet u Nišu Lekcija 3 Sadržaj • • o o o o Naredba SELECT I Neophodno predznanje Naredba SELECT Klauzule SELECT i FROM Klauzula WHERE o o o o o o Logički operatori Operator IN Operator BETWEEN Operator LIKE Operator IS NULL Klauzula ORDER BY Aritmetičke funkcije Funkcije agregacije Praktični rad: MS Access Pitanja za samostalni rad 3. optimizuje i izvrši fizičke operacije neophodne za generisanje specificiranih rezultata.40 - . Naredba SELECT je deklarativna naredba. Za pretraživanje i pribavljanje podataka SQL programski jezik obezbeđuje naredbu SELECT. Naredba SELECT koristi podatke iz jedne ili većeg broja tabela. Naredba SELECT I 3. U svom osnovnom obliku naredba SELECT ne može ni na koji način da izmeni podatke koji se nalaze u relacionoj bazi podataka. Rezultat SELECT naredbe je uvek relacija. Ciljevi lekcije • • • • • Upoznati se podrškom koju SQL pruža za pretraživanje podataka Upoznati osnovnu strukturu SQL naredbe SELECT Naučiti osnove korišćenja naredbe SELECT za pretraživanje podataka u jednoj tabeli Upoznati se sa podržanim logičkim operatorima Upoznati se sa podržanim aritmetičkim operatorima i funkcijama za agregaciju podataka Pretraživanje i pribavljanje podataka su najčešće operacije koje korisnici izvršavaju u relacionoj bazi podataka.

Neophodno predznanje Relacija Tabela sa vrstama i kolonama. ORDER BY . Torka relacije Vrsta relacije. Atribut relacije Predstavlja osobinu entiteta predstavljenog relacijom. Spajanje tabela će biti detaljno objašnjeno u narednoj lekciji. Naredba SELECT Naredba SELECT je jedna od najkompleksnijih naredbi SQL programskog jezika. koje se odnose na svojstva objekta predstavljenog relacijom.Relacioni model Elektronski fakultet u Nišu 3. Klauzule SELECT i FROM Klauzule SELECT i FROM su jedine obavezne u okviru SELECT naredbe. . 3. Ukoliko se navede više tabela potrebno je specificirati način spajanja tabela. Klauzula FROM može da uključi jednu ili više opcionih JOIN klauzula za povezivanje tabela na osnovu kriterijuma zadatih od strane korisnika.RDBMS).definiše tabele iz kojih se pribavljaju podaci za potrebe generisanja rezultujuće tabele.41 - .grupiše vrste koje u određenim kolonama imaju identične vrednosti.koristi se za sortiranje rezultujuće tabele. Korisnici specificiraju kolone po kojima se vrši sortiranje kao i smer sortiranja. Ova klauzula iz rezultata eliminiše sve vrste za koje specificirani predikat ne vraća vrednost TRUE. Atribut je praktično imenovana kolona relacije odnosno tabele. za kreiranje i modifikacija šema relacione baze podataka i za kontrolu pristupa objektima baze podataka.definiše predikat na osnovu koga se elimišu vrste nakon što je klauzula GROUP BY primenjena na rezultujuću tabelu.Baze podataka .3.2. Za sada ćemo se ograničiti samo na pribavljanje podataka iz jedne tabele. GROUP BY .definiše predikat na osnovu koga se ograničava broj vrsta u rezultujućoj tabeli. HAVING . WHERE .definiše listu kolona koje će biti uključene u rezultujuću tabelu FROM . Klauzula FROM specificira tabele iz kojih se pribavljaju podaci. SQL Programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u Sistemima za upravljanje relacionim bazama podataka (Relational Database Management Systems . Uključuje veći broj ključnih reči klauzula: • • • • • • SELECT .

iz rezultujuće tabele izbacuju se duplikati vrsta * .42 - . Plata. Primer 2 Ukoliko želimo da prikažemo samo određene kolone iz tabele RADNIK posle SELECT klauzule navešćemo imena kolona koje su od interesa. SELECT MatBr. Rezultat bi bio ekvivalenta da smo napisali upit kod koga su umesto * navedena imena svih kolona u tabeli. ime.ime kolone ili funkcije nad kolonama koja će biti uključena u rezultujuću tabelu AS pseudonim . . DatRodj.novo ime kolone ili funkcije nad kolonama koje im se dodeljuje u rezultujućoj tabeli Primer 1 U nastavku je dat SQL upit koji prikazuje kompletan sadržaj tabele RADNIK SELECT * FROM RADNIK. Sektor FROM RADNIK. Sslovo.* . Adresa. Prezime FROM RADNIK. Pol.Relacioni model Elektronski fakultet u Nišu Klauzula SELECT specificira kolone koje treba uključiti u rezultujuću tabelu.rezultujuća tabela uključuje sve kolone specificirane tabele izraz .Baze podataka . Prezime. Rukovodilac. Mogu se koristiti sledeće opcije: • • • • • • ALL . U nastavku je dat SQL upit koji prikazuje samo imena i prezimena radnika. SELECT Ime.u rezultujućoj tabeli prikazuju se sve vrste koje zadovoljavaju navedeni predikat DISTINCT .rezultujuća tabela uključuje sve kolone tabele ili tabela iz kojih se pribavljaju podaci tabela.

Relacioni model Elektronski fakultet u Nišu Redosled kojim su kolone navedene u klauzuli SELECT definiše redosled kolona u rezultujućoj tabeli. U nastavku je dat SQL upit koji prikazuje imena i prezimena svih radnika ali u nešto drugačijem redosledu.Baze podataka . Ime FROM RADNIK. . Primer 3 U nastavku je dat SQL upit koji za svakog radnik određuje matični broj njegovog neposrednog rukovodioca.43 - . SELECT Rukovodilac FROM RADNIK. SELECT Prezime.

3. U uslovu se mogu javiti: 1. Relacioni operatori Logički operatori Operator BETWEEN Operator IN Operator LIKE Operator IS NULL SQL podržava šest relacionih operatora koji imaju sledeće značenje: 1.44 - . 3. > Veće od 5. Ukoliko želimo da eliminišemo duplikate koristićemo ključnu reč DISTINCT. SELECT * FROM RADNIK WHERE Prezime = "Petrović". SELECT DISTINCT Rukovodilac FROM RADNIK. = Jednako 2. 5.Relacioni model Elektronski fakultet u Nišu Možemo da primetimo da se u rezultujućoj tabeli neki matični brojevi javljaju više puta.Baze podataka . .1. 4. Klauzula WHERE Klauzula WHERE specificira uslov na osnovu koga se kreira rezultujuća tabela. U rezultujuću tabelu će biti uključene samo one vrste koje zadovoljavaju specificirani uslov. < Manje od 4. 6. <> Nije jednako (različito) 3. 2. To je posledica činjenice da veći broj radnika može imati istog rukovodioca.3. >= Veće ili jednako od Primer 4 U ovom primeru dat je SQL upit koji prikazuje podatke o radnicima koji se prezivaju Petrović. <= Manje ili jednako od 6.

Relacioni model Elektronski fakultet u Nišu Treba primetiti da se tekstualni podaci zadaju korišćenjem znaka navoda: "Petrović". Primer 5 Primer sadrži SQL upit koji prikazuje imena i prezimena radnika čija je plata jednaka ili veća od 40000. a ne ispred operatora poređenja. SELECT * FROM RADNIK WHERE Prezime = "Petrović" AND Plata >= 40000. Prezime FROM RADNIK WHERE PLATA >= 40000. NOT 2. logički operator negacije NOT se navodi na početku logičkog izraza. SELECT Ime. NOT A = B je validni WHERE uslov. Logički operatori SQL omogućava korišćenje standardnih logičkih operatore AND. Na primer. ali A NOT = B nije. Primer 6 Ukolimo želimo da prikažemo podatke o radnicima koji se prezivaju Petrović i čija je plata jednaka ili veća od 40000 možemo koristiti SQL upit koji je dat u nastavku.45 - . AND 3. ali i operatore IN i BETWEEN koji omogućavaju jednostavnije korišćenje prethodno navedenih operatora u nekim slučajevima. Međutim. OR i NOT. Prioritet logičkih operatora je sledeći: 1. OR Logički operatori AND i OR se koriste na standardni način.Baze podataka . . kod SQL-a.

SELECT * FROM RADNIK WHERE Prezime IN ("Petrović"."Jovanović"). SELECT * FROM RADNIK WHERE Prezime = "Petrović" OR Prezime = "Jovanović".Baze podataka . Operator NOT IN prikazuje sve vrste osim onih određenih IN listom. SELECT * FROM RADNIK WHERE Prezime = "Petrović" AND NOT Plata >= 40000. Primer 8 Primer sadrži SQL upit koji prikazuje podatke o radnicima koji se prezivaju Petrović ili se prezivaju Jovanović.Relacioni model Elektronski fakultet u Nišu Primer 7 U nastavku je dat SQL upit koji prikazuje podatke o radnicima koji se prezivaju Petrović i čija je plata jednaka ili veća od 40000. Operator IN Operator IN zamenjuje višestruku upotrebu operatora OR i = . Primer 9 Korišćenjem operatora IN izdvajaju se samo radnici koji se prezivaju Petrović ili Jovanović.46 - . .

Ovaj operator omogućava ispitivanje da li je vrednost atributa/kolone u zadatom opsegu. Primer 10 Za prikazivanje podataka o radnicima čija je plata u opsegu od 30000 do 40000 (uključujući i granice opsega) možemo iskoristiti operator BETWEEN.Relacioni model Elektronski fakultet u Nišu Naredni upit pribavlja podatke o svim radnicima osim onih koji se prezivaju Petrović ili Jovanović. SELECT * FROM RADNIK WHERE Plata BETWEEN 30000 AND 40000.Baze podataka .47 - . . SELECT * FROM RADNIK WHERE Prezime NOT IN ("Petrović". Operator BETWEEN Operator BEETWEEN zamenjuje višestruku upotrebu operatora AND i =."Jovanović").

interpunkcijski znak) ili skup znakova. sve radnike koji nemaju slovo "J" u svom prezimenu. odnosno predstavlja uzorak za poklapanje koji sadrži na početku slovo "J" i proizvoljan broj znakova iza njega. SELECT * FROM RADNIK WHERE Prezime LIKE "J*". Operator IS NULL Operator IS NULL se koristi za poređenje sa NULL vrednostima. tj za prethodni slučaj. Može se samo proveravati da li kolona ima NULL vrednost ili nema. Znak pitanja (?) zamenjuje samo jedan znak. Procenat (%) predstavlja bilo koji mogući znak (broj.Baze podataka . Za nalaženje svih radnika koji imaju "J" na početku prezimena. Primer 11 Za zadavanje šablona MS Access koristi nešto drugačije simbole.48 - . Kod definisanja šablona koristi se procenat (%) i znak pitanja (?). Primer U nastavku je dat SQL upit koji izdvaja podatke o svim radnicima kojima nije definisan datum rođenja odnosno datum rođenja ima NULL vrednost. Umesto procenta koristi se zvezdica (*). Operator NOT LIKE prikazuje sve vrste koje ne odgovaraju prethodno datom opisu. Za nalaženje svih radnika koji sadrže slovo "J" negde u prezimenu mogao bi se koristiti šablon "*J*". Obratite pažnju da se ne pravi razlika između malih i velikih slova. slovo. Treba voditi računa da se na NULL vrednosti ne može primeniti ni jedan relacioni operator. SELECT * FROM RADNIK WHERE DatRodj IS NULL. U narednom primeru * iza slova "J" označava proizvoljan broj znakova (0 ili više). . može se koristiti šablon "J%".Relacioni model Elektronski fakultet u Nišu Operator LIKE Operator LIKE omogućava poređenje vrednosti kolone sa zadatim šablonom.

. SELECT * FROM RADNIK ORDER BY Prezime DESC. Rastući redosled je podrazumevan u ORDER BY klauzuli.Baze podataka .49 - .Relacioni model Elektronski fakultet u Nišu Klauzula ORDER BY Klauzula ORDER BY specificira redosled prikazivanja vrste rezultujuće tabele. Obratite pažnju da ukoliko vrste sortirate u rastućem redosledu nije potrebno eksplicitno navesti smer sortiranja. Ukoliko klauzula ODER BY nije navedena vrste u rezultujućoj tabeli su poređane po slučajnom principu i ne postoji nikakva garancije da će isti upit uvek generisati rezultujuću tabelu čije su vrste poređane na isti način. sortiranjem po vrednosti nekih kolona u rastući (ASC) (predefinisana vrednost) ili opadajući redosled (DESC). SELECT * FROM RADNIK ORDER BY Prezime. Primer 13 U nastavku je dat SQL upit koji prikazuje podatke o radnicima i sortira ih prema prezimenu u opadajućem i rastućem redosledu.

. SQL upit u nastavku sortira podatke o radnicima prema broju sektora u opadajućem redosledu a prema prezimenu u rastućem redosledu. SELECT * FROM RADNIK ORDER BY Sektor DESC. Aritmetičke funkcije SQL dozvoljava korišćenje matematičkih funkcija u SELECT i WHERE klauzulama. Prezime.3. Prezime ASC.Baze podataka . Na taj način se kao rezultat pretraživanja mogu prikazati rezultati izračunavanja nekog matematičkog izraza.50 - . SELECT Ime. 3.2.Relacioni model Elektronski fakultet u Nišu Primer 14 Sortiranje je moguće vršiti na osnovu vrednosti više kolona. Plata + 5000 AS PlataSaBonusom FROM RADNIK. Primer 15 U nastavku je dat SQL upit koji prikazuje imena i prezimena radnika kao i njihove plate uvećane za bonus od 5000.

Korišćenje ovih funkcija je jednostavno. Aritmetičke funkcije se mogu primenjivati i u WHERE klauzuli. Plata + 5000 AS PlataSaBonusom FROM RADNIK WHERE Plata + 5000 > 40000.3.nalazi broj vrsta sa različitim vrednostima zadate kolone (nije podržano od strane MS Access-a) .Baze podataka .nalazi minimalnu vrednost atributa MAX(kolona) . Značenje funkcija je sledeće: • • • • • • • AVG(kolona) .51 - . 3.nalazi najveću vrednost atributa COUNT(*) . SELECT Ime. pošto se navode u listi kolona SELECT klauzule koje se prikazuju. Prezime.izračunava srednju vrednost datog atributa SUM(kolona) .Relacioni model Elektronski fakultet u Nišu Obratite pažnju da je rezultatu matematičke funkcije (Plata + 5000) dodeljeno ime korišćenjem sintakse pseudonima: AS PlataSaBonusom.izračunava sumu svih vrednosti atributa MIN(kolona) .3.nalazi broj vrsta u tabeli (grupi) COUNT(kolona) . Funkcije agregacije Funkcije agregacije su dobile naziv po tome što vrše agregaciju rezultata upita.nalazi broj broj vrsta sa ne NULL vrednostima kolone COUNT (DISTINCT kolona) .

prosečnu i ukupnu platu svih radnika. MIN(Plata) AS MinPlata. SELECT MAX(Plata) AS MaxPlata. Primer 17 Posebno je bitno zapamtiti da funkcije agregacije nije moguće koristiti u WHERE klauzuli. Plata FROM RADNIK WHERE Plata > AVG(Plata). Sledeći SQL upit određuje maksimalnu. odnosno nakon obrade predikta koji je zadta u WHERE klauzuli. SUM(Plata) AS UkPlata FROM RADNIK. To je posledica činjenice da se rezultat funkcija agregacija izračunava nakon što se odrede vrste koje ulaze u sastav rezultujuće tabele. .Relacioni model Elektronski fakultet u Nišu Primer 16 Funkcija COUNT određuje broj vrsta u rezultujućoj tabeli. SELECT Ime.Baze podataka . AVG(Plata) AS ProsPlata. minimalnu. U nastavku je dat SQL upit koji se NE MOŽE IZVRŠITI i koji će GENERISATI GREŠKU. Prezime.52 - . SELECT COUNT(*) AS PlataSaBonusom FROM RADNIK.

Nakon toga se pojavljuje prozor Query 1: Select Query i dijalog Show Table (Slika 2). selektujte je i kliknite na dugme Open. na Objects traci izaberite stavku Queries (Slika 1). Programs.mdb datoteku na disku. 3.Relacioni model Elektronski fakultet u Nišu 3. Prikazaće se prozor Query 1: Select Query kao na Slici 3. Slika 1 4. Startujte MS Access .Windows . Izaberite stavku Create Query in Design View. Pronađite PREDUZECE. Za sada nećemo koristiti ovaj alat već ćemo direktno unositi SQL upite. Za primer ćemo uzeti najednostavnij upit koji prikazuje sve podatke iz tabele CUSTOMER. . 5. Korišćenjem dugmeta Close zatvorite Show Table dijalog. Prikazaće se Open dijalog.Baze podataka . 1. pronaći ikonicu za Access 2. SELECT * FROM Customer. Praktični rad: MS Access Rad sa SQL programskim jezikom u okviru MS Access-a se bazira na korišćenju Query objekata u SQL View režimu.53 - . Kada se pojavi Security Warning dijalog. Obratite pažnju na SQL View dugme na toolbar-u. kliknite dugme Open da bi ste otvorili bazu podataka. U prozoru PREDUZECE:Database.4. U meniju izaberite stavku File | Open. Ovaj prozor se koristi za kreiranje upita korišćenjem MS Access QBE alata.

.54 - .Relacioni model Elektronski fakultet u Nišu Slika 2 Slika 3 6. Obratite pažnju da je komanda SELECT već započeta. Prozor Query 1: Select Query se prebacuje u SQL View režim rada (Slika 4). Kliknite na SQL View dugme na Query Design toolbar-u.Baze podataka .

Baze podataka .55 - . Elektronski fakultet u Nišu Slika 4 Slika 5 8.Relacioni model 7. 9. Ukoliko je sve u redu prikazuje se rezultat upita kao na Slici 6. Kliknite na dugme Run na Query Design toolbar-u. Unesite komandu SELECT * FROM Customer kao na Slici 5. . Pojaviće se Save As dijalog kao na Slici 7. Da bi ste snimili upit izaberite dugme Save na Query Design toolbar-u.

Objekat Test se sada pojavljuje u listi Query objekata (Slika 8). 11. Upit je snimljen i ime prozora je sada promenjeno u skladu sa novim imenom upita.Relacioni model Elektronski fakultet u Nišu Slika 6 Slika 7 10.Baze podataka .56 - . Zatvorite prozor Test : Select Query. Za ime upita unesite Test i kliknite na dugme OK. .

Napisati SQL upit koji prikazuje imena svih projekata koji su locirani u Pirotu i čije ime počinje slovom P. Napisati SQL upit koji prikazuje imena i pol svih članova porodice koji imaju srodstvo "sin".Relacioni model Elektronski fakultet u Nišu Slika 8 Pitanja za samostalni rad SQL upiti Pokušajte da rešite niz zadataka koji je dat u nastavku. Modifikovati upit iz tačke 2 tako da se podaci sortiraju u opadajućem redosledu po lokacijama na kojima se nalaze. . Napisati SQL upit koji prikazuje imena svih projekata čije ime počinje slovom P. 9. 4. Napisati SQL upit koji određuje imena i prezimena svih radnika čija bi plata nakon povećanja od 10% bila veća od 40000. 3. 10. Napisati SQL upit koji prikazuje nazive svih projekata koji postoje u preduzeću. 12. Napisati SQL upit koji određuje spisak različitih srodstava koje imaju članovi porodice. Napisati SQl upit koji prikazuje imena svih projekata koji su locirani u Nišu.57 - . 6. 5. Napisati SQL upit koji prikazuje kompletan sadržaj tabele SEKTOR. Napisati SQL upit koji određuje prosečnu zaradu za radnike koji rade u sektoru broj 4. Za rešavanje koristite bazu podataka PREDUZEĆE koje je priložena uz ovaj materijal. 2. 11.Baze podataka . 7. 8. Napisati SQL upit koji za projekte locirane u Nišu ili Leskovcu prikazuje njihova imena i brojeve sektora koji su zaduženi za njih. 1. Napisati SQL upit koji za tip srodstva “sin” određuje broj članova porodice koji imaju taj tip srodstva. lokacije na kojima se nalaze i brojeve sektora koji su zaduženi za njih.

upoznaćemo se i sa mogućnostima kombinovanja rezultata većeg broja SQL upita. Takođe. U prethodnoj lekciji smo obradili osnovne oblike SELECT naredbe i videli kako naredba može da se koristi za pribavljanje podataka iz jedne tabele. Naredba SELECT II 4.Relacioni model Elektronski fakultet u Nišu Lekcija 4 Sadržaj Naredba SELECT II • o o o Neophodno predznanje Klauzule GROUP BY i HAVING Primena o o Spajanje tabela Dekartov proizvod (cross-join) Unutrašnji spoj (inner-join) Levi spoljašnji spoj (left-outer join) Desni spoljašnji spoj (right-outer join) Potpuni spoljašnji spoj (full-outer join) Primena o o Kombinovanje rezultata više SQL upita Pitanja za samostalni rad 4.1.58 - . U ovoj lekciji upoznaćemo se sa mogućnošću grupisanja podataka po različitim kriterijumima. Videćemo kako je u rezultujućoj tabeli moguće kombinovati podatke iz nekoliko različitih tabela. Naučiti osnove korišćenja naredbe SELECT za pretraživanje podataka u većem broju tabela. . Ciljevi lekcije • • • • Upoznati se sa mogućnostima SELECT naredbe za generisanje sumarnih informacija. Upoznati se sa različitim tipovima spoja koji mogu da postoje između tabela.Baze podataka . Upoznati se sa mogućnošću kombinovanja rezultata većeg broja upita. U ovoj lekciji će biti obrađene naprednije teme vezane za korišćenje SELECT naredbe za pretraživanje i pribavljanje podataka iz relacione baze podataka.

Atribut je praktično imenovana kolona relacije odnosno tabele. Klauzule GROUP BY i HAVING U prethodnoj lekciji upoznali smo se sa funkcijama agregacije. Naredba SELECT SQL naredba koja se koristi za pribavljanje podatke iz jedne tabele ili više povezanih tabela koje se nalaze u relacionoj bazi podataka.2. SQL Programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u Sistemima za upravljanje relacionim bazama podataka (Relational Database Management Systems . Torka relacije Vrsta relacije.59 - . Referencijalni integritet Ako postoji neki spoljni ključ u relaciji.RDBMS).Baze podataka . koje se odnose na svojstva objekta predstavljenog relacijom. Neophodno predznanje Relacija Tabela sa vrstama i kolonama. Spoljni ključ / Strani ključ Atribut ili skup atributa jedne relacije koji se uparuje sa ključem kandidatom neke druge ili iste relacije. za kreiranje i modifikacija šema relacione baze podataka i za kontrolu pristupa objektima baze podataka. Time se povećava vrednost funkcija agregacije jer se u .Relacioni model Elektronski fakultet u Nišu 4. njegova vrednost mora biti jednaka vrednosti ključa kandidata neke torke u matičnoj relaciji ili njegova vrednost mora biti NULL. Atribut relacije Predstavlja osobinu entiteta predstavljenog relacijom. Ove funkcije imaju zadatak da omoguće generisanje sumarnih informacija na osnovu podataka u relacionoj bazi podataka. Klauzula GROUP BY ima zadatak da omogući grupisanje vrsta u rezultujućoj tabeli na osnovu zajedničkih vrednosti.3. 4.

Baze podataka - Relacioni model

Elektronski fakultet u Nišu

kombinaciji sa GROUP BY klauzulom mogu primenjivati na grupe vrsta a ne samo na čitavu rezultujuću tabelu. Primer 1 Potrebno je voditi računa, da ukoliko ne postoji GROUP BY klauzula, u SELECT klauzuli nije moguće kombinovati funkcije agregacije sa imenima kolona. U nastavku je dat SQL upit koji NE MOŽE DA SE IZVRŠI i koji će dovesti do POJAVE GREŠKE. SELECT Ime, Prezime, SUM(Plata) FROM RADNIK; Ovaj upit je moguć samo uz upotrebu GROUP BY klauzule. Klauzula GROUP BY zahteva od DBMS-a da izvrši sortiranje rezultujuće tabele prema specificiranim kolonama i izvrši grupisanje vrsta koje imaju iste vrednosti za specificirane kolone. Ukoliko su prisutne funkcije agregacije one će se primeniti na tako dobijene grupe. Tek uz prisustvo GROUP BY klauzule moguće je u SELECT klauzuli kombinovati imena kolona i funkcije agregacije. Bitno je da napomenuti da se klauzula GROUP BY izvršava nakon klauzule WHERE odnosno da se grupisanje vrši tek nakon što su određene vrste koje treba da uđu u sastav rezultujuće tabele.

Primer 2 U nastavku je dat primer SQL upita koji za svaki sektor računa broj radnika koji rade u njemu. Za grupisanje radnika po broju sektora u kome radi iskorišćena je GROUP BY klauzula. SELECT Sektor, COUNT(*) FROM RADNIK GROUP BY Sektor;

Klauzula HAVING omogućava filtriranje rezultata dobijenih korišćenjem GROUP BY klauzule. Ova klauzula primenjuje uslov filtriranje na formirane grupe.

Primer 3 SQL upit iz prethodnog primera je modifikovan, korišćenjem HAVING klauzule, tako da su prikazani podaci samo o sektorima koji imaju više od jednog radnika. - 60 -

Baze podataka - Relacioni model SELECT Sektor, COUNT(*) FROM RADNIK GROUP BY Sektor HAVING COUNT(*) > 1;

Elektronski fakultet u Nišu

Primena Klauzule GROUP BY i HAVING je moguće kombinovati sa WHERE klauzulom. Pri tome treba voditi računa o redosledu izvršavanja (isti je redosled po kome se klauzule ređaju prilikom pisanja SELECT naredbe): 1. WHERE - primenjuje se predikat koji određuje vrste koje ulaze u sastav rezultujuće tabele 2. GROUP BY - vrši se grupisanje vrsta u rezultujućoj tabeli 3. HAVING - primenjuje se predikat koji određuje vrste koje će ostati u rezultatu upita 4. ORDER BY - sortiranje rezultata se vrši tek na kraju SELECT Sektor, COUNT(*) AS BrojRadnika FROM RADNIK WHERE Pol = 'Ž' GROUP BY Sektor HAVING COUNT(*) > 1;

Prilikom korišćenja klauzule GROUP BY, sve kolone koje su navedene u klauzuli SELECT a na koje nije primenjena neka funkcija agregacije, MORAJU BITI NAVEDENE U GROUP BY KLAUZULI. U suprotnom SQL upit neće moći da se izvrši.

Primer 4 Klauzulu GROUP BY je moguće primeniti istovremeno na veći broj kolona. Pri tome su kriterijum za formiranje grupa zajedničke vrednosti u specificiranim kolonama. Prilikom formiranja grupa vodi se računa i o redosledu po kome su kolone za grupisanje navedene (kao da se formiraju grupe sa podgrupama u okviru njih). - 61 -

Baze podataka - Relacioni model SELECT Sektor, Pol, COUNT(*) AS ProsekPlata FROM RADNIK GROUP BY Sektor, Pol ORDER BY AVG(Plata);

Elektronski fakultet u Nišu

4.4. Spajanje tabela
Svi SQL upiti koje smo do sada razmatrali su koristili podatke iz samo jedne tabele. Često se javlja situacija da se tražena informacija nalazi u većem broju tabela. U takvim situacijama potrebno je izvršiti spajanje vrsta iz različitih tabela i generisanje rezultujuće tabele. Za pribavljanje podataka iz većeg broja tabela dovoljno je u klauzuli FROM navesti imena tabela iz kojih želimo da pribavimo podatke. Da bi spajanje tabela bilo uspešno, osim u nekim specijalnim slučajevima, potrebno je da navedemo uslov spoja, odnosno da navedemo kolone na osnovu čijih vrednosti se vrši spajanje vrsta iz različitih tabela. Spajanje tabela se vrši tako što se najčešće uparuje strani ključ iz jedne tabele sa primarnim ključem koji referencira u drugoj tabeli (Videti ograničenja stranog ključa u Lekciji 2 Videti šta će biti naslov lekcije 2). Uslov spajanja može da se zada u okviru WHERE klauzule ili korišćenjem ključne reči JOIN u okviru FROM klauzule. Spoj na jednakost (equi-join) obezbeđuje spajanje podataka iz dve ili više tabela na osnovu jednakosti odgovarajućih atributa, obično na osnovu primarnih i spoljnih ključeva. Najjednostavniji slučaj navođenja spoja je kada se u WHERE klauzuli specificira uslov spoja po jednakosti. Dekartov proizvod je slučaj kada u WHERE klauzuli ne postoji uslov spoja, a u FROM klauzuli je navedeno više tabela. U tom slučaju nema spajanja vrsta po vrednosti nekog atributa, već se pravi kombinacija svake vrste iz jedne tabele sa svakom vrstom iz druge tabele (u slučaju Dekartovog proizvoda dve tabele) Spoljni spoj (outer-join) omogućava spajanje dve tabele po vrednosti nekog atributa (kao kod equi-join), ali i uključivanje onih torki (vrsta) iz jedne ili druge tabele (ili iz obe), koje ne zadovoljavaju uslov jednakosti. Da bi bolje razumeli različite tipove spoja koristićemo tabele RADNIK i SEKTOR ali u nešto jednostavnijem obliku. Pojednostavljene verzije tabela, RADNIK1 i SEKTOR1, su date u nastavku. Za svaki tip spoja daćemo oba oblika navođenja uslova spoja: i korišćenjem WHERE klauzule i korišćenjem ključne reči JOIN u klauzuli FROM. - 62 -

4.Relacioni model Elektronski fakultet u Nišu Tabela 1 Modifikovana tabela RADNIK Tabela 2 Modifikovana tabela SEKTOR 4. Primer 5 Prilikom korišćenja Dekartovog proizvoda tabela treba voditi računa da sintaksa CROSS JOIN nije podržana od strane MS Access-a.1. SELECT * FROM SEKTOR1 CROSS JOIN RADNIK1. .63 - . SELECT * FROM SEKTOR1. Dekartov proizvod (cross-join) Dekartov proizvod dve tabele (A CROSS JOIN B) se dobija tako što se svaka vrsta iz jedne tabele kombinuje sa svakom vrstom iz druge tabele. RADNIK1.Baze podataka .

Relacioni model Elektronski fakultet u Nišu 4.2. U SQL upitima koji su dati u nastavku taj pristup je iskorišćen za kolone SEKTOR1.4. Ukoliko vrsti iz tabele A odgovara više vrsta tabele B ona se u rezultatu ponavlja više puta (po jednom za svaku odgovarajuću vrstu u tabeli B). Potrebno je obezbediti mehanizam koji će DBMS-u precizno specificirati kolonu koju želite da referencirate. Prilikom spajanja dve tabele (A INNER JOIN B) uzimaju se sve vrste iz tabele A i pronalazi im se odgovarajuća vrsta u tabeli B. Isti pristup treba primeniti i za klauzulu SELECT ukoliko se javi sličan problem. SELECT * FROM SEKTOR1. Ovaj tip spoja. definiše presek vrsta iz tabela koje učestvuju u spoju.64 - .Broj i RADNIK1.Sektor mada nije bilo neophodno jer kolone imaju različita imena. Unutrašnji spoj (inner-join) Inner join predstavlja najčešće korišćeni tip spoja. RADNIK1 . u osnovi. U takvim situacijama se koristi sintaksa IME_TABELE. Primer 6 Prilikom spajanja tabela treba voditi računa o tome da kolone u različitim tabelama mogu imati ista imena. Ukoliko vrsta iz tabele A nema odgovarajuću vrstu u tabeli B ne uključuje se u rezultat.IME_KOLONE.Baze podataka .

4. Primer 7 SELECT * FROM SEKTOR1 LEFT OUTER JOIN RADNIK1 ON SEKTOR1. Kolone iz tabele B u ovom slučaju imaju vrednost NULL. SELECT * Elektronski fakultet u Nišu FROM SEKTOR1 INNER JOIN RADNIK1 ON SEKTOR1.Broj = RADNIK1.Sektor. Ovaj tip spoja pred vrsta koje uključuje unutrašnji spoj i vrste iz tabele A (leve tabele) koje nemaju odgovarajuću vrstu u tabeli B (desnoj tabeli).Sektor. Levi spoljašnji spoj (left-outer join) Left-outer join u osnovi predstavlja prošireni inner-join.Sektor.Relacioni model WHERE SEKTOR1. .4.Broj = RADNIK1.65 - .Baze podataka .3.Broj = RADNIK1.

66 - .Broj = RADNIK1. . Poptpuni spoljašnji spoj sadrži vrste iz obe tabele (i iz A i iz B) koje nemaju odgovarajuće slogove u drugoj tabeli. SELECT * FROM SEKTOR1 FULL OUTER JOIN RADNIK1 ON SEKTOR1. 4.4.Sektor.4. Primer 8 SELECT * FROM SEKTOR1 RIGHT OUTER JOIN RADNIK1 ON SEKTOR1. Primer 9 MS Access ne podržava FULL OUTER JOIN sintaksu koja je korišćena u narednom SQL upitu.5. Potpuni spoljašnji spoj (full-outer join) Full outer join predstavlja kombinaciju rezultata koje vraćaju left outer i right outer join.4.Broj = RADNIK1.Relacioni model Elektronski fakultet u Nišu 4.Baze podataka . Desni spoljašnji spoj (right-outer join) Right outer join funkcioniše kao i left outer join samo je sada uloga tabela promenjena. Desni spolja[nji spoj u rezultat uključuje vrste iz tabele B (desne tabele) koje nemaju odgovarajuću vrstu u tabeli A (levoj tabeli).Sektor.

Obratite pažnju da je kod ovog upita iskorišćena mogućnost da se tabelama dodele pseudonimi. Broj tabela iz kojih izvlačimo podatke nije ničim ograničen.Naziv. obratite pažnju da sada podatke izvlačimo iz tri tabela: RADNIK.Relacioni model Elektronski fakultet u Nišu Primena Primer 10 U nastavku je dat SQL upit koji prikazuje imena sektora i broj radnika koji rade u njima. Spajanje tabela u ovom upitu izvedeno je korišćenjem WHERE klauzule. Primer 11 Sledeći SQL upit za sve žene radnike određuje imena projekata na kojima su angažovane.Radnik i . COUNT(*) AS BrojR FROM SEKTOR1 AS S INNER JOIN RADNIK1 AS R ON S.Broj. S. RADI_NA i PROJEKAT.Broj.Baze podataka . S. Potrebno je voditi računa da spojevi između tabela budu definisani na odgovarajući način kako bi dobili željene podatke.Naziv. Kako je već napomenuto spoj se najčešće definiše između spoljašnjeg ključa u jednoj tabeli i primarnog ključa koji se referencira u drugoj tabeli (RADI_NA. Takođe.Broj=R.Sektor GROUP BY S.67 - . Obratite pažnju da WHERE klauzula pored uslova spoja može da sadrži i uslove kojima se selektuju vrste koje će ući u rezultujuću tabelu. SELECT S.

Naziv. .Broj).Broj = RN. Za spajanje različitih tabela mogu se kombinovati različiti tipovi spoja. RADI_NA. R.Projekat i PROJEKAT.Projekat = P.Prezime. Primer 12 Naredni SQL upit za svaki sektor daje ukupan broj radnih sati koje radnici provode na projektima za koje je taj sektor zadužen.MatBr. SELECT S. RADI_NA RN.Radnik AND RN. SUM(Sati) AS SatiUkupno FROM (SEKTOR AS S INNER JOIN PROJEKAT AS P ON S.Projekat GROUP BY S. S.68 - .Naziv.Baze podataka . PROJEKAT P WHERE R.MatBr. R.Naziv FROM RADNIK R.Broj AND R. MS Access zahteva da spojevi između tabela budu grupisani korišćenjem zagrada.Broj = P. SELECT R.Pol = "Ž".Ime. S.Sektor) INNER JOIN RADI_NA AS RN ON P.MatBr = RN.Broj.Broj.Relacioni model Elektronski fakultet u Nišu RADNIK. P.

Klauzula INTERSECT vraća samo vrste koje se javljaju u rezultujućim tabelama svih SQL upita koji se kombinuju. redosledu (odgovarajuće kolone se nalaze na istim pozicijama) i tipu (odgovarajuće kolone moraju imati kompatibilne tipove). RADNIK WHERE Broj = Sektor AND Prezime = 'Jovanović' UNION . Klauzula MINUS vraća samo one vrste koje se javljaju u rezultatu provg SQL upita ali se ne javljaju I u rezultatima ostalih SQL upita. Rezultati upita koji se kombinuju moraju imati kolone koje se slažu po broju (isti broj kolona).Baze podataka .Broj=RADNIK1. Primer 14 U nastavku je dat SQL upit koji vraća nazive sektora u kojima rade radnici koji se prezivaju Petrović i Jovanović.Relacioni model Elektronski fakultet u Nišu 4. Klauzula UNION kombinuje rezultate dva ili više upita u jednu rezultujuću tabelu. SELECT Naziv FROM SEKTOR. presek (INTERSECT) i razlika (MINUS).5. SELECT * FROM SEKTOR1 LEFT OUTER JOIN RADNIK1 ON SEKTOR1.69 - .Sektor. Kombinovanje rezultata više SQL upita Programski jezik SQL dozvoljava kombinovanje rezultata većeg broj SQL upit korišćenjem operacija za rad sa skupovima: unija (UNION).Broj=RADNIK1.Sektor UNION SELECT * FROM SEKTOR1 RIGHT OUTER JOIN RADNIK1 ON SEKTOR1. Primer 13 SQL upit u nastavku koristi klauzulu UNION da bi implementirao full-outer join koji nije podržan u MS Access-u.

70 - . Primer 16 Ukoliko želimo da dobijemo podake o radnicima koji rade u sektoru Administracija a plata im je manja od 40000. RADNIK WHERE Broj = Sektor AND plata > 40000. Prezime FROM SEKTOR. SELECT MatBr. Elektronski fakultet u Nišu Primer 15 U sledećem primeru imamo SQL upit koji korišćenjem klauzule INTERSECT određuje podatke o radnicima koji rade u sektoru Administracija I koji imaju platu veću od 40000. upit iz prethodnog primera treba modifikovati takod a se umesto klauzule INTERSECT koristi klauzula MINUS. . Ime. MS Access ne podržava klauzulu MINUS.Baze podataka . Ime. Prezime FROM SEKTOR.Relacioni model SELECT Naziv FROM SEKTOR. RADNIK WHERE Broj = Sektor AND Naziv = 'Administracija' INTERSECT SELECT MatBr. MS Access ne podržava klauzulu INTERSECT. RADNIK WHERE Broj = Sektor AND Prezime = 'Petrović'.

RADNIK Elektronski fakultet u Nišu WHERE Broj = Sektor AND Naziv = 'Administracija' INTERSECT SELECT MatBr.71 - . Napisati SQL upit koji za svaki broj sektora računa prosečnu i maksimalnu platu radnika koji rade u tom sektoru. Napisati SQL upit koji određuje brojeve sektora koji su zaduženi za dva i više projekta. naziv i broj angažovanih radnika. 2. Za rešavanje koristite bazu podataka PREDUZEĆE koje je priložena uz ovaj materijal. 7. 3.Relacioni model SELECT MatBr. 5. Napisati SQL upit koji za svakog radnika prikazuje ime. Napisati SQL upit koji za svaki projekat prikazuje njegov broj. Napisati SQL upit koji za svaki tip srodstva određuje broj članova porodice koji imaju taj tip srodstva. Ime. RADNIK WHERE Broj = Sektor AND plata > 40000. 9. . Modifikovati upit iz zadatka 7 tako da se prikazuju samo podaci o projektima koji imaju više od jednog angažovanog radnika. Napisati SQL upit koji za svaki broj sektora određuje broj projekata koji su zaduženi za taj sektor. Ime. 10.Baze podataka . 6. pol i naziv sektora u kome rade. 4. Napisati SQL upit koji za svaki projekat određuje ime i prezime rukovodioca sektora koji je zadužen za taj projekat. Prezime FROM SEKTOR. Napisati SQL upit koji određuje imena i prezimena radnika koji rade u sektoru broj 4 i nemaju nijednog člana porodice. 1. Pitanja za samostalni rad SQL upiti Pokušajte da rešite niz zadataka koji je dat u nastavku. Napisati SQL upit koji prikazuje imena i prezimena radnika koji imaju više od jednog člana porodice. 8. prezime. Prezime FROM SEKTOR.

.Kreiranu tabelu povezati sa tabelom RADNIK . broj radnih dana).Napisati SQL upit koji za svaki broj sektora računa prosečnu i maksimalnu platu radnika koji rade u tom sektoru.. godina u kojoj se godišnji odmor koristi. 11:35 Krajnji rok za predaju: Četvrtak. Zadatak: Relacione baze podataka i SQL Kao osnovu projekta potrebno je iskoristiti postojeću bazu podataka PREDUZEĆE (ova baza podataka je išla kao prateći materijal uz lekcije o SQL-u). .72 - . .Modifikovati upit iz tačke 6 tako da se podaci sortiraju u opadajućem redosledu prema nazivu sektora. U ovoj tabeli se za svakog radnika pamte informacije kako je tokom godine koristio svoj godišnji odmor (matični broj radnika.Napisati SQL upit koji prikazuje kompletan sadržaj tabele SEKTOR. Napisati SQL upit koji određuje imena i prezimena radnika koji se ne nalaze na poziciji šef sektora. Zadaci: . 18. Primarni ključ tabele su matični broj radnika i datum početka godišnjeg odomora.Baze podataka . Dostupan od: Utorak. . datum početka godišnjeg odmora. 12. Napisati SQL upit koji određuje imena i prezimena radnika koji rade u sektoru broj a angažovani su na projektima koji su u nadležnosti sektora broj 5.Napisati SQL upit koji za svaki projekat prikazuje njegov broj.Kreiranu tabelu napuniti fiktivnim podacima . Juni 2009.. datum završetka godišnjeg odmora. 22:35 . naziv i broj angažovanih radnika. 9.Kreirati tabelu GODISNJI_ODMORI.Preuzeti MS Access verziju baze podataka PREDUZEĆE . .Relacioni model Elektronski fakultet u Nišu 11. Juni 2009.Napisati SQL upit koji određuje imena i prezimena svih radnika čija bi plata nakon povećanja od 10% bila veća od 40000.

1. U ovoj lekciji ćemo obraditi ostatak DML naredbi odnosno obradićemo naredbe koje omogućavaju modifikaciju podataka u relacionoj bazi podataka.73 - . Ažuriranje podataka (izmena vrednosti kolona u postojećim vrstama tabele) 3.Baze podataka . Postoje tri moguće operacije za modifikovanje podataka: 1. Ciljevi lekcije • • • • Upoznati se sa SQL naredbom za dodavanje novih podataka Upoznati se sa SQL naredbom za ažuriranje podataka Upoznati se sa SQL naredbom za brisanje podataka Upoznati se sa SQL naredbama za izmenu strukture relacione baze podataka U prethodne dve lekcije smo se uglavnom bavili naredbom SELECT koja omogućava pretraživanje i pribavljanje podataka iz relacione baze podataka.Relacioni model Elektronski fakultet u Nišu Lekcija 5 Sadržaj SQL naredbe za manipulaciju podacima • o o o o o o o Neophodno predznanje Dodavanje novih podataka Dodavanje novih podataka korišćenjem upita Ažuriranje podataka Brisanje podataka Modifikacija šeme relacione baze podataka Brisanje tabele Modifikacija tabele Pitanja za samostalni rad o 5. Brisanje podataka (brisanje vrsta iz tabele) Pored DML naredbi za ažuriranje podataka u ovoj lekciji će biti obrađene i DDL naredbe koje omogućavaju izmenu šeme relacione baze podataka. SQL naredbe za manipulaciju podacima 5. Dodavanje novih podataka (dodavanje novih vrsta u tabelu) 2. odnosno posvetićemo pažnju naredbama koje omogućavaju brisanje i modifikaciju tabela u relacionoj bazi podataka. .

. pri čemu svaka ima različito ime. Naredba INSERT. Sadrži ime relacije.RDBMS). imena atributa i domene atributa. za kreiranje i modifikacija šema relacione baze podataka i za kontrolu pristupa objektima baze podataka.Baze podataka .74 - . 5.INTO. VarChar(15) DEFAULT "Niš". Neophodno predznanje Relacija Tabela sa vrstama i kolonama.. Relaciona baza podataka Kolekcija normalizovanih relacija. Integer NOT NULL. Vrednosti kolona se definišu zadavanjem vrednosti u obliku konstanti ili korišćenjem rezultata SQL upita. Šema relacione baze podataka Skup šema relacija. CONSTRAINT ProjekatPK PRIMARY KEY (Broj). Ova tabela je kreirana korišćenjem sledeće CREATE TABLE naredbe: CREATE TABLE PROJEKAT ( Broj Naziv Lokacija Sektor Int.INTO dodaje nove vrste u tabelu relacione baze podataka. VarChar(25) NOT NULL. . Dodavanje novih podataka Za dodavanje podataka u tabelu koristi se SQL naredba INSERT.3. CONSTRAINT NadlezanFK FOREIGN KEY (Sektor) REFERENCES SEKTOR(Broj) ).. SQL Programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u Sistemima za upravljanje relacionim bazama podataka (Relational Database Management Systems . Svi primeri u nastavku će biti razmatrani za slučaj tabele PROJEKAT.INTO naredbe. Šema relacije Predstavlja opis relacije..2.Relacioni model Elektronski fakultet u Nišu 5. U zavisnosti od načina zadavanja vrednosti kolona postoje različiti oblici INSERT..

Iz definicije možemo zaključiti da je lista kolona opciona. .. moguće je promeniti redosled zadavanja kolona u odnosu na onaj koji je specificiran u CREATE TABLE naredbi. "ProizvodX". vrednosti kolona. 5). Lokacija) VALUES("ProizvodX".. Takođe. "Niš").]) ..)] VALUES (<vrednost_kolone1> [{. moraju biti kompatibilne po tipu sa tipovima podataka koji su za kolone navedeni prilikom kreiranja tabele.75 - .Baze podataka . Primer 1 SQL naredba kojom se dodaje nova vrsta u tabelu PROJEKAT. Lista kolona u pojedinim slučajevima ne mora biti kompletna. Sektor. Za istovljene kolone se upisuje podrazumevana vrednost definisana DEFAULT ograničenjem ili se upisuje NULL vrednost ukoliko DEFAULT ograničenje ne postoji.INTO naredbe koji se koristi u situacijama kada se vrednosti kolona zadaju korišćenjem konstanti.INTO kod koje je specificirana lista kolona. <vrednost_kolone2>}... Broj.. INSERT INTO PROJEKAT VALUES( 1. INSERT INTO PROJEKAT (Naziv.INTO naredbi zadaje lista kolona.Relacioni model Elektronski fakultet u Nišu U nastavku je dat oblik INSERT.. Ukoliko je lista kolona izostavljena. u listi vrednosti kolona moraju se navesti vrednosti za svaku kolonu koja postoji u tabeli u koju se dodaje nova vrsta. Dodaju se informacije o projektu čiji je broj 1. 1. Iz liste se mogu izostaviti kolone kod kojih nije definisano NOT NULL ograničenje i kolone koje imaju definisano DEFAULT ograničenje. Primer 2 Ukoliko se u INSERT. lociran je u Nišu i za njega je zadužen sektor čiji je broj 5. Naredba INSERT. U tom slučaju lista vrednosti kolona mora da odgovara redosledu kojim su kolone navedene prilikom kreiranja tabele (u CREATE TABLE naredbi).. 5.. "Niš". INSERT INTO <ime_tabele> [(<ime_kolone1> [. zove se ProizvodX.<ime_kolone2>].

3. Redosled i tip kolona u rezultujućoj tabeli upita mora da odgovara redosledu i tipu kolona u listi. INSERT INTO <ime_tabele> [(<ime_kolone1> [. CHECK. INSERT INTO PROJEKAT (Naziv. 'Niš').. Broj.1. Dodavanje novih podataka korišćenjem upita Ukoliko se vrednosti kolona zadaju korišćenjem upita. Vrednosti kolona se sada ne zadaju kako konstante već se zadaju kao rezultujuća tabela nekog upita. Pošto je u tabeli za tu kolona definisano DEFAULT ograničenje. INSERT INTO PROJEKAT (Naziv.. Sektor. Da DEFAULT ograničenje ne postoji u kolonu Lokacija bi bila upisana vrednost NULL.Relacioni model Elektronski fakultet u Nišu Primer 3 U narednom primeru iz liste kolona je izbačena kolona Lokacija. 5. Sektor..76 - . Ukoliko bar jedno ograničenje nije zadovoljeno DBMS će prijaviti poruku o grešci. prilikom dodavanja nove vrste u tu kolonu će biti upisana vrednost 'Niš'. Prilikom dodavanja nove vrste u tabelu biće proverena sva ograničenja koja su definisana nad tabelom: primarni ključ. Broj. naredba INSERT.. . Sektor..INTO naredba koja koristi SQL upit da bi u tabelu PROJEKAT dodala podatke iz fiktivne tabele PROJEKAT1. Broj. Lokacija FROM PROJEKAT1. Lokacija) SELECT Naziv. NOT NULL.. 1. U ovom slučaju za listu kolona važe ista pravila kao i u prethodnim situacijama. Lokacija) VALUES('ProizvodX'. Primer 4 INSERT.)] <upit>.Baze podataka ..INTO ima nešto drugačiji oblik. 5..<ime_kolone2>].

Plata. Rukovodilac. INSERT INTO RADNIK (MatBr. Sektor) VALUES( 987987987.. Plata. "B". 4). "Stojić". Pol. 5300. 4). Rukovodilac. Ime. "Savić".77 - . 2300. INSERT INTO RADNIK (MatBr.. Ime. Prezime. 3500. 3800. Pol. Pol. 5). Plata. "Jelena". 4). Prezime. DatRodj. INSERT INTO RADNIK (MatBr. "Ratko". "E". Prezime. Ime. "Ž". DatRodj. Rukovodilac. Rukovodilac. "08/12/1945". Rukovodilac. NULL."19/07/1958". "Ivan". "Janković". Prezime. 3000. Prezime. "Milica". Sektor) VALUES( 3334455555. DatRodj. "M". . Sektor) VALUES( 999887777. 5500.Relacioni model Elektronski fakultet u Nišu Primer 5 U nastavku su date INSERT. "Veljković". 888665555. 987654321. 333445555. "M". Plata. Prezime. "A". DatRodj. "J". Sektor) VALUES( 456456456. "Voja".Baze podataka . 5). Sektor) VALUES( 888665555. "M". "Perić". "31/07/1962".INTO naredbe za punjenje test podacima tabele RADNIK. "Ana". "M". "29/03/1959". Pol. 5). Pol. INSERT INTO RADNIK (MatBr. 888665555. "09/01/1955". Rukovodilac. 5). 2500. "Đorđe". Ime. Plata. Ime. DatRodj. "20/06/1965". "Ž". 987654321. Ime. DatRodj. "Petrović". Plata. INSERT INTO RADNIK (MatBr. 6000. "S". Rukovodilac. Prezime. INSERT INTO RADNIK (MatBr. Plata. 3334455555. "K". "Vasić". 333445555. Plata. DatRodj. "M". "Marković". "V". Ime. Pol. Pol. "Ž". INSERT INTO RADNIK (MatBr. DatRodj. Ime. Sektor) VALUES( 666884444. "Jovan". Prezime. INSERT INTO RADNIK (MatBr. Pol. "09/01/1955". Rukovodilac. "T". 5). Sektor) VALUES( 123456789. "15/09/1952". Sektor) VALUES( 987654321.

Korišćenjem UPDATE..] [WHERE <uslov>].SET naredbe moguće je istovremeno menjati vrednosti većeg broja kolona. Ako se navede WHERE klauzula. Izraz može bti konstantna vrednost..Baze podataka .Relacioni model Elektronski fakultet u Nišu 5. vrednost nekog izraza ili vrednost koju vraća SQL upit. UPDATE PROJEKAT SET Lokacija = "Beograd" WHERE Broj = 5.<ime_kolone> = <izraz>.SET naredba da bi se lokacija projekta čiji je broj 5 promenila na vrednost "Beograd". LAKO MOŽEMO DA IZMENIMO I VRSTE KOJE NISMO ŽELELI DA MENJAMO. Ključna reč SET definiše u kojoj se koloni menja vrednost definisana zadatim izrazom.. Treba biti jako oprezan prilikom korišćenja UPDATE. ODNOSNO DA IZGUBIMO NEKE DRAGOCENE PODATKE. UKOLIKO SE U PRETHODNOM PRIMERU IZOSTAVI WHERE KLAUZULA ILI USLOV NIJE DOBRO DEFINISAN. Primer 6 U ovom primeru se koristi UPDATE.78 - ..SET naredbe. Osnovni oblik ove komande je dat unastavku. U sledećem primeru svi projekti koji u nazivu sadrže reč Proizvod se premeštaju u Niš u nadležnost sektora broj 4...4..SET. UPDATE <ime_tabele> SET <ime_kolone> = <izraz> [. Ažuriranje podataka Za ažuriranje podataka se koristi SQL naredba UPDATE... . ažuriranje se vrši samo za kolone koje ispunjavaju navednost nekog navedenog uslova..

Primer 7 SQL naredba koja je navedena u nastavku iz tabele RADNIK briše podatke o svim radnicima čije prezime počinje slovom 'S'.Baze podataka . Brisanje podataka Za brisanje podataka iz relacione baze podataka koristi se naredba DELETE. Uslov koji navedete u WHERE definiše kriterijume za selekciju torki koje treba obrisati iz zadate tabele. . DELETE FROM PROJEKAT. Ukoliko izostavite uslov ili je uslov neadekvatno definisan može doći do trajnog brisanja podataka koje nismo želeli da obrišemo. DELETE FROM RADNIK WHERE Prezime LIKE 'S*'.Relacioni model UPDATE PROJEKAT SET Lokacija = 'Niš'. NAREDBA DELETE BRIŠE SVE VRSTE IZ TABELE ČIJE SE IME NAVEDE U FROM KLAUZULI. Zbog toga treba biti jako oprezan prilikom korišćenja naredbe DELETE. U svom osnovnom obliku naredba DELETE ima sledeću sintaksu: DELETE FROM <ime_tabele> [WHERE <uslov>].5. Sektor = 4 WHERE Naziv LIKE 'Proizvod*'. AKO SE NE NAVEDE WHERE KLAUZULA.79 - . Elektronski fakultet u Nišu 5. Primer 8 SQL naredba u nastavku briše podatke o svim projektima.

Iz tabele SEKTOR biće obrisani podacai o sektoru čiji je naziv 'Administracija' . U OVOM SLUČAJU DBMS AUTOMATSKI BRIŠE SVE PODATKE KOD KOJIH MOŽE DOĆI DO NARUŠAVANJA REFERENCIJALNOG INTEGRITETA. odnosno brisanje tabele nije moguće ukoliko u bazi podataka postoje ograničenja stranog ključa koja referenciraju tabelu koju želimo da obrišemo. Za razliku od prethodnog slučaja gde će DBMS sprečiti brisanje da ne bi došlo do narušavanja referencijalnog integriteta. Brisanje tabele Za brisanje tabela iz relacione baze podataka koristi se naredba DROP TABLE.u tabeli RADNIK postoji definisano ograničenje stranog ključa nad kolonom Sektor i ovo ograničenje referencira primarni ključ u tabeli SEKTOR. i da pokušamo da obrišemo podatke o sektoru čiji je naziv 'Administracija'. 5. Prilikom korišćenja ovih naredbi potrebno je da budemo jako oprezni kako greškom. 2. Možemo za primer uzmemo tabele RADNIK i SEKTOR iz baze podataka PREDUZEĆE. Ovo je još jedan razlog više zbog čega treba biti jako oprezan prilikom korišćenja DELETE naredbe.6.u tabeli RADNIK ne postoji definisano ograničenje stranog ključa nad kolonom Sektor koje referencira primarni ključ u tabeli sektor. DBMS će sprečiti brisanje tabele u slučaju da to dovodi do narušavanja referencijalnog integriteta.80 - . 3.Relacioni model Elektronski fakultet u Nišu Primer 9 Prilikom korišćenja naredbe DELETE treba voditi računa i o efektima koji mogu da se jave kao posledica postojanja ograničenja stranog ključa.6. . ili usled nepažnje ne bi obrisali neke objekte ili podatke koji su nam od značaja. Ova naredba briše strukturu tabelu zajedno sa svim podacima koji se u tabeli nalaze.1. DELETE FROM SEKTOR WHERE Naziv = "Administracija". DBMS će prijaviti grešku i neće izvršiti brisanje . Brisanje u ovom slučaju nije moguće jer bi u tabeli RADNIK dobili vrste koje referenciraju nepostojeći sektor čime bi bio narušen referencijalni integritet.Baze podataka . Izvršavanjem ove naredbe moguće je da se javi jedna od naredne tri situacije: 1. Iz tabele SEKTOR biće obrisani podacai o sektoru čiji je naziv 'Administracija' ali će i iz tabele RADNIK biti obrisani podaci o radnicima koji rade u sektoru 'Administracija' . Modifikacija šeme relacione baze podataka Postoji veliki broj SQL DDL naredbi koje omogućavaju izmenu šeme relacione baze podataka. 5.u tabeli RADNIK postoji ograničenje stranog ključa nad kolonom Sektor i strani ključ je definisan korišćenjem opcije ON DELETE CASCADE.

Primer 12 SQL naredba koja u tabelu PROJEKAT dodaje novo ograničenje. 2).2.Relacioni model Elektronski fakultet u Nišu Primer 10 U ovom primeru je data naredba koja briše tabelu RADNIK zajedno sa svim podacima koji se u tabeli nalaze. 2) NOT NULL DEFAULT 10000. Modifikacija tabele Za modifikaciju strukture tabela koristi se naredba ALTER TABLE. Prilikom dodavanja nove kolone ne možemo odmah primeniti NOT NULL ograničenje jer bi u tom slučaju ograničenje odmah bilo narušeno. 5. dodaju se neophodni pdoaci pa se tek naknadno dodaje ograničenje. . ALTER TABLE PROJEKAT DROP CONSTRAINT NadlezanFK. Naredba ALTER TABLE se može primeniti i za brisanje kolona iz tabele. DROP TABLE RADNIK. ALTER TABLE PROJEKAT DROP COLUMN VrednostProjekta. Primer 11 SQL naredba koja u tabelu PROJEKAT dodaje novu kolonu.81 - .Baze podataka . ALTER TABLE PROJEKAT ADD VrednostProjekta NUMERIC(10. Naredba ALTER TABLE se može primeniti i za brisanje ograničenja iz tabele. Zbog toga se kolona dodaje bez NOT NULL ograničenja.6. ALTER TABLE PROJEKAT MODIFY VrednostProjekta NUMERIC(10.

Napisati SQL naredbu koja sve podatke iz tabele PROJEKAT kopira u tabelu PROJEKAT1. 2. Napisati SQL naredbe kojom se u tabelu PROJEKAT dodaju podaci o dva nova projekta. Napisati SQL upit koji iz tabele RADI_NA briše podatke o angažovanju radnika čiji je matični broj 333445555. 3. Napisati SQL naredbu kojom se tabeli projekat dodaje nova kolona VREDNOST.82 - . Sami definišite podatke za nove projekte. Napisati SQL naredbu kojom se svi projekti sa lokacije Pirot sele na lokaciju Leskovac. 1. 9. 4. Napisati SQL naredbu kojom se svi projekti koji su bili u nadležnosti sektora 4 prebacuju u nadležnost sektora Uprava. 8. Napišite SQL upit kojim se svim radnicima plata povećava za 10%. 10. Napraviti tabelu PROJEKAT1 koja je idntična kopija tabele PROJEKAT. Napisati SQL upit kojim se projekat broj 3 seli u Beograd i prelazi u nadležnost sektora broj 4.Relacioni model Pitanja za samostalni rad Elektronski fakultet u Nišu SQL naredbe Pokušajte da rešite niz zadataka koji je dat u nastavku. 7. 5.Baze podataka . . Napisati SQL upit kojim se briše ograničenje primarnog ključa u tabeli RADI_NA. 6. Za rešavanje koristite bazu podataka PREDUZEĆE koje je priložena uz ovaj materijal. Petrović. Napisati SQL upit koji za tabele CLAN_PORODICE briše sve podatke o članovima porodice radnika koji se zove Marko J.

1.2. Osnovne komponente Access aplikacija 6.83 - . Neophodno predznanje • • • Rad u Windows okruženju Relacione baze podataka Poznavanje osnovnih funkcija MS Access-a kao DBMSa .Baze podataka . Ciljevi lekcije • • • • Da se upoznamo sa osnovama kreiranja formi korišćenjem MS Access-a.Relacioni model Elektronski fakultet u Nišu Lekcija 6 Sadržaj Osnovne komponente Access aplikacija • o o o o Neophodno predznanje Uvod Izrada i korišćenje formi Kreiranje formi korišćenjem Form Wizard-a Modifikovanje strukture forme Izrada i korišćenje izveštaja o o o o Sličnosti i razlike formi i izveštaja Osnovni tipovi izveštaja u Access-u Kreiranje izveštaja korišćenjem Report Wizard-a Početno grupisanje i sortiranje podataka Izrada i korišćenje makroa Pokretanje i izvršenje makroa Dodavanje akcija makroa Filtriranje podataka korišćenjem makroa Kreiranje aplikacije u Access-u Pitanja Zadatak o o o 6. Da se upoznamo sa osnovama kreiranja izveštaja korišćenjem MS Access-a Da se upoznamo sa osnovama kreiranja makroa korišćenjem MS Access-a Da se upoznamo sa osnovama kreiranja aplikacija korišćenjem MS Access-a 6.

Baze podataka . Korišćenjem ovih mehanizama moguće je jako efikasno kreirati apliakcije koje se po svojim funkcionalnostima neće u mnogome razlikovati od aplikacija razvijenih korišćenjem bilo kog višeg programskog jezika. Na ovaj način moguće je kreirati aplikacije koje kao izvor podataka koriste udaljene baze podataka.Relacioni model Elektronski fakultet u Nišu 6. pored razvoja. Sistem koji upravlja bazom podataka može posedovati generatore upita. makroa i izveštaja. i testiranje aplikacija i smislu debagiranja ukoliko se prilikom razvoja koriste makroi. Svaka od navedenih tipova komponenti može biti razvijena nekim programskim jezikom ili korišćenjem alata baza podataka koji omogućavaju automatizaciju generisanja ovih komponenti. Bez obzira na tehnologiju korišćenu za njihovo razvijanje. forme i izveštaje. Java. formi i izveštaja i paru sa bazom podataka kojoj upravlja neki drugi sistem za upravljanje bazama podataka poput MS SQL Server-a. poput Active Server Pages (ASP) ili Java Server Pages (JSP). Pojedine baze koristi svega nekoliko formi ili izveštaja. ili neke od tehnologija za kreiranje standardnih desktop aplikacija. kakav je slučaj kod Access-a. Mehanizmi ugrađeni u Access skraćuju vreme izrade aplikacija i dozvoljavaju.NET. Sa druge strane mnoge od baza podataka koriste se putem poziva uskladištenih procedura i trigera. Access poseduje veliki broj mehanizama koji automatizuju kreiranje osnovnih komponenti aplikacija: formi. Uvod Baze podataka se razlikuju kako u pogledu veličine tako i u pogledu broja korisnika koje opslužuju.84 - .3. . aplikacije koje koriste podatke smeštene u nekoj bazi podataka za svoje osnovne komponente imaju upite. druge koriste aplikacije zasnovane na korišćenju Internet tehnologija. formi i izveštaja. Princip korišćenja baza podataka od strane aplikacija razvijenih različitim tehnologijama i različiti slučajevi korišćenja baze podataka uopšte prikazani su na slici. Neke baze podataka i dalje koriste apliakcije razvijene u COBOL programskom jeziku ili nekom od novijih programskih jezika poput Visual Basic . C# i ostalih. Prednost korišćenja Access-a može se ogleda se u činjenici da je moguće koristiti njegove mehanizme za kreiranje aplikacija tj upita.

Raspored polja na formi uradite tako da se unos podataka ili operacija izmene vrši sa leva na desno i odozgo na dole. Izgled wizard-a prikazan je na slici. 6. Form Wizard gradi osnovnu strukturu forme i dodaje okvire za kontrole za prikazivanje i izmenu vrednosti stavki podataka. Odabirom opcije Forms iz glavnog Database prozora i odabirom opcije New moguće je pokrenuti Form Wizard.85 - . Kontrole su komponente koje se vide u prozorima i okvirima za dijalog Access i ostalih Windows aplikacija.4. . Kreiranje formi korišćenjem Form Wizard-a Najlakši način da izradite formu je korišćenje Form Wizard-a.1. oni nude niz prednosti predstavljanja podataka na organizovan i atraktivan način.4. Mada koristite izglede Table i Query da izvršite iste funkcije kao i sa formama. Izrada i korišćenje formi Access-ove forme (forms) prave korisnički interfejs prema tabelama.Relacioni model Elektronski fakultet u Nišu 6. Pravilno projektovana forma ubrzava unos podataka i smanjuje greške pri kucanju.Baze podataka . Forme su napravljene od skupa pojedinačnih elemenata strukture koji se zovu kontrole. Korišcenje Form Wizard značajno štedi vreme kreiranja strukturu osnovne forme. Form Wizard omogućava izradu forme koja sadrži polja iz jedne ili više tabela ili upita.

86 - .Baze podataka . Moguće je odabrati kolone iz više tabela pri čemu će se zadržati veza između podataka iz različitih tabela. moguće je odabrati stil prikaza podataka na formi i tip tabelarnog prikaza podataka. Za svaku od formi neophodno je definisati naziv. za ulaz ili izmenu vrednosti podataka svake od odabranih kolona tabele. svako sa odgovarajućom oznakom. Kada Form Wizard završi izradu formi. Pored odabira kolona koje će bit prikazane na formi. . Form Wizard pravi forme a onda ih automatski snima. ali se može poboljšati delimičnim podešavanjem rasporeda. Osnovna forma koju je napravio Form Wizard je odmah upotrebljiva.Relacioni model Elektronski fakultet u Nišu Form wizard omogućava odabir kolona iz tabela koje je potrebno prikazati na formi. Na glavnoj formi Form Wizard stvara jedno tekstualno polje. on prikazuje glavnu formu.

Traka Form Footer definiše visinu sekcije podnožja forme. Na traci Form Detail su kontrole koji prikazuju podatke iz tabela i upita i statički elementi podataka. sadrži dugmad koja su prečice za boju. grafičke likove i ostale kontrole koji se pojavljuju na vrhu forme.4. nazvanu kutija sa alatima. Linija alata Formating. Form Footer se pojavljuje samo jednom. Zaglavlje se pojavljuje samo na prvoj strani forme sa više strana. tekst. za verziju Access za SAD u inčima. Modifikovanje strukture forme Modifikovanje strukture forme ostvaruje se odabirom Form Design moda rada.87 - . Ako štampate formu sa više strana. Vertikalne i horizontalne trake za pomeranje. Form Header/Footer. ili ih izbrisati. gde je maksimalno povećan prozor za strukturu. Pokretanjem ovog moda pojavljuje se prozor Form Design. Formi možete dodati sekcije Form Header i Form Footer. Prozor Form Design ima sledeće osnovne elemente: • • • • • • Linija alata Form Design. Forme se mogu podeliti u tri sekcije: Form Header (zaglavlje forme). kao što su oznake i zaštitni znaci. Sekcija Form Header sadrži statički tekst. Skup vertikalnih i horizontalnih lenjira. i u centimetrima za verzije Accessa za zemlje gde se koristi metrički sistem. Možete kliknuti i odvući ovu liniju na novu lokaciju. Traka Form Header definiše visinu sekcije zaglavlja forme. . Sekcija Form Footer je slična sekciji Form Header.Relacioni model Elektronski fakultet u Nišu 6. koja omogućava dodavanje nove kontrole na formu. Plivajući prozor.Baze podataka .2. ivice i različite druge opcije formatiranja. Traka Form Detail odvaja Form Header od ostatka forme. Detail (sekcija Detalja) i Form Footer (podnožje forme) prikazane na slici 6. Ovo se primenjuje samo ako izaberete da formi dodate zaglavlje i podnožje. biranjem View. Zaglavlja i podnožja su opciona. Vertikalna linija postavlja desnu marginu forme. Horizontalna linija koja predstavlja donju marginu forme. sadrži dugmad koja su prečice za biranje menija u režimu Form Design. koje omogućavaju da vidite delove forme van granica prozora forme. sadrži neučvršćenu liniju alata. Funkcije dugmadi i njihovih ekvivalentnih izbora sa menija su prikazani u tabelama u sledećoj sekciji. Liniju za marginu pomerate tako što je kliknete i odvučete na željenu lokaciju. koji se pojavljuje u režimu Form Design.

.Baze podataka . Prethodno je neophodno selektovati kontrole koje je potrebno pomeriti. Poravnanje selektovanih kontrola vrši se izborom jedne od Align opcija podmenija Format glavnog menija Access-a. Detail. Kod Accessa. Povlačenjem pokazivača podešava se veličinu sekcije iznad pokazivača miša. izveštaj je specijalna vrsta neprekidne forme. ili Form Footer. ili koji ga zahtevaju. Access kombinuje podatke u tabelama i upitima tako da možete štampati i distribuirati onima kojima je potreban. Podrazumevani prikaz dizajna forme prikazuje kontrole u rešetki (grid-u) pa je pomeranje kontrole i promenu njene veličine moguće vršiti na osnovu tačaka rešetke. moguće je koristi neki od ugrađenih stilova korišćenjem AutoFormat opcije iz linije alata. Svaka kontrola koja se nalazi na formi dozvoljava promenu svoje veličine.5. 6. Osim manuelnih promena stila prikaza kontrola. U formatiranom prikazu moguće je naknadno promeniti redosled prikaza odabranih kolona tabele korišćenjem Tab Order opcije. Izrada i korišćenje izveštaja Izveštaj je krajnji proizvod većine aplikacija baza podataka. Kada postavite pokazivač miša na gornju ivicu trake za podelu sekcije. pretvara se u liniju sa dve vertikalne strelice. Moguće je vršiti promenu pozicija grupe kontrola. projektovanog za štampanje.Relacioni model Elektronski fakultet u Nišu Visinu sekcije možete izmeniti povlačenjem mišem vertikalnih traka Form Header.88 - .

a unutar sekcija grupe zavisnu grafiku.Relacioni model Elektronski fakultet u Nišu 6. Nezavisni izveštaji (unbound reports). Izgled samolepljive nalepnice robe na kojoj štampate. određuje koliko redova i kolona ima na stranici. koji se zovu izgledi (layout): • • • • • • Izveštaji sa jednom kolonom (single-column reports). obezbeđuju kolonu za svako polje tabele ili upita i štampanje vrednosti svakog polja zapisa u redovima ispod zaglavlja kolone. a okvir za tekst. ali ima ograničenu upotrebu.Baze podataka . uključujući sledeće: • • • • • Report Wizards. Dodajete Group Headers koji uključuju naziv za svaku grupu. Tabelarni izveštaji (tabular reports). Vrednost osnovnih podataka za izveštaj ne možete izmeniti. kao što su tabele ili upiti. 6. projektovane za štampanje imena i adresa ili drugih podataka iz više polja. Osnovni tipovi izveštaja u Access-u Postoji šest osnovnih tipova izveštaja napravljenih u Accessu.1. . i zaglavlja i podnožja stranice koja se štampaju na vrhu i dnu svake stranice. Informacije koje ne stanu u prvu kolonu prelaze na drugu kolonu. Izveštaji Access imaju mnoge zajedničke karakteristike sa formama. i Group Footers za štampanje grupnih podzbirova. primenjuje se i kod izveštaja. Oni sabiraju podatke za grupe zapisa i onda dodaju ukupni zbir na kraju izveštaja. Controls (kontrole) su dodati izveštajima iz okvira sa alatima Accessa i onda pomereni. prave tri osnovne vrste izveštaja: sa jednom kolonom. Sličnosti i razlike formi i izveštaja Većina metoda za izradu formi za transakcione obrade. Grupe se često nazivaju pojasi (bands). Format više kolonskih tabela troši manje papira. sadrže zaglavlja i podnožja izveštaja koja se pojavljuju jednom na početku i na kraju izveštaja. Svaka grupa polja čini ćeliju u rešetki. sadrže podizveštaje zasnovane na nepovezanim izvorima podataka. Bitne su dve osnovne razlike između formi i izveštaja: • • Izveštaji su namenjeni samo za štampanje i za razliku od formi. U sekcije zaglavlja i podnožja možete staviti statičku (nezavisnu) grafiku. Oznaka pokazuje ime polja. Poštanske nalepnice (mailing labels) su posebna vrsta višekolonskih izveštaja. jer poravnavanje kolona nije onakvo kakvo se želi.5. Višekolonski izveštaji (multicolumn reports) se prave iz izveštaja sa jednom kolonom. obezbeđuje vrednosti. kao celina. Podnožje izveštaja se često koristi za štampanje ukupnog zbira. Group sections (sekcije grupe) izveštaja. nisu namenjeni za pregled podataka u prozoru. Izveštaji po grupama i zbirovima (groupsltotals reports) su najčešća vrsta izveštaja. a proces grupisanja zapisa formiranje pojasa (banding). navode u jednoj dugoj koloni okvira za tekst vrednosti svakog polja u svakom zapisu tabele ili upita. i Subreports (podizveštaji) se ugraduju u izveštaje na isti način na koji se kontrole podforme dodaju u glavne forme.89 - .2. koristeći novinsku kolonu aplikacije stonog izdavaštva i obrade teksta. izveštaje po grupama i zbirovima i poštanske nalepnice. i tako redom.5. u grupama. Sekcije izveštaja odgovaraju sekcijama forme sličnih imena. njihova veličina se menja pomoću ručica. Sections (sekcije). obuhvataju ekvivalenat sekcije Detail forme. desno od oznake.

Iz tabele ili upita biraju se kolone koje će biti prikazane u izveštaju. moraju biti zavisni u odnosu na izvor podataka. izveštaji zahtevaju izvor podataka. . Nakon odabira opcije za kreiranje izveštaja potrebno je odabrati Report Wizard način kreiranja izveštaja. Report Wizard omogućava da pravite izveštaje koji sadrže podatke iz više tabela. koji može biti tabela ili upit. Glavni izveštaj nekog nezavisnog izveštaja nije vezan na tabelu ili upit kao izvor podataka. Za ovu vrstu izveštaja se kaže da su zavisni u odnosu na izvor podataka. međutim. Slično Form Wizard.5.90 - .Baze podataka . Slično formama.Relacioni model Elektronski fakultet u Nišu Prva četiri tipa izveštaja koriste tabelu ili upit kao izvor podatak. 6. Kreiranje izveštaja korišćenjem Report Wizard-a Najlakši način kreiranja izveštaja je korišćenje Report Wizard-a. Podizveštaji koji su u nezavisnom izveštaju. kao što to rade forme.3. bez da prethodno napravite upit. Prednost korišćenja Report Wizard je što uvodi teme strukture izveštaja Access i što su koraci u ovom procesu paralelni sa koracima koji se čine pri počinjanju sa inicijalno praznim izveštajem.

jedinstvena vrednost mora predstavljati svaku kategoriju.91 - . .Baze podataka . Okvir za dijalog Sorting and Grouping omogućava izmenu ovih svojstava da u režimu projektovanja izveštaja. Metod koji se koristi za grupisanje podataka zavisi od podataka u polju preko kojih se vrši grupisanje. Report Wizard obezbeđuje svojstava za početno grupisanje i sortiranje podataka. Formatiranje prikaza izveštaja posebno je bitno jer je svrha izveštaja njihovo pregledavanje i štampanje pa će u ovim situacijama svaki pogrešno postavljeni objekat bilo vrlo uočljiv. Kada se grupisanje vrši preko opsega vrednosti. Access posebno smešta stilove definisane za forme i za izveštaje pa je za izveštaje moguće kreirati posebne stilove. Početno grupisanje i sortiranje podataka Većina kreiranih izveštaja zahteva organizovanje podataka u grupe i podgrupe.5. Prilikom formatiranja izveštaja moguće je koristiti ugrađene stilove na isti način kao kod formatiranja izgleda formi. Kada se grupisanje vrši po kategorijama. podesiti razmak između redova.4. Zbog toga je prilikom pripreme izveštaja za pregledavanje i štampu u Access-u moguće poravnati i formatirati kontrole. Takođe korišćenjem ovog dijaloga moguće je menjati red grupisanja. 6. u stilu sličnom rasporedu kod knjige.Relacioni model Elektronski fakultet u Nišu Nakon prolaska kroz sve korake Report Wizard-a. ali mogu biti i alfabetske. Korišćenjem Sorting and Grouping dijaloga moguće je odrediti kategorije po kojima se vrši grupisanje. poravnati kontrole horizontalno i vertikalno. Report Wizard pravi izveštaj i prikazuje ga u režimu pogleda za štampanje. one su obično numeričke. podesiti margine izveštaja i slično.

itd. alfabetskih lista za pomaganje čitaocima u traženju posebnog zapisa. Za razliku od makroa drugih Windows aplikacija. Potrebno je osobine Group On postaviti na Interval i postaviti Group Interval na 3. Mada su vrednosti ograničene.6. D do F. Ovo postavlja grupe podataka u imena koja počinju sa A do C.Baze podataka . makroi u Access-u se ne koriste za dupliranje pritisaka tastera ili pomeranja miša. a da svaka grupa sadrži vrednosti kateroje u opsegu od po tri sloca (A do C. Makro je zapravo mali program koji omogućava ponovno izvršenje odgovarajućih akcija.92 - . Ako je potrebno podeliti izveštaj i grupisati ga po kategoriji koja ima tekstualne vrednosti. D do F. i tako dalje.). alfabetsko grupisanje je često korisno za grupisanje dugih. Izrada i korišćenje makroa Marko je jedan od objekata koje je moguće kreirati i koristiti u okviru Access aplikacije koja se oslanja na korišćenje baze podataka. 6. Ukupan broj dostupnih komandi za koje je moguće kreirati makroe u Access-u je relativno mali – skup komandi sastoji se od 56 komandi.Relacioni model Elektronski fakultet u Nišu Često je potrebno sortirati izveštaje po opsegu vrednosti. unosi u okviru za dijalog Sorting and Grouping mogu da izgledaju kao unosi na slici 12. Svaka od komandi poseduje naziv koji opisuje njenu funkcionalnost. . Funkcija Accessa VBA =Asc([Ime]) vraća ASCII (numeričku) vrednost prvog karaktera njegovog argumenta niza. Izgled okruženja za kreiranje makroa prikazan je na slici.

Kolona Action omogućava izbor akcije koja će se izvršiti prilikom pokretanja makroa. Ručno Iz nekog drugog makroa Iz nekog drugog objekta poput forme Automatski prilikom pokretanja baze podataka Makro je moguće pokrenuti ručno na više načina.1. Akcije se izvršavaju odozgo naniže. Primer objekta bilo bi dugme za čiji bi se OnClick događaj (ovaj događaj se desi svaki put .6. marko je moguće pokrenuti izborom pocije Run u podmeniju Run glavnog menija okruženja.Baze podataka . potrebno je izabrati ime makroa i pokrenitu makro korišćenjem Run dugmeta. Ova opcija se prikazuje izborom opcije Conditions iz podmenija View glavnog menija Access-a. 2. Pokretanje odgovarajućeg makroa moguće je vezati i za druge objekte u sistemu. U slučaju kada se makro posmatra u modu kada je moguće promeniti osobone makroa (eng. design view).Relacioni model Elektronski fakultet u Nišu Kolona MacroName omogućava uključivanje više makroa pod jednim makroom baze podataka. Ova opcija obično se koristi prilikom grupisanja povezanih makroa. zatim izborom opcije Macro podmenija Tools i izborom opcije Run Macro podmenija Macro (Tools -> Macro -> Run Macro) pri čemu je potrebno uneti ime makroa koji se pokreće. Ova akcija pokreće makro čije ime je definisano u delu Macro Name. Ukoliko je otvoren osnovni prozor Access okruženja. Kolona Comment daje prostor za opis makroa. Ova opcija se prikazuje izborom opcije Macro Name iz podmenija View glavnog menija Access-a. Pokretanje makroa vezuje se za događaje odgovarajućeg objekta koji bi trebalo da dovedu do pokretanja makroa.93 - . Makro je moguće pokrenuti iz drugog makroa odabirom akcije RunMacro. Kolona Condition omogućava unos uslovnog izraza koji određuje u kojim situacijama će posmatrani makro biti izvršen. 4. Pokretanje i izvršenje makroa Makroe je moguće pokrenuti na više načina: 1. 6. Akcije obuhvaćene makroom će biti izvršene u situacijama kada je ispunjen uslov zadat izrazom tj kada izraz ima vrednost true. Takođe moguće je pokrenuti makro iz glavnog menija okruženja izborom podmenija Tools. 3.

Prilikom definisanja makroa moguće je odrediti argumente potrebne za izvršenje akcija makroa. Mod u kome se makro izvršava korak po korak naziva se “Single Step” mod. Korak po korak izvršenje makroa je posebno korisno u situacijama kada se izvršenje makroa ne desi na očekivani način. Akcije je moguće ukloniti iz makroa brisanjem imena akcije iz odgovarajućeg reda u prozoru za dizajniranje makroa ili korišćenjem opcije Delete Rows podmenija Edit glavnog menija okruženja. Svaki od redova prikazanih u delu za dizajniranje tj izmenu karakteristika makroa. Dodavanje akcija makroa Akcije makroa je moguće dodati na više načina. Zatim je neophodno pokrenuti izvršenje makroa izborom Run opcije. Ukoliko se prilikom izvršenja desi greška. Ovaj mod dozvoljava da se izvršava jedna po jedna akcija makroa sa pauzama u izvršenju između akcija kako bi se posmatrali i analizirali rezultati izvršenja svake od akcija. Nakon izbora tipa objekta. Kod pojedinih akcija koje makro može da izvršava argumenti su neophodni dok su kod drugih opcioni. Izgled ovakvog prozora prikazan je na slici 15.6. koja vrši zatvaranje nekog od trenutno aktivnih objekata. Access će u Object Name delu prozora izlistati imena svih objekata čiji tip odgovara tipu selektovanom u Object Type delu prozora.Baze podataka . Pri izvršenja ovakvog makroa. Primer izvršenja makroa koji otvara formu u ovom modu prikazan je na slici. neophodno je izabrati ime objekta. Ovaj makro poseduje akciju RunMacro koja pokreće odabrani makro prilikom pokretanja okruženja. može biti iskorišćen za dodavanje akcije. Ovaj objekat predstavlja argument izvršenja makroa. Eventualno snimanje objekta određuje se odabirom odgovarajuće opcije u Save delu prozora.3. Takođe. prikazaće se Action Failed dijalog. 6.Relacioni model Elektronski fakultet u Nišu kada korisnik pritisne dugme) vezalo izvršenje makroa. Potrebno je kreirati makro pod imenom AutoExec. neophodno je izabrati objekat čije se zatvaranje vrši. Kako bi što bolje simulirali izvršenje programskih struktura. Ukoliko bi se za akciju makroa odabrala Close akcija.94 - . moguće je pokrenuti makro prilikom pokretanja okruženja. Neophodno je izabrati tip objekta čije zatvaranje vrši Close akcija posmatranog makroa u Object Type delu prozora. moguće je dodati akciju u makro. Close akcija će izvršiti zatvaranje selektovanog objekta. Argument makroa moguće je selektovati u Action Arguments delu prozora za izmenu i dodavanje akcija makroa. Kako bi se pokrenuo ovaj mod neophodno je otvoriti prozor za izmenu karakteristika makroa (Design View) i odabrati Single Step opciju iz Run podmenija glavnog menija aplikacije. korišćenjem opcije Insert Rows iz podmenija Insert glavnog menija okruženja. neophodno je odrediti da li se objekat koji se zatvara akcijom Close snima. . Takođe. makroe je moguće izvršavati korak po korak. Takođe.

Osim podataka smeštenih u bazi podataka. Izgled korišćenja Expression Builder-a prikazan je na slici. 6.6.4.Relacioni model Elektronski fakultet u Nišu Kako bi se kontrolisao tok izvršenja pojedinih akcija ili filtrirali podaci koje je potrebno prikazati ili štampati. otvaranje i zatvaranje padajuće liste i sl. pokrenuće se i izvršenje makroa koji je vezan za taj događaj. korišćenjem makroa moguće je filtrirati podatke smeštene u bazi podataka. Access poseduje predefinisani skup funkcija koje je moguće koristiti za filtriranje podataka. Filtriranje podataka vezuje se za akcije unutar makroa. Ova opcija sadrži izraz na osnovu koga se vrši filtriranje podataka.) poseduje predefinisani skup sistemskih događaja (klik na dugme. Svaka akcija koja poseduje opciju Where Condition ima mogućnost filtriranja podataka. makroi se najčešće vezuju za forme i izveštaje. filtriranje je moguće primeniti na sadržaj pojedinih kontrola ili podskupa padataka prikazanih u formi ili izveštaju. Kada sistem bude detektovao i pokrenuo odgovarajući događaj.) za koje je moguće vezati izvršenje makroa. Where Condition opcija predstavlja ekvivalent WHERE delu standardne SQL SELECT naredbe. padajuća lista i sl. Za definisanje izraza za filtriranje moguće je koristiti Expression Builder formu. Svaka od kontrola (dugme.Baze podataka . makroi se vezuju za kontrole koje poseduju forme i izveštaji.95 - . Tačnije. Korišćenjem ove forme vrši se odabir podataka koji se filtriraju. Filtriranje podataka korišćenjem makroa Osim prostog prikaza. .

) za koje je moguće vezati određene akcije. forme mogu posedovati kontrole. 5.96 - . otvaranje i zatvaranje padajuće liste. kontrole predstavljaju gradivne elemente korisničkog interfejsa svih Access aplikacija. Za svaku aplikaciju neophodno je definisati formu od koje polazi njeno izvršenje. Access poseduje predefinisani skup kontrola koje je moguće dodati na forme. 4.7. ponavljanje akcija. za delimično tačan 1. Pitanja Pokušajte da odgovorite na sledeća pitanja. Kreiranje aplikacija za procesiranje podataka korišćenjem Access-a bazira se na kreiranju određenog broja međusobno povezanih formi i izveštaja. Svaka od kontrola poseduje predefinisani skup događaja (klik na dugme. 1. Korišćenjem makroa moguće je kreirati aplikacije kod kojih postoje uslovna izvršenja obrade i prikaza podataka. čekiranje kontrole i sl. 2.Baze podataka . Makroi pripadaju grupi ovih objekata i najčešće su korišćeni tip objekata za upravljanje tokom obrade podataka. grupisanje akcija obrade podataka i sl. Access svojim korisnicima nudi mogućnost generisanja objekata koji mogu upravljati tokom obrade podataka. Kako bi svojim korisnicima omogućio kontrolu toka izvršenja obrade podataka. Šta predstavljaju forme u Access-u? Od kojih elemenata su sastavljene forme? Koji je najlakši način za kreiranje forme u Access-u? Koje su tri osnovne sekcije formi u Access-u? Čemu služe izveštaji u Access-u? .Relacioni model Elektronski fakultet u Nišu 6. Osnovna komponenta od koje polazi izvršenje svake desktop aplikacije kreirane korišćenjem Access-a je forma. Vezivanjem događaja pojedinačnih kontrola za akcije i makroe. Kreiranje aplikacije u Access-u Access pruža i mogućnost kreiranja baze podataka i aplikacije koja je koristi korišćenjem jedinstvenog radnog okruženja. Kao takve. Pogledajte ponovo one delove lekcije za koje ste imali 0 poena. a za netačan 0. 3. Primer definisanja početne forme aplikacije prikazan je na slici. Za svaki tačan odgovor dodelite sebi 2 poena. Aplikacija može posedovati proizvoljan broj formi. Nakon toga pogledajte ponovo materijal u ovoj lekciji. Kontrole predstavljaju delove korisničkog interfejsa aplikacije i mogu pokrenuti izvršenje određenih akcija. moguće je kreirati aplikacije koje poseduju sve karakteristike desktop aplikacija razvijenih korišćenjem bilo kog višeg programskog jezika. Pored prostog prikaza filtriranih ili nefiltriranih podataka.

Dugme PrikaziClanovePorodice otvara formu ClanPorodice. Forma ClanPorodice prikazuje članove porodice radnika čiji su podaci trenutno prikazani u formi Radnik. Podaci o radnicima čuvaju se u tabeli RADNIK baze podataka PREDUZEĆE. Korišćenjem Form Wizard-a kreirati formu u Access-u koja za svakog radnika prikazuje sledeće podatke: matični broj. 2. 13. prezime. Podaci o radnicima čuvaju se u tabeli RADNIK baze podataka PREDUZEĆE. Navesti primer objekta i događaja posmatranog objekta za koji je vazano izvršenje makroa. Koji je najlakši način za kreiranje izveštaja u Access-u? 8. Na formi Radnik su u jednom trenutku prikazani podaci o jednom od radnika. Ova forma poseduje dugme Zatvori koje zatvara formu i dugme Prikazi izvestaj koje otvara izveštaj ClanPorodiceReport. Šta je makro? 10. srednje slovo.97 - . Navesti jedan od načina za početno grupisanje i sortiranje podataka u izveštajima. Ovaj izveštaj prkazuje podatke o članovima porodice radnika čiji su podaci trenutno prikazani u formi Radnik. Forma Radnik poseduje 3 dugmeta: Sledeci. Šta je neophodno definisati da bi bilo moguće pokretanje Access aplikacije? Zadatak Access aplikacija 1. Koju formu je moguće koristiti za filtriranje podataka korišćenjem makroa? 14.Baze podataka . pokreće se forma Radnik. Kreirati Access aplikaciju koja se sastoji od dve forme: Radnik i ClanPorodice. datum rođenja i adresu. Forma Radnik prikazuje podatke o svakom od radnika i to: ime. Koji je podrazumevani redosled izvršenja komandi u makrou i na koji način je moguće izmeniti ovaj redosled? 11. Dugme Sledeci prikazuje podatke o narednom radniku tj omogućava kretanje kroz podatke o radnicima prelaskom na sledećeg radnika. 9. ime. adresu i platu. srednje slovo. PrikaziClanovePorodice i Zatvori. Koje su dve osnovne razlike između formi i izveštaja? 7. Na koji način je moguće primeniti isti uslov na više akcija jednog makroa? 12. Podaci o članovima porodice radnika čuvaju se u tabeli CLAN_PORODICE baze podataka PREDUZECE. prezime. Prilikom pokretanja aplikacije.Relacioni model Elektronski fakultet u Nišu 6. . Dugme Zatvori zatvara formu Radnik.

NET-a Upoznati se sa ADO. ADO.2.NET-a (kreiranje konekcije ka bazi.NET-a za pristup podacima Pitanja Zadatak o o o 7.Baze podataka .NET 7. DataColumn i DataRow klasa) 7. parametrizacija upita) Upoznati se sa korišćenjem beskonekcionog sloja ADO. DataTable.NET-a (korišćenje DataAdapter. DataSet.NET Data Provider-ima Upoznati se sa direktnim pristupom podacima korišćenjem ADO.NET • o o o o o Neophodno predznanje Uvod ADO.Relacioni model Elektronski fakultet u Nišu Lekcija 7 Sadržaj ADO. korišćenje DataReader objekta. Neophodno predznanje • • • Rad u Windows okruženju Relacione baze podataka Osnove programskog jezika C# .98 - .1. kreiranje SQL komande. Ciljevi lekcije • • • • Upoznati se sa osnovama ADO.NET-a Kreiranje konekcije ka bazi podataka Kreiranje SQL komande Korišćenje DataReader objekta Korišćenje sloja sa raskinutom vezom ADO.NET data provider-i Direktan pristup podacima korišćenjem ADO.

Konekcija sa bazom podataka se i dalje kreira ali je moguće mnogo ranije osloboditi konekciju i učiniti je dostupnom ostalim korisnicima.NET platforme. Svaki sistem za upravljanje bazama podataka (eng. nakon završetka obrade podataka izmenjena je jedino lokalna kopija podataka pa je neophodno ponovo otvoriti konekciju ka bazi podataka kako bi bilo moguće snimiti izmene. ADO.NET-a u odnosu na ADO je podrška ADO. Svaki DBMS poseduje svoj programski interfejs pa je bilo neophodno razviti standarde za pristup bazama podataka kako projektanti aplikacija ne bi morali da koriste različite intefejse u zavisnosti od konkretnog DBMS-a koji koriste.NET ima u potpunosti drugačiji pristup u odnosu na prethodnike. vršiti manipulaciju podacima u bazi podataka.NET-a baziraju se na korišćenju novog objekta pod nazivom DataSet. aplikacije koje pristupaju bazi podataka omogućavaju svojim korisnicima da pretražuju podatke i prikazuju ih u tabelarnom obliku. Programski interfejs (API) predstavlja kolekciju objekata i metoda koji omogućavaju pozivanje funkcija sistema za upravljanje bazama podataka (DBMS-a) iz programskog koda. Ovakav način serijalizacije podataka ima za posledicu da ADO. objektno-orijentisani interfejs koji enkapsulira funkcionalnosti servera baza podataka.Relacioni model Elektronski fakultet u Nišu 7. Naravno. eXtensible Markup Language). Problem je predstavljao ograničeni broj konekcija koje je server baze podataka mogao da pruži korisnicima pa su nakon zauzeća svih dostupnih konekcija ostali korisnici morali da čekaju da se neka od konekcija oslobodi. Ovaj interfejs nisu mogli koristiti projektanti koji su svoje aplikacije razvijali korišćenjem Visual Basic-a i script jezika pa je Microsoft razvio Active Data Object (ADO) interfejs. Uvod Većina trenutno prisutnih aplikacija vrši obradu podataka. Application Program Interface-API) čijim korišćenjem je moguće iz programskog koda odnosno iz aplikacije. Nakon pribavljanja podataka.99 - . Za pristup podacima projektanti aplikacija mogu koristiti različite tehnologije. ADO. Open Database Connectivity (ODBC) standard je razvijen sa ciljem da obezbedi načine za manipulaciju podacima u relacionim bazama podataka koji bi bili nezavisni od konkretnog DBMS-a.NET ima niz karakteristika koje ga razlikuju u odnosu na prethodne tehnologije za pristup podacima. moguće je zatvoriti konekciju pre početka obrade podataka. DataSet predstavlja lokalnu kopiju podataka pribavljenih iz baze podataka i može sadržati više od jedne tabele.NET je naslednik ADO-a i deo je Microsoft-ove . Stalno aktivna konekcija dozvoljavala je trenutne izmene podataka i nadgledanje promena za vreme izvršenja koda. OLE DB je razvijen ne samo za relacione baze podataka već ima i mogućnost korišćenje drugih tipova podataka. Prethodne tehnologije za pristup podacima su pretpostavljale da je veza sa bazom podataka aktivna za vreme izvršenja koda koji vrši obradu podataka.NET-a za predstavljanje podataka korišćenjem XML-a (eng.NET nije ograničen firewallom jer se komunikacija vrši standardnim HTTP protokolom. U prošlosti je razvijeno više standardnih interfejsa za pristup bazama podataka. Podaci pribavljeni iz izvora podataka (relacione baze podataka) se serijalizuju korišćenjem XML-a. U najprostijem slučaju. Funkcionalnosti ADO. Još jedna razlika ADO. ADO.3. . Najčešći način skladištenja i korišćenja uskladištenih podataka je upotreba baza podataka. Database Management System – DBMS) poseduje sopstveni programski interfejs (eng. Microsoft je razvio OLE DB. Razlog je mogućnost pribavljanja kopije podataka iz baze i skladištenja ovih podataka u DataSet objektu. Verovatno najbitnija karakteristika ovog objekta je činjenica da pruža mogućnost manipulacije nad podacima bez potrebe da veza sa bazom podataka bude u svakom trenutku otvorena.Baze podataka . ADO koristi funkcionalnosti OLE DB interfejsa i može biti korišćen iz bilo kog programskog jezika.

Data provider je najlakše posmatrati kao skup tipova objekata definisanih u određenom prostoru imena (eng. Struktura data provider-a . Sve klase konkretnih data provider-a imaju zajedničke roditeljske klase tj izvedene su iz istog skupa klasa i interfejsa.Data prostoru imena. Omogućava pristup DataReader objektu konkretnog data provider-a Omogućava čitanje podataka korišćenjem kursora na serverskoj strani Prenosi DataSet objekte između klijenta i izvora podataka. OdbcConnection ili MySqlConnection). Poseduje konekciju i skup od četiri osnovne operacije za selektovanje.NET platforme prikazana je na slici. IDbDataParameter IDbTransaction Tabela 1: Osnovni objekti ADO. Ove skupove tipova objekata nazivamo data provider-ima.100 - . SqlConnection. s obzirom da je svaki data provider optimizovan za rad sa konkretnim DBMS-om.NET ne poseduje jedinstveni skup tipova objekata koji komuniciraju sa različitim sistemima za upravljanje bazama podataka (DBMS).Baze podataka . Još jedna od prednosti je način komunikacije između data provider-a i DBMS-a. koje se nalaze u System. dodavanje. IDbDataAdapter DataAdapter DbDataAdapter Parameter Transaction DbParameter DbTransaction IDataParameter. izmenu i brisanje podataka u izvoru podataka Predstavlja imenovani parametar u parametrizovanom upitu Enkapsulira transakciju baze podatak DataReader DbDataReader IDataReader. Osnovni objekti ADO.Data.Relacioni model Elektronski fakultet u Nišu 7. svi su izvedeni iz iste klase i implementiraju iste interfejse pa je nakon savladavanja korišćenja jednog od data provider-a relativno jednostavno koristiti sve ostale. Objekat Connection Command Roditeljska klasa DbConnection DbCommand Implementira interfejs IDbConnection IDbCommand Značenje Omogućava otvaranje i zatvaranje konekcije ka bazi podataka Predstavlja SQL upit ili uskladištenu proceduru. Naime. Prednost ovakvog pristupa je mogućnost pojedinačnih data provider-a da imaju mogućnost manipulacije objektima koji su specifični za posmatrani DBMS.4. ADO. ADO. OracleConnection. Svaki od data provider-a optimizovan je za interakciju sa konkretnim DBMS-om. Svaki od data provired-a poseduje skup klasa koje omogućavaju izvršenje osnovnih funkcionalnosti.Common prostoru imena odnosno u System.NET poseduje više skupova tipova objekata koji komuniciraju sa DBMS-im. ADO.NET Data Provider-a Iako će se imena konkretnih objekata svakog od konkretnih Data Provider objekata razlikovati (npr.NET Data Provider tipa objekta prikazani su u tabeli 1.NET data provider-i Za razliku od ADO-a. IDataRecord IDataAdapter. on komunicira direktno sa DBMS-om tj ne postoji međusloj koji bi prilagodio zahteve korisnika konkretnom DBMS-u. . namespace) koji imaju mogućnost direktne komunikacija sa konkretnim DBMS-om.

. DB2.Data je najopštiji.NET Data Provider-i Pored data provider-a koji su ugrađeni u .Data System.101 - . Neki od ovih prostora imena prikazani su u tabeli 3. .NET tipove koje koriste svi data provider-i Sadrži tipove koje dele svi ADO.Data.Data.Data.Data.Data sadrži klase koje su zajedničke za sve data provider-e.Data.Data.Relacioni model Elektronski fakultet u Nišu Microsoft . Data Provider OLE DB Microsoft SQL Server Microsoft SQL Server Mobile ODBC Oracle Prostor imena (namespace) System. Pored predstavljenih prostora imena.NET platforma poseduje skup dodatnih prostora imena koji svojim funkcionalnostima pripadaju skupu ADO.Baze podataka .SqlTypes Značenje Definiše osnovne ADO. moguće je koristiti data provider-e koje obezbeđuju pojedinačni proizvođači besplatnih ili komercijalnih DBMS-ova poput SQLite.Data.Data. Svaka aplikacija koja želi da pristupa podacima korišćenjem ADO.Data.NET prostori imena Od svih ADO. Prostor imena (namespace) System.Data.Data. MySQL.NET platformu.Sql System.SqlClient System.NET prostora imena (namespace-a).Common System. System.Data.Odbc System.dll System.dll System.Data prostora imena.OracleClient Biblioteka System.NET data provider-i Sadrži tipove koji omogućavaju otkrivanje instanci MS SQL Servera u lokalnoj mreži Sadrži tipove podataka koje koristi Microsoft SQL Server Tabela 3: Dodatni ADO.dll System.Data.OracleClient.OleDb System.NET platforma poseduje niz ugrađenih data provider-a za različite DBMSove. System.SqlServerCe. PostgreSQL ili Sybase.NET prostora imena. U tabeli 4 prikazani su osnovni članovi System.dll System.NET-a mora koristiti klase definisane ovim prostorom imena.SqlServerCe System. Spisak ugrađenih data provider-a prikazan je u tabeli 2.dll Tabela 2: Microsoft ADO.

imenu baze kojoj pristupamo i sl. Kreirati Connection. .102 - .1. načinu autentifikacije korisnika. 4.Relacioni model Klasa Constraint DataColumn DataRelation DataRow DataSet Elektronski fakultet u Nišu Značenje Predstavlja ograničenje primenjeno na DataColumn objekat Predstavlja jednu kolonu DataTable objekta Predstavlja roditelj/dete odnos između dva DataTable objekta Predstavlja jedan red u DataTable objektu Predstavlja lokalnu kopiju podataka u memoriji klijentskog računara koji se sastoji od niza povezanih DataTable objekata DataTable Predstavlja lokalnu kopiju tabele baze podataka DataTableReader Omogućava čitanje podataka iz DataTable objekta red po red DataView Predstavlja pogled na tabelu baze podataka i koirsti se za sortiranje.’. Ovakav model je najbliži tradicionalnom ADO programiranju i otklanja probleme konkurentnog izvršenja operacija nad bazom podataka koji se dešavaju kada više korisnika istovremeno izvršava operacije nad istim podskupom podataka. ConnectionString atribut predstavlja formatirani niz karaktera sastavljen od niza ime/vrednost parova odvojenih međusobno karakterom ‘.5. Prilikom kreiranja instance klase Connection neophodno je definisati ConnectionString atribut ove klase. pretraživanje i izmenu podataka Tabela 4: Osnovni članovi System. Ovakav pristup nije efikasan ukoliko je potrebno modifikovati više različitih redova iz jedne ili više tabela.NET-a Najlakši način izvršenja svih operacija nad bazom podataka je direktno izvršenje svih operacija pri čemu se ne vodi računa o lokalnim kopijama podataka. filtriranje. Konekcija ka izvoru podataka u ADO. Command i DataReader objekte Otvoriti konekciju Koristiti DataReader za čitanje podataka iz baze podataka Zatvoriti konekciju 7.Data prostora imena 7. Kreiranje konekcije ka bazi podataka Pre pribavljanja ili izmene podataka neophodno je kreirati konekciju ka izvoru podataka. Ovakav način izvršenja operacija nad bazom podataka je dobro rešenje kada je potrebno pročitati podatke ili izmeniti podake u jednom redu neke od tabela relacione baze podataka. Direktan pristup podacima korišćenjem ADO. U nastavku ja dat primer kreiranja konekcije korišćenjem OLE DB data provider-a. Uobičajeni redosled operacija prilikom pribavljanja podataka korišćenjem ovakvog pristupa sastoji se iz sledećih koraka: 1. Broj raspoloživih konekcija je ograničen pa je potrebno držati konekciju otvorenom što je kraće moguće.5.NET-u enkapsulirana je klasom Connection. 3. 2. Ovaj atribut najčešće sadrži informacije o imenu mašine kojoj pristupamo.Baze podataka .

Objekti klase Connection poseduju skup atributa kojima je moguće upravljati tokom izvršenja transakcija nad bazom podataka i pribaviti informacije vezane za izvor podataka kome se pristupa.OLEDB. Integrated Security ukazuje na način autentifikacije korisnika. U posmatranom slučaju pristupa se korišćenjem Windows korisničkog naloga. Initial Catalog predstavlja ime baze podataka kojoj ćemo pristupati korišćenjem kreirane konekcije. 7. Objekti klase OleDbCommand predstavljaju objektno-orijentisanu reprezentaciju SQL upita.Data Source=c:\\PREDUZECE.4. Ukoliko koristimo SQL Server data provider. komande mogu biti različitog tipa. Kreiranje SQL komande Nakon kreiranja konekcija ka bazi podataka.103 - .Open(). Nakon ekplicitnog poziva funkcije za otvaranje konekcije. Tip komande specificiran je CommandType atributom objekta klase OleDbCommand i može imati neku od vrednosti iz ComandType enumeracije.2. SQL naredbe se izvršavaju korišćenjem instanci klase OleDbCommand tj korišćenjem OleDbCommand objekta. . conn.Relacioni model Elektronski fakultet u Nišu Kreiranje konekcije OleDbConnection conn = new OleDbConnection().ConnectionString = "Provider=Microsoft. otvorena je i aktivna konekcija ka bazi podataka. Data Source ukazuje na ime servera na kome se nalazi baza podataka kojoj pristupamo. Alternativno.mdb".Jet. neophodno je izvršiti SQL naredbe za manipulaciju nad podacima. moguće je proslediti username i password naloga koji želimo da koristimo za pristup bazi podataka. Pre korišćenja konekcije neophodno je eksplicitno otvoriti konekciju: Otvaranje konekcije conn.0. Dakle.5.Close(). imena tabela ili uskladištenih procedura.Baze podataka . Nakon završetka obrade podataka neophodno je zatvoriti konekciju pozivom funkcije za zatvaranje konekcije: Zatvaranje konekcije conn.

Najbitnije metode članice OleDbCommand objekta prikazane su u tabeli.CommandText = strSQL. Prosto kreiranje OleDbCommand objekta.ConnectionString = "Provider=Microsoft. ili bilo koje druge komande ako se koristi neki drugi data provider umesto OLE DB data provider-a. conn.Baze podataka . Text } Prilikom kreiranja komande moguće je navesti SQL upit kao argument konstruktora objekta ili korišćenjem CommandText atributa OleDbCommand objekta. Objekat koji predstavlja komandu je nakon kreiranja samo pripremljen za dalju upotrebu. Metoda Cancel() ExecuteReader() Značenje Poništava izvršenje komande Povratna vrednost funkcije je DataReader objekat izabranog data provider-a ExecuteNonQuery() Izvršava komandu od koje se ne očekuje da kao povratne vrednosti daje podatke ExecuteScalar() Varijanta ExecuteNonQuery() koja kao povratnu vrednost vraća jedan podatak .mdb". ne znači da je SQL upit sadržan u komandi automatski prosleđen na izvršenje. TableDirect.OLEDB.Data Source=c:\\PREDUZECE. Prilikom kreiranja komande neophodno je navesti konekciju koja će se koristiti za izvršenje komande. String strSQL = "Select * from RADNIK". OleDbCommand newComm = new OleDbCommand().Connection = conn.0.4. newComm. Kreiranje komande OleDbConnection conn = new OleDbConnection().104 - .Relacioni model Elektronski fakultet u Nišu Enumeracija tipova komandi public enum CommandType { StoredProcedure. newComm.Jet. Konekciju je moguće navesti kao argument konstruktora objekta ili korišćenjem Connection atributa OleDbCommand objekta.

OLEDB. jedan red rezultujuće tabele podataka pribavlja se korišćenjem Read() metode. U nastavku će biti prikazan deo programskog koda koji izvršava selektovanje svih redova iz tabele RADNIK u bazi podataka PREDUZECE.0. moguće je izvršiti SQL upite koji vrše dodavanje.ExecuteReader(). kreirati komandu koja će izvršiti upit i kreirati DataReader objekat koji će pribaviti podatke. Nakon kreiranje DataReader objekta.105 - .4.Read()) { //programski kod koji vrši obradu pribavljenih podataka } conn. Selektovanje podataka OleDbConnection conn = new OleDbConnection().Data Source=c:\\PREDUZECE. Ukoliko se koristi OLE DB data provider.3.Relacioni model Elektronski fakultet u Nišu 7. Imajući ovo u vidu.mdb". . conn).Open(). DataReader objekti mogu samo da čitaju podatke i to red po red unapred.5. String strSQL = "Select * from RADNIK". OleDbCommand comm = new OleDbCommand(strSQL. jasno je da je upotreba DataReader objekata korisna samo u situacijama kada je kreirani upit SELECT SQL naredba. conn. DataReader objekti posebno su koristi kada je potrebno brzo iterirati kroz veliku količinu podataka pri čemu nije potrebno posedovati lokalne kopije jednom očitanih podataka.ConnectionString = "Provider=Microsoft. Ukoliko pretpostavimo da je kreirana konekcija ka bazi.Close(). najlakši i najbrži način za pribavljanje podataka je korišćenje DataReader objekata. U nastavku će biti prikazan deo programskog koda koji vrši dodavanje novog radnika.Jet. conn. da bi se očitali podaci iz baze podataka neophodno je napisati SQL upit koji selektuje potrebne informacije. DataReader objekti kreiraju se pozivom ExecuteReader() metode kreirane komande. izmenu ili brisanje podataka iz baze podataka.Baze podataka . Korišćenje DataReader objekta Nakon uspostavljanja konekcije ka bazi podataka i kreiranja SQL upita. OleDbDataReader reader. Pored izvršenja SQL upita koji vrše selektovanje podataka. reader = comm. neophodno je izvršiti kreirani upit kako bi se pribavili podaci. izmenu podataka o radniku i briše podatke o radniku u tabeli RADNIK baze podataka PREDUZECE. while (reader.

5)". comm2. } .'Marko'. } catch (Exception exc) { //obrada izuzetka } finally { conn. conn). conn).0.Relacioni model Elektronski fakultet u Nišu Dodavanje. conn. comm1. 'M'. //brisanje podataka o radniku String strSQL3 = "Delete from RADNIK where MatBr=123456781".ExecuteNonQuery(). '30000'. OleDbCommand comm2 = new OleDbCommand(strSQL2. conn).ExecuteNonQuery().mdb". OleDbCommand comm3 = new OleDbCommand(strSQL3. '2/9/1965'. comm3. OleDbCommand comm1 = new OleDbCommand(strSQL1.Jet. //izmena podataka o radniku String strSQL2 = "Update RADNIK set Plata=50000 where MatBr=123456781".106 - .OLEDB. //dodavanje novog radnika String strSQL1 = "Insert into RADNIK values (123456781.4.ExecuteNonQuery().ConnectionString = "Provider=Microsoft. izmena i brisanje podataka OleDbConnection conn = new OleDbConnection(). 'Obilićev Venac'. 'Petrovic'.Data Source=c:\\PREDUZECE.Baze podataka . 'J'. try { conn.333445555.Open().Close().

U nastavku će biti prikazan primer kreiranja i izvršenja parametrizovane komande pri čemu se koristi OLE DB data provider.Open(). //dodavanje parametra u kolekciju parametara komande comm.Add(param). Kako bi se ukazala pozicija u SQL upitu na kojoj će se naći određeni parametar.ParameterName = "@parameter". Izvršenje parametrizovane komande OleDbConnection conn = new OleDbConnection().Jet.ExecuteReader().OleDbType = OleDbType. conn). parametri su instance klase OleDbParameter.Read()) { //obrada podataka } .Relacioni model Elektronski fakultet u Nišu Često je neophodno parametrizovati upite koji se prosleđuju bazi podataka na osnovu podataka koje su korisnici uneli u aplikaciju.LongVarChar. try { conn.Value = "Marko".OLEDB. Svaka ADO.mdb".NET poseduje mogućnost kreiranja parametrizovanih komandi.Parameters. Kako bi prosleđivanje podataka koje su korisnici uneli bilo što sigurnije. OleDbCommand comm = new OleDbCommand(strSQL.NET Command objekta. OleDbDataReader dr = comm. Svaki od parametara predstavlja nezavisni objekat koji je moguće kreirati i dodati u kolekciju ADO.Baze podataka . Parametri zauzimaju određeno mesto u SQL upitu koji komanda izvršava.4. //kreiranje parametrizovanog upita String strSQL = "Select * from RADNIK where Ime=@parameter". while (dr.107 - . param.ConnectionString = "Provider=Microsoft. U slučaju korišćenja OLE DB data provider-a.NET komanda poseduje kolekciju individualnih parametara. param. //kreiranje parametra OleDbParameter param = new OleDbParameter(). param.Data Source=c:\\PREDUZECE. koristi se prefix @ praćen imenom odgovarajućeg parametra. conn. ADO.0.

NET pored ovakvog načina pristupa podacima poseduje i drugačiji mehanizam. tzv.6. poglede i sve druge karakteristike modela podataka korišćenog za kreiranje baze podataka. U većini slučajeva. sortiranje i snimanje u bazu podataka.108 - . ograničenja primenjena na kolone. } 7. neophodno je kreirati objekte koji predstavljaju konekciju i komandu. data adapter objekat koji predstavlja instancu DataAdapter klase. Za pribavljanje i ažuriranje podataka se u slučaju korišćenja sloja sa raskinutom vezom za pristup podacima koristi tzv. Korišćenjem tipova objekata iz System. ADO.NET-a za pristup podacima Korišćenje Connection. Korišćenje sloja sa raskinutom vezom ADO. primarne ključeve. podaci pribavljeni korišćenjem data adapter objekta se ne pribavljaju korišćenjem DataReader objekata. pristup podacima korišćenjem sloja sa raskinutom vezom. Prednosti i mane ovakvog načina pristupanja podacima opisane su u prethodnim poglavljima. Command i DataReader objekata podrazumeva da je veza ka izvoru informacija (bazi podataka) otvorena za sve vreme trajanja obrade podataka.Close(). Kako bi se poboljšala funkcionalnost. njihovo filtriranje. Ovaj proces prikazan je na slici. Klijentska aplikacija može nakon toga nesmetano vršiti izmene nad pribavljenom kopijom podataka. Korišćenje sloja sa raskinutom vezom za pristup podacima zasnovano je na kreiranju lokalne kopije podataka koji se čuvaju u operativnoj memoriji klijentskog računara. Svaki DataSet objekat može biti sastavljen od većeg broja DataTable (tabela podataka) objekata koji poseduju kolekcije DataRow (red tabele) i DataColumn (kolona tabele) objekata.Data ADO. data adapter objekat će konekciju ka bazi držati otvorenom minimalni period vremena.Relacioni model Elektronski fakultet u Nišu } catch (Exception exc) { } finally { conn. Za razliku od direktnog pristupa podacima.NET prostora imena moguće je kreirati lokalni model podataka koji će pored sirovih podataka posedovati veze između tabela. . Kada se na klijentskoj strani kreira DataSet objekat. data adapter će prekinuti konekciju sa bazom podataka ostavljajući potpuno samostalnu kopiju podataka na klijentskom računaru. Data adapter objekat koji se koristi upravlja konekcijom ka bazi podataka automatski. čak i prilikom korišćenja sloja sa raskinutom vezom ADO.Baze podataka . Lokalni model podataka dozvoljava korisnicima kreiranje i izvršavanje upita nad lokalnim podacima. Data adapter objekti koriste DataSet objekte za prenos podataka od i ka bazi podataka.NET-a.

String strSQL = "Select * from RADNIK".4. try { conn.Relacioni model Elektronski fakultet u Nišu Da bi kreirali lokalnu kopiju podataka korišćenjem data adapter-a i DataSet objekata.Data Source=c:\\PREDUZECE. adapter. OleDbDataAdapter adapter = new OleDbDataAdapter(comm).Jet.Open().109 - .ConnectionString = "Provider=Microsoft.mdb".0. DataSet ds = new DataSet(). U nastavku je prikazan primer programskog koda koji vrši učitavanje svih radnika iz tabele radnik korišćenjem OLE DB data adapter-a. } Nakon kreiranja lokalne kopije podataka tj DataSet objekta. } catch (Exception exc) { //obrada izuzetka } finally { conn. "Radnici"). conn). moguće je ažurirati pribavljene podatke.Close().Baze podataka .OLEDB. OleDbCommand comm = new OleDbCommand(strSQL. Korišćenje DataAdapter objekta OleDbConnection conn = new OleDbConnection(). neophodno je najpre kreirati konekciju ka bazi podataka i komandu na osnovu koje će biti kreirana lokalna kopija podataka. U nastavku je prikazan primer programskog koda koji vrši ažuriranje podataka o sivm radnicima čije je ime Milos postavljajući im platu na vrednost 30000.Fill(ds. . conn.

row["Plata"] = 30000. dr["DatRodj"] = "1/1/2011".110 - .NewRow(). dr["SSlovo"] = "M". DataRow row = ds. row["Prezime"] = "Obilic". row["Adresa"] = "Bulevar Nemanjića 8/11". row["SSlovo"] = "M".Tables["Radnici"]. dr["Adresa"] = "Bulevar Nemanjića 5/11". row["DatRodj"] = "1/1/2011".Tables["Radnici"]. dr["Plata"] = 20000. } } Moguće je takođe i obrisati neki od redova u lokalnoj kopiji podataka ili dodati novi red.Rows) { if(dr["Ime"]. . row["Ime"] = "Milos".ToString() == "Milos") { dr["Plata"] = 30000.ToString() == "Milos") { dr["Prezime"] = "Bogdanović".Relacioni model Elektronski fakultet u Nišu Ažuriranje podataka foreach (DataRow dr in ds.Rows) { if (dr["Ime"].Tables["Radnici"]. row["MatBr"] = 223456789. Brisanje i dodavanje podataka foreach(DataRow dr in ds.Baze podataka .

Rows.Baze podataka . adapter. Šta predstavlja ConnectionString atribut klase Connection? . U kojim situacijama je dobro koristiti direktan pristup podacima korišćenjem ADO. Za svaki tačan odgovor dodelite sebi 2 poena.RowUpdated događaja. 3.MissingSchemaAction = MissingSchemaAction. Ovakve situacije moguće je preduprediti korišćenjem DataAdapter.NET data provider-a? Navesti osnovne članove System. 4. Pitanja Pokušajte da odgovorite na sledeća pitanja."Radnici"). update ili delete operacije ali pre nego štio se desi izuzetak pa nam daje mogućnost da sprečimo dešavanje izuzetka. a za netačan 0.NET-a? 7. Snimanje podataka OleDbCommandBuilder myOleDbCommandBuilder = new OleDbCommandBuilder(adapter). } } Sve izmene učinjene na lokalnoj kopiji podataka mogu se snimiti u bazu podataka korišćenjem Update() metode DataAdapter objekta. Nakon toga pogledajte ponovo materijal u ovoj lekciji.NET-a? 6.NET-u? 8.AddWithKey.Add(row).Net održava informacije o originalnim i trenutnim vrednostima svih podataka koji se nalaze u DataSet objektu. U ovakvim situacijama desiće se izuzetak. DataAdapter.Tables["Radnici"].Data prostora imena.RowUpdated događaj dešava se u trenucima dok aplikacija radi sa DataSet objektom i otvara novu konekciju ka bazi podataka pa je preporučljivo da programski kod koji se izvršava u ovim situacijama bude što manji. ADO. Naime.111 - . Pogledajte ponovo one delove lekcije za koje ste imali 0 poena. za delimično tačan 1. ADO. Koji je uobičajeni redosled operacija prilikom direktnog pristupa podacima korišćenjem ADO. Ovaj događaj dešava se prilikom izvršenja svake insert. 5. Prilikom ažuriranja podataka. 1. Koja klasa enkapsulira konekciju ka izvoru podataka u ADO. 2. int izmenjeniRedovi = adapter.NET traži redove koji u potpunosti odgovaraju originalnim vrednostima podataka u redovima DataSet objekta i po pronalaženju ih zamenjuje novim redovima tj podacima iz redova lokalne kopije. drugi korisnici mogu izmeniti podatke u bazi pa prilikom upoređivanja originalnih vrednosti lokalnih kopija podataka i podataka u bazi neće doći do poklapanja.Update(ds.NET-a? Šta je data provider? U kojim prostorima imena se nalaze roditeljske klase svih ADO. Na kom novom objektu se bazira najveći deo funkcionalnosti ADO. U ovom trenutku lako je uočiti da će problem nastati ukoliko neki drugi korisnik izmeni podatke pre nego što naša aplikacija snimi izmenjene podatke.Relacioni model Elektronski fakultet u Nišu ds.

Baze podataka . Korišćenjem beskonekcionog sloja ADO. Podaci o radnicima čuvaju se u tabeli RADNIK baze podataka PREDUZECE. Podaci o radnicima čuvaju se u tabeli RADNIK baze podataka PREDUZECE. Čemu služe instance klase DataReader i na koji način je moguće instancirati objekte ove klase? 11. Na čemu se bazira korišćenje beskonekcionog pristupa podacima korišćenjem ADO. .NET-a? 14. povećati svim radnicima platu za 15% i snimiti izmenjene podatke. Ukoliko se koristi OLE DB data provider. Za pristup podacima koristiti OLE DB data provider.NET 1.NET-a kreirati lokalnu kopiju podataka o svim radnicima. na koji način je moguće ukazati na poziciju koju parametar zauzima u SQL upitu? 13. Šta predstavljaju parametri SQL komande? 12.NET-a? Zadatak ADO. Ukoliko se koristi OLE DB data provider. Korišćenjem ADO.112 - .Relacioni model Elektronski fakultet u Nišu 9. Koja se klasa koristi za instanciranje objekata koji omogućavaju pribavljanje i ažuriranje objekata? 15.NET direktnog pritupa podacima pronaći radnika čiji je matični broj 123456789 i izmeniti njegovo ime na “Aleksandar”. Koja klasa se koristi za instanciranje objekata koji vrše prenos podataka od i ka bazi podataka kod beskonekcionog pristupa ADO. Za pristup podacima koristiti OLE DB data provider. 2. koja klasa predstavlja objektno-orijentisanu reprezentaciju SQL komande koju je neophodno izvršiti? 10.

NET kontrolama 8.NET kontrola i podataka korišćenjem C# programskog jezika i ADO.NET kontrolama Pitanja Zadatak 8. Ciljevi lekcije • • • • Upoznati se sa osnovama mehanizma jednostavnog povezivanja podataka sa Windows Forms kontrolama Upoznati se sa osnovama mehanizma složenog povezivanja podataka sa Windows Forms kontrolama Upoznati se sa osnovama mehanizma jednostavnog povezivanja podataka sa ASP.Baze podataka .113 - .NET-a 8.NET-a • o o o o Neophodno predznanje Uvod Povezivanje podataka sa Windows Forms kontrolama Jednostavno povezivanje Windows Forms kontrola sa podacima Složeno povezivanje Windows Forms kontrola sa podacima Povezivanje podataka sa ASP.NET kontrolama o o o o Jednostavno povezivanje podataka sa ASP.Relacioni model Elektronski fakultet u Nišu Lekcija 8 Sadržaj • Povezivanje Windows Forms i ASP.NET kontrola i podataka korišćenjem C# programskog jezika i ADO.NET-a .NET kontrolama Upoznati se sa osnovama mehanizma složenog povezivanja podataka sa ASP.1. Povezivanje Windows Forms i ASP.2. Neophodno predznanje • • • • Rad u Windows okruženju Relacione baze podataka Osnove programskog jezika C# Osnove ADO.NET kontrolama Složeno povezivanje podataka sa ASP.

ukoliko se korisnicima dozvoli mogućnost izmene pribavljenih podataka. bilo je neophodno razviti programski kod koji bi pribavljao izmenjene podatke iz delova korisničkog interfejsa. podaci se prenose od izvora podataka ka . 8. povezivanje sa podacima u . Ugrađene kontrole omogućavaju projektantima desktop i Web aplikacija relativno jednostavan način kreiranja korisničkog interfesja koji ima mogućnost povezivanja sa bazom podataka. Ukoliko se pribavljeni podaci prikazuju korisnicima kroz kontrole korisničkog interfejsa aplikacije. Programski kod razvijen na ovaj način morao je biti različit u zavisnosti od posmatrane situacije i potreba korisnika. Ovakvo ponašanje posledica je činjenice da su sve Windows Forms kontrole izvedene iz klase Control koja implementira IBindableComponent interfejs. Predefinisani skup kontrola ugrađen u . Ukoliko je prenos podataka jednosmeran. DisplayMember i ValueMember atribute. skladištio te podatke u memorijske strukture na klijentskom računaru i vršio upis izmenjenih podataka u bazu podataka. Korišćenjem ovog mehanizma moguće je povezati kontrolu sa podacima i u potpunosti prepustiti kontroli upravljanje nad prikazom podataka. a zatim razviti programski kod koji bi grafički prikazao pribavljene podatke ili popuniti kontrole koje se prikazuju korisnicima. Ovakav pristup zahtevao je mnogo programskog koda koji se često ponavljao i bio podložan greškama.3.NET platforma takođe uvodi obrasce po kojima se razvija programski kod kojim se vrši lako povezivanje podataka sa kontrolama koje ih prikazuju korisnicima. dok je ostatak koda smešten u objekte koji korisnicima nisu vidljivi i koji olakšavaju povezivanje podataka i kontrola.114 - . Takođe.Relacioni model Elektronski fakultet u Nišu 8. Ove kontrole ugrađene su u Windows Forms i ASP. Deo koda smešten je u kontrole sa kojima se povezuju podaci i koje prikazuju podatke. Povezivanje korisničkog interfejsa tj kontrola od kojih je korisnički interfejs izgrađen. Dodatna funkcionalnost ogleda se kroz dodatne atribute članove klase poput DataSource. .NET platformu je moguće povezati sa podacima.NET platformu enkapsulira prethodno opisani proces i smanjuje količinu programskog koda koji je potrebno razviti. Prilikom kreiranja ovakvih aplikacija neophodno je posedovati efikasne mehanizme za skladištenje. DataMember. Kako je ranije naglašeno.NET interfejse za razvoj desktop i Web aplikacija. Bilo je neophodno kreirati konekciju ka bazi podataka i očitati podatke.NET platformi predstavlja mehanizam za automatsko povezivanje i sinhronizovanje podataka koji su uskladišteni u operativnoj memoriji sa kontrolama korisničkog interfejsa koje prikazuju podatke. Uvod Gotovo sve aplikacije koje se mogu nazvati značajnim koriste podatke u nekom obliku.Baze podataka . je jedan od problema koji su projektanti aplikacija u prošlosti rešavali na različite načine. Povezivanje podataka sa Windows Forms kontrolama Većinu kontrola ugrađenih u . Prilikom korišćenja ovog mehanizma neophodno je sagledati pravce toka podataka i vremenske trenutke kada se zapravo prenose podaci. . Pojedine kontrole poseduju složenije mehanizme povezivanja sa podacima.4. Svaka kontrola koja implementira IBindableComponent interfejs poseduje kolekciju objekata klase Binding i naziva se DataBindings. pribavljanje i manipulaciju nad podacima.NET platforma poseduje predefinisani skup kontrola koje je moguće koristiti za prikazivanje i manipulaciju nad podacima. neophodno je posedovati intuitivne načine za prikazivanje podataka koji će omogućiti korisnicima da na lak i efikasan način manipulišu podacima.

.Jet.Baze podataka . izvor podataka ili sam mehanizam povezivanja • Izvršenje događaja koji je pokrenut zbog promena u izvoru podataka ili u kontroli Postoje dva primarna oblika povezivanja kontrola . complex data binding). Primer ovakvog povezivanja biće prikazan u nastavku na primeru povezivanja ComboBox kontrole sa tabelom RADNIK baze podataka PREDUZECE.NET platforme sa izvorima podataka: jednostavno povezivanje (eng.0.Relacioni model Elektronski fakultet u Nišu kontroli čiji se atributi popunjavaju pribavljenim podacima.4. OleDbConnection conn = new OleDbConnection().115 - . izmenjene vrednosti atributa kontrola ažuriraju vrednosti podataka u odgovarajućem izvoru podataka.mdb".ConnectionString = "Provider=Microsoft. ComboBox objekat poseduje DisplayMember atribut koji određuje koji će atribut iz izvora podataka kontrola koristiti za prikazivanje svake od stavki.5. Dvosmerni mehanizmi povezivanja kontrola sa podacima omogućava da se ažuriranje pribavljenih podataka vrši automatski tj bez potrebe za razvijanjem dodatnog programskog koda koji bi vršio ažuriranje podataka. Obično se za svaku prikazanu stavku ComboBox objekta vezuje primarni ključ ili referenca na objekat kada bi se svaka od stavki mogla jedinstveno identifikovati u izvoru podataka radi dalje manipulacije nad podacima. Jednostavno povezivanje kontrola sa podacima ComboBox c = new ComboBox(). Pokretač mehanizma može biti: Izvršenje linije koda koja uvodi povezivanje kontrole i podataka Izvršenje linije koda koja osvežava kontrolu.NET platforme za povezivanje kontrola sa podacima je dvosmerna. Jednostavno povezivanje Windows Forms kontrola sa podacima Jednostavno povezivanje kontrole sa izvorom podataka vrši mapiranje atributa kontrole na atribut izvora podataka.OLEDB. conn). Ovaj atribut sadrži dodatne informacije koje se vezuju za svaku od stavki prikazanih u ComboBox objektu. String strSQL = "Select * from RADNIK". OleDbDataAdapter adapter = new OleDbDataAdapter(comm). • • 8. neophodno je postojanje programskog koda koji će pokrenuti funkcionisanje mehanizma. Kako bi mehanizam koji povezuje podatke i kontrole bio pokrenut. Ukoliko je prenos podataka dvosmeran. Većina mehanizama . OleDbCommand comm = new OleDbCommand(strSQL. simple data binding) i složeno povezivanje (eng. conn.Data Source=c:\\PREDUZECE. Moguće je odrediti i ValueMember atribut ComboBox objekta.

Ova kontrola sastoji se od redova i kolona pri čemu presek svakog reda i kolone predstavlja ćeliju. Ćelije smeštene u zaglavljima su posebno grafički naznačene i ukazuju na mod rada kontrole poput sortiranja.6. Atribut ValueMember ComboBox objekta ukazuje na atribut MatBr tabele Radnik.ValueMember = "MatBr". Kontrole koje se povezuju sa podacima ovim mehanizmom imaju mogućnost prikaza kolekcija podataka. Složeno povezivanje Windows Forms kontrola sa podacima Složeno povezivanje kontrole sa izvorom podataka je mehanizam koji povezuje kontrole sa kolekcijama podataka. c. c.DisplayMember = "Ime". c. conn.116 - .Baze podataka . kako bi odgovarajući red tabele Radnik mogao da bude selektovan kada korisnik izabere neku od stavki ComboBox objekta.Open(). koji je primarni ključ.DataSource = ds. try { conn. "Radnik"). Ova kontrola prikazuje podatke koji su vezani za nju u tabelarnom obliku. adapter.Fill(ds.DropDownStyle = ComboBoxStyle.Relacioni model DataSet ds = new DataSet(). Izgled i ponašanje ćelije je moguće prilagoditi potrebama aplikacije korišćenjem atributa i događaja koje kontrola poseduje. Ćelija je osnovna jedinica predstavljanja podataka u kontroli. Najčešće se koriste kontrole koje imaju mogućnost tabelarnog prikaza podataka.Tables["Radnik"]. ažuriranja i selekcije . c.DropDownList. Atributu DisplayMember ComboBox objekta je dodeljeno ime atributa (u ovom slučaju ime kolone tabele Radnik) čije će vrednosti biti pročitane iz svakog reda tabele izvora podataka i prikazane u ComboBox kontroli kao tekst. } catch(Exception exc) { //obrada izuzetka } Elektronski fakultet u Nišu U ovom primeru DataSource atribut ComboBox objekta je tabela Radnik koja se nalazi u DataSet objektu ds. DataGridView kontrola pripada Windows Forms prostoru imena. DataGridView kontrola pripada ovoj grupi kontrola.Close(). DataGridView poseduje posebne ćelije u zaglavljima redova i kolona. 8.

što u našem primeru neće biti slučaj.mdb". conn.0. DataSet ds = new DataSet(). } catch (Exception exc) { //obrada izuzetka } . OleDbCommand comm = new OleDbCommand(strSQL. String strSQL = "Select * from RADNIK".117 - . conn).ConnectionString = "Provider=Microsoft.Add(dgv). this. OleDbDataAdapter adapter = new OleDbDataAdapter(comm).Data Source=c:\\PREDUZECE. dgv. OleDbConnection conn = new OleDbConnection(). conn.Width.Baze podataka .4. dgv.Controls. U nastavku će biti prikazan programski kod koji vrši vezivanje podataka iz tabele RADNIK baze podataka PREDUZECE za DataGridView kontrolu.Fill(ds.DataSource = ds.Jet.Tables["Radnik"].OLEDB. Ćelije mogu biti različitih tipova čak i u istoj koloni ukoliko podaci nisu vezani za kontrolu.Close(). try { conn.Open().Relacioni model Elektronski fakultet u Nišu podataka ili dodavanja novog reda.Width = this. Složeno povezivanje kontrola sa podacima DataGridView dgv = new DataGridView(). adapter. "Radnik").

Da bi se korisnicima zabranilo dodavanje novog reda i brisanje selektovanog reda potrebno je podesiti atribute AllowUserToAddRows i AllowUserToDeleteRows na vrednost false. Ukoliko DataSet poseduje više tabela.Baze podataka . Templejt ćelija kolone određuje tip koji će biti korišćen za ćeliju nove kolone svaki put kada se u kontrolu dodaje novi red. brisanja i dodavanja podataka. dugmići i slike. od kojih svaka predstavlja kolekciju podataka. linkovi. Iako DataSet objekat može sadržati više tabela.118 - . newCol. Podrazumevane karakteristike DataGridView kontrole dozvoljavaju korisnicima da ažuriraju podatke u pojedinačnim ćelijama. DataGridViewTextBoxColumn newCol = new DataGridViewTextBoxColumn(). Takođe. Korišćenje DataGridView kontrole DataGridView dgv = new DataGridView(). dgv. brisanje selektovanog reda i ažuriranje podataka postavljanjem vrednost ReadOnly atributa kontrole na vrednost true.Relacioni model Elektronski fakultet u Nišu Prikazani primer najčešći je slučaj upotrebe DataGridView kontrole. svaka od tabela u DataSet objektu predstavlja kolekciju podataka. da selektuju redove i brišu ih korišćenjem Delete tastera na tastaturi i da dodaju novi red korišćenjem poslednjeg prikazanog praznog reda kontrole. DataGridView dozvoljava projektantima aplikacija određivanje nivoa interakcije korisnika sa podacima tj projektanti aplikacija određuju da li će korisnici imati mogućnost ažuriranja. Na osnovu tipova ćelija moguće je dinamički kreirati redove i dodavati ih u DataGridView kontrolu.Columns.HeaderText = "tekstualno polje". DataGridView kontrola kao izvor podataka koristi kolekcije podataka. DataGridView ima mogućnost jednovremenog prikaza samo jedne od tabela posmatranog DataSet objekta. Primer ovakvog izvora podataka je DataSet objekat. U nastavku će biti dat primer programskog koda koji vrši kreiranje DataGridView kontrole i u kontrolu dodaje jednu kolonu a zatim dodaje jedan red.Add(newCol). respektivno. Svi tipovi ćelija izvedeni su iz DataGridViewCell klase i mogu biti tekstualna polja. DataGridViewRow newRow = new DataGridViewRow(). Na primer. DataGridView kontrola je projektovana tako da u jednom trenutku može prikazivati samo jednu od kolekcija koje sadrže podatke. padajuće liste. moguće je zabraniti dodavanje novog reda. Kako je ranije rečeno. . DataGridView kontroli je moguće dinamički dodavati kolone i redove. Da bi se dodala nova kolona u DataGridView kontrolu neophodno je definisati templejt ćelija kolone. DataGridViewComboBoxCell comboCell = new DataGridViewComboBoxCell().

Items. Ukoliko se u ćeliji nalazi padajuća lista.Add(comboCell).Rows. Iako naizgled isti kao kod Windows Forms kontrola. Takođe.NET kontrola sa podacima ima malo sličnosti sa prethodno opisanim mehanizmom. podaci u bazi podataka za koju je kontrola vezana se automatski menjaju. ukoliko se podaci u bazi podataka izmene dok je kontrola prikazana korisniku.7. podaci koje kontrola prikazuje će se automatski izmeniti.NET kontrola sa podacima je jednosmeran – podaci se prenose iz izvora podataka (baze podataka) ka kontroli. Povezivanje ASP.NET kontrola sa podacima se fundamentalno razlikuje.Cells.NET kontrolama Osnovni principi povezivanja ASP. pod izmenom sadržaja smatra se selektovanje neke druge stavke u odnosu na trenutno selektovanu ili prepisivanje trenutno prikazanog teksta u stavki padajuće liste (da bi prepisivanje sadržaja trenutno selektovane stavke bilo moguće. Ukoliko korisnik izmeni podatke prikazane u kontroli. dgv.Value = "Bela". comboCell.Items.Relacioni model comboCell.119 - . Ukoliko je povezivanje izvršeno. Mehanizam povezivanja ASP. 8. svi izmenjeni podaci će automatski biti zapamćeni u izvoru podataka (u bazi podataka) iz kojeg su pribavljeni.NET kontrola sa podacima su naizgled slični povezivanju Windows Forms kontrola sa podacima: odrediti koji je izvor podataka i postaviti ga za izvor podataka kontrole. Povezivanje podataka sa ASP.Baze podataka . newRow. Ukoliko se u ćeliji nalazi link ili dugme.Add("Crna"). Nakon prenosa podataka.Add(newRow). . ovaj mehanizam kreira direktnu vezu između kontrole i baze podataka. Ovakav način povezivanja kontrola i izvora podataka nije efikasan kod aplikacija koje koriste Internet kao svoje radno okruženje jer je neefikasno održavati direktnu vezu sa bazom podataka korišćenjem Interneta. mehanizam povezivanja ASP. Kod Windows Forms kontrola. Elektronski fakultet u Nišu Prilikom izmene sadržaja ćelija DataGridView kontrole od velikog je značaja da li je kontrola povezana sa podacima. comboCell. DisplayStyle atribut padajuće liste mora imati vrednost “ComboBox“).Add("Bela"). korisnici neće biti u mogućnosti da menjaju sadržaj ćelije jer ove kontrole ne dozvoljavaju promene njihovog sadržaja korisnicima.

Web. Ovi izrazi imaju sledeći format: <%# ovde_stoji_izraz %> Sintaksa liči na skript jezike. Ova funkcija predstavlja jednu od osnovnih funkcionalnosti svih kontrola i ugrađena je u klasu Control iz koje su izvedene sve kontrole.120 - . 8.8. ASP. Jednostavno povezivanje kontrola i podataka public partial class _Default : System. Ukoliko korisnik izmeni podatke koje prikazuje kontrola. Ono omogućava da se vrednosti promenljivih.Page { protected int promenljiva. U nastavku će biti prikazan primer korišćenja jednostavnog povezivanja. Nakon specificiranja povezivanja neophodno je pokrenuti mehanizam povezivanja.Relacioni model Elektronski fakultet u Nišu objekti koji predstavljaju memorijsku reprezentaciju podataka se odbacuju i kreirana stranica se šalje klijentu.Load() funkciji koja prethodi prikazu stranice korisnicima. U ovaj deo je moguće ubaciti jedino validne izraze za jednostavno povezivanje. Jednostavno povezivanje podataka sa ASP.Baze podataka . atributa ili izraza dinamički dodaju bilo gde na stranici. Obično se svi pozivi DataBind() funkcije dešavaju u Page. Mehanizam povezivanja kontrola sa podacima pokreće se pozivom funkcije DataBind(). Prvi tip povezivanja je daleko jednostavniji ali složeno povezivanje predstavlja osnovu za korišćenje naprednih ASP.NET kontrola. Bilo kakav programski kod bi na ovom mestu doveo do greške prilikom izvršenja stranice. programski kod koji vrši povezivanje se dodaje direktno u HTML tekst stranice. Kod jednostavnog povezivanja. Da bi se koristilo neophodno je dodati specijalne izraze u HTML tekst stranice.UI.NET-om. Jednostavno povezivanje ne mora imati nikakve veze sa ADO. protected void Page_Load(object sender. ASP. EventArgs e) { .NET stranici.NET aplikacija može snimiti izmenjene podatke ali se snimanje podataka neće desiti automatski.NET će ignorisati sva povezivanja kontrola sa podacima. ASP. ali ovo nije skript jezik.NET poseduje dva mehanizma povezivanja kontrola sa podacima: jednostavno povezivanje (povezivanje pojedinačnih vrednosti) i složeno povezivanje (povezivanje kolekcija podataka). Jednostavno povezivanje se može posmatrati i kao varijanta kreiranja dinamičkog teksta. Ukoliko se poziv funkcije DataBind() izostavi. Moguće je pozvati DataBind() funkciju istovremeno za sve kontrole na stranici pozivom DataBind() funkcije Page objekta koji predstavlja trenutnu stranu.NET kontrolama Jednostavno povezivanje kontrola sa podacima koristi se za dodavanje informacija bilo gde na ASP.

Jednostavno povezivanje kontrola sa atributima klasa public partial class URLPage : System.DataBind().MapPath("Water lilies"). protected void Page_Load(object sender. jednostavno povezivanje je moguće iskoristiti kako bi se na stranici prikazali atributi neke od klasa.DataBind().Baze podataka . U nastavku će biti prikazan primer koji prikazuje atribut pod nazivom URL nove stranice pod nazivom URLPage.UI. } } .Relacioni model Elektronski fakultet u Nišu promenljiva = 123. EventArgs e) { URL = Server.121 - .Web. this.Page { public string URL. } } Pored postavljanja statičkog teksta. this.

složeno povezivanje zahteva upotrebu specijalnih kontrola koje podržavaju ovakav vid povezivanja. Kontrolu koja podržava složeni način povezivanja sa podacima je moguće razlikovati od ostalih po tome što poseduje DataSource atribut. Za razliku od jednostavnog povezivanja. Mehanizam povezivanja kontrola sa podacima pokreće se pozivom funkcije DataBind(). Ove kontrole je recimo moguće povezati sa nizom podataka. CheckBoxList.NET će ignorisati sva povezivanja kontrola sa podacima.122 - . U ovu grupu kontrola spadaju ListBox. ListBox. Moguće je pozvati DataBind() funkciju istovremeno za sve kontrole na stranici pozivom DataBind() funkcije Page objekta koji predstavlja trenutnu stranu.Relacioni model Elektronski fakultet u Nišu 8. DropDownList. DropDownList.9. Nakon specificiranja povezivanja neophodno je pokrenuti mehanizam povezivanja. Ove kontrole spadaju u grupu tzv. kontrole koje podržavaju složeni način povezivanja ne moraju podatke pribavljati iz baze podataka niti moraju koristiti ADO. Složeno povezivanje kontrola sa podacima podrazumeva korišćenje podskupa kontrola koje podržavaju ovakav način povezivanja. .NET kontrolama Složeno povezivanje predstavlja osnovu za korišćenje naprednih ASP. HtmlSelect. RadioButtonList. Obično se koriste CheckBoxList objekti ili ListBox objekti ali se mogu koristi i daleko sofisticiranije kontrole poput GridView kontrole. GridView. list kontrola. Složeno povezivanje podataka sa ASP.NET objekte. DetailsView i FormView. ASP.NET kontrola.Baze podataka . Kao i kod jednostavnog povezivanja. Složeno povezivanje omogućava da se na stranici prikažu podaci iz čitave tabele baze podataka. HtmlSelect kontrola u osnovi funkcioniše na isti način kao i ListBox kontrola ali je zadržana zbog lakšeg unapređivanja starih APS stranica. Ova funkcija predstavlja jednu od osnovnih funkcionalnosti svih kontrola i ugrađena je u klasu Control iz koje su izvedene sve kontrole. CheckBoxList i RadioButtonList kontrole omogućavaju povezivanje sa jednom kolonom podataka. Obično se svi pozivi DataBind() funkcije dešavaju u Page.Load() funkciji koja prethodi prikazu stranice korisnicima. GridView. Ukoliko se poziv funkcije DataBind() izostavi.

povezivanje podataka se vrši postavljanjem vrednosti odgovarajućih atributa kontrola. ListBox lBox = new ListBox(). aList.Add("Crvena"). ArrayList klasa pripada System.Add("Bela").Add("Plava"). Pri korišćenju kontrola koje se povezuju sa jednom kolonom podataka.FindControl("form1"). Složeno povezivanje kontrole sa ArrayList objektom public partial class _Default : System.Page { protected void Page_Load(object sender.Relacioni model Elektronski fakultet u Nišu DetailsView i FormView su kontrole koje mogu prikazivati više od jedne kolone podataka jednovremeno.123 - .Collections prostoru imena. U nastavku će biti prikazan programski kod koji vrši povezivanje ListBox kontrole sa ArrayList objektom i izgled . Vrednosti atributa je moguće postaviti statički u . } } . lBox. this. Objekti klase ArrayList predstavljaju kolekciju objekata.DataBind().Add(lBox).Baze podataka .DataSource = aList.aspx stranici ili dinamički tj korišćenjem programskog koda koji pristupa atributima kontrole i postavlja njihove vrednosti. EventArgs e) { ArrayList aList = new ArrayList(). Ova kolekcija može posedovati bilo koji objekat izveden iz klase object.aspx stranice nakon izvršenja koda.Add("Crna"). aList.Controls. aList.UI.Web. aList. this.

U primeru koji će biti prikazan u nastavku.Baze podataka .NET-a. neophodno je aktivirati povezivanje eksplicitnim pozivom funkcije DataBind(). EventArgs e) { //lista ListBox lBox = new ListBox(). U ovim situacijama povezivanje se obično odigrava u tri koraka.Relacioni model Elektronski fakultet u Nišu Kontrole iz grupe list kontrola je moguće povezati sa podacima korišćenjem ADO.Add("Boje"). Ovo je obično objekat klase DataReader ili DataSet.NET-a public partial class _Default : System. //dodavanje nove tabele u DataSet objekat ds. Najpre se kreira objekat koji će predstavljati izvor podataka. . objekat klase DataSet će biti kreiran i popunjen dinamički tj korišćenjem programskog koda. Zatim je potrebno povezati kontrolu.UI.Web.Page { protected void Page_Load(object sender. Na kraju. Složeno povezivanje korišćenjem ADO. sa izvorom podataka.124 - . koja će u primeru biti ListBox. //kreiranje izvora podataka DataSet ds = new DataSet().Tables.

Add(dr).Add(dr). ds.Relacioni model //dodavanje kolone u tabelu ds.NewRow().DataTextField = "Naziv". dr["Naziv"] = "Bela". dr["Naziv"] = "Pink". ds.NewRow(). dr["Naziv"] = "Crna".Tables["Boje"]. ds.Rows.NewRow(). //kreiranje i dodavanje redova DataRow dr = ds.Tables["Boje"].Add("Naziv").Tables["Boje"].Tables["Boje"].DataBind(). dr["Naziv"] = "Zelena".Add(dr).Tables["Boje"].Rows.DataSource = ds. //povezivanje kontrole i izvora podataka lBox. } } Elektronski fakultet u Nišu . dr = ds.Rows.FindControl("form1").Add(dr).Baze podataka .Tables["Boje"]. //dodavanje liste na stranicu this.Controls.Add(lBox).125 - .Tables["Boje"]. dr = ds.Tables["Boje"].Rows.NewRow(). //povezivanje kontrola i podataka this. ds. lBox.Tables["Boje"]. dr = ds.Tables["Boje"].Columns.

//dodavanje kolone u tabelu . DetailsView i FormsView spadaju u grupu složenijih ASP. Sve kontrole koje pripadaju ovoj grupi poseduju DataSource atribut koji se koristi za povezivanje za izvorom podataka. Kako je ranije naglašeno.NET kontrola. U nastavku će biti prikazan primer korišćenja GridView kontrole i njeno povezivanje sa podacima sadržanim u DataSet objektu. Upotreba ovih kontrola i složenog mehanizma povezivanja biće predstavljena na primeru GridView kontrole.aspx stranice ili dinamički.Add("Boje"). //dodavanje nove tabele u DataSet objekat ds.Tables. korišćenjem programskog koda.Baze podataka . Razvijene su specijalno za potrebe povezivanja sa podacima tj korišćenjem složenog mehanizma povezivanja. DataSet objekat se u ovom primeru kreira dinamički tj korišćenjem programskog koda.Relacioni model Elektronski fakultet u Nišu GridView. EventArgs e) { //kreiranje izvora podataka DataSet ds = new DataSet(). Složeno povezivanje korišćenjem GridView kontrole public partial class _Default : System.Page { protected void Page_Load(object sender.UI.Web. GridView pripada grupi kontrola koje imaju mogućnost prikazivanja više kolona istovremeno.126 - . GridView kontrolu je moguće dodati direktno u HTML tekst .

dr = ds. dr["RedniBroj"] = "4".Tables["Boje"]. dr["RedniBroj"] = "1".Add(dr). //povezivanje kontrola i podataka grid. ds. ds.Tables["Boje"].Rows. dr["Naziv"] = "Bela".Columns.NewRow().Add("Naziv"). //povezivanje kontrole i izvora podataka grid.Tables["Boje"].Columns. ds.Tables["Boje"].DataSource = ds. dr = ds.Add(dr).Tables["Boje"]. dr["Naziv"] = "Crna".Tables["Boje"]. //kreiranje i dodavenje redova DataRow dr = ds. ds.NewRow(). dr["Naziv"] = "Pink". dr = ds.NewRow().Add(dr).Baze podataka .Tables["Boje"]. dr["RedniBroj"] = "3".Relacioni model Elektronski fakultet u Nišu ds.Add("RedniBroj").Tables["Boje"].DataBind().Rows.Rows.Tables["Boje"]. ds.NewRow().127 - .Tables["Boje"]. dr["RedniBroj"] = "2". dr["Naziv"] = "Zelena".Rows.Add(dr). } } .

Pored ovakvog vida popunjavanja izvora podataka. moguće je koristiti i ADO. Primer korišćenja ADO.NET.Baze podataka .Relacioni model ASP.128 - . .NET stranica: Elektronski fakultet u Nišu Izgled stranice: DataSet objekat korišćen u prethodnom primeru je popunjen podacima korišćenjem programskog koda tj ručno.NET objekata za korišćenje složenog mehanizma povezivanja GridView kontrole sa podacima biće prikazan u nastavku.

try { conn. conn).Jet. } catch(Exception exc) { //obrada izuzetka } } } . EventArgs e) { OleDbConnection conn = new OleDbConnection().mdb". OleDbDataAdapter adapter = new OleDbDataAdapter(comm). conn. adapter.129 - .Web. grid. String strSQL = “Select * from RADNIK”.UI. OleDbCommand comm = new OleDbCommand(strSQL.ConnectionString = "Provider=Microsoft. grid.DataSource = ds. DataSet ds = new DataSet().Open().4.0.Page { protected void Page_Load(object sender.Close().Baze podataka . conn.Fill(ds. “Radnik”).Relacioni model Elektronski fakultet u Nišu Popunjavanje DataSet objekta podacima iz baze podataka public partial class _Default : System.DataBind().OLEDB.Data Source=c:\\PREDUZECE.

Korišćenjem ADO. Za svaki tačan odgovor dodelite sebi 2 poena. koji atribut ComboBox kontrole određuje koji će atribut izvora podataka popuniti podacima stavke kontrole? 6. Pogledajte ponovo one delove lekcije za koje ste imali 0 poena. Korišćenjem ADO.130 - . Šta omogućava složeno povezivanje Windows Forms kontrola sa podacima? 7. respektivno. Prikazati format specijalnih izraza koji se ugrađuju direktno u HTML kod stranice i koji omogućavaju korišćenje jednostavnog povezivanja ASP. Nakon toga pogledajte ponovo materijal u ovoj lekciji. Čemu služi jednostavno povezivanje ASP. Svaka stavka ComboBox kontrole treba da prikazuje ime i prezime radnika. 2. Na koji način DataGridView kontrola prikazuje podatke koji su vezani za nju? 8. dok je ValueMember atribut ComboBox kontrole povezan sa matičnim brojevima radnika.NET kontrola sa podacima? 13.NET kontrola sa podacima? 15.NET kontrole dešava automatski? 11.NET kontrola sa podacima? 14. kao i ime i prezime radnika.Relacioni model Pitanja Elektronski fakultet u Nišu Pokušajte da odgovorite na sledeća pitanja. Na koji način funkcioniše jednostavno povezivanje Windows Forms kontrole sa izvorom podataka? 5. GridView kontrola treba da prikaže sve podatke o članovima porodica radnika. Kako se naziva grupa kontrola koja omogućava korišćenje složenog mehanizma povezivanja ASP. Podaci o radnicima i članovima njihovih porodica čuvaju se u tabelama RADNIK i CLAN_PORODICE baze podataka PREDUZECE. Šta je povezivanje kontrola sa podacima u . Koja je razlika između GridView i ListBox kontrole u pogledu mogućnosti prikaza podataka sa kojima su povezane? Zadatak ADO. Opisati razlike povezivanja Windows Forms kontrola sa izvorima podataka u odnosu na povezivanje ASP.NET GridView kontrole sa podacima o članovima porodica radnika. Navesti tipove mehanizama povezivanja ASP.NET platformi? 2.NET kontrola sa podacima? 16. a za netačan 0. Da li se snimanje izmenjenih podataka koje prikazuju ASP. Ukoliko se vrši povezivanje podataka sa ComboBox kontrolom. Podaci o radnicima čuvaju se u tabeli RADNIK baze podataka PREDUZECE.NET kontrola sa podacima.NET-a izvršiti povezivanje Windows Forms ComboBox kontrole sa podacima o radnicima. . Koja funkcija pokreće mehanizam složenog povezivanja ASP.NET platforme sa podacima? 4. 10.NET kontrola sa podacima i koje kontrole spadaju u ovu grupu? 17.NET-a izvršiti povezivanje ASP. Šta može biti pokretač mehanizma za povezivanje kontrola sa podacima? 3. za delimično tačan 1.NET 1. Koja klase se najčešće koristi kako bi se instancirali objekti koji predstavljaju izvore podataka korišćene pri složenom povezivanju? 9. 12.Baze podataka . 1. Šta omogućava složeno povezivanje ASP. Koji su primarni oblici povezivanja Windows Forms kontrola .NET kontrola sa izvorima podataka.

. Ciljevi lekcije ........................3.......................................23 2. ...............1 1......... Naredba SELECT......................................1...... Sistem baza podataka ...........................2.......................................................... Spajanje tabela.........7..............3........................... Relacioni integritet ................................................................. .. Ograničenje stranog ključa ...................................12 1.................5.............................................6........3..... ...... ......... ...... ...... ................................27 2................................... ....................21 2........ Neophodno predznanje................5.. Funkcije agregacije............................13 1................59 4......40 3..........................9................................................................ ..... NULL Vrednosti atributa ... Referencijalni integritet i spoljni ključevi ......... ......... Ciljevi lekcije ............................41 3.................. ....58 4.............................. .......10.....4.................................................... .......................... Neophodno predznanje................2..... Klauzula WHERE ....................................................35 Lekcija 3 ... ............................. ....................7 1............. ...................................4................... Neophodno predznanje...4......... Praktičan rad : MS Access......... ........2 1......................... ..7..............................................................58 4..... .............................................................................. SQL naredbe za kreiranje podataka.................... .......................................................16 Lekcija 2 ............................................4 1....... .............. ........................21 2..................................6 1...............................23 2.................31 2........1.....32 2................................. ...1............................................................................................4.................7.. ..2..........44 3...........................4..................... Naredba SELECT I ..............3...................................... Relacioni model podataka ........... Baza podataka PREDUZEĆE.....................................7............................................................... Ciljevi lekcije ................. ...... ....1...................1.......... .4.....3 1.................. Ograničenja tabele ............................... Šta je Sistem za upravljanje bazama podataka (DBMS)? ........... .... ..4...........7................21 2..........51 3...53 Lekcija 4 ...........................59 4. SQL DDL naredba za kreiranje tabele PROJEKAT.................................. Baze podataka.9.......... ....... Aritmetičke funkcije..........131 - ..............................................3............. ................. ........................... ...........5.....4.............Baze podataka ...........3.....4.............................3.....................10...................... ........................................15 1.........31 2........5... Tipovi podataka .................50 3...... Ključevi relacije .............................. ....................................................11 1...........1..........7 1........5....................................................... Pregled osnovnih koncepata relacionog modela podataka...........................................8 1.........3..........1 1..................................................................... .....6........................................... ...... Svojstva relacije .............................................................30 2..........................41 3.................................. SQL naredbe za kreiranje podataka.................................1.......... .................................................................2................................... Ciljevi lekcije ........................3 1.................................................... ............................ .................... ...2...Relacioni model Elektronski fakultet u Nišu Sadržaj Lekcija 1 .............................. Naredba SELECT II ............................2.................................... ....................... Šta je baza podataka?...... .4...................................... Relaciona šema baze podataka PREDUZEĆE ............................................... ............ .................1.......... SQL DDL naredbe za kreiranje tabela RADNIK i SEKTOR .............. MS Access specifičnosti...............................................2 1......4...2 1........40 3..................5 1..................................... Tipovi sistema baza podataka...............58 4..................................................................... Predstavljanje šema relacione baze podataka.......8.......................................................................................1 1.......... Praktični rad: MS Access ........ DDL naredbe za kreiranje baze podataka PREDUZEĆE .......................34 2...3............7.. Klauzule GROUP BY i HAVING .............................. ................................1........62 ..................................................1.......2.............. Funkcije DBMSa ............................. Ograničenje kolone.............. Neophodno predznanje...................................28 2.........33 2.29 2.........40 3.......................4................................................................................ Modeli podataka ........................................................................ ......................... ................. .............................3......2........................................................ ..

........... Kreiranje konekcije ka bazi podataka .....................6...................74 5...83 6.............................................5.......................4................4........................ Ažuriranje podataka .. Uvod................. Potpuni spoljašnji spoj (full-outer join) .............................................2......................................5..............................................83 6........................................................................................................................73 5................................... Modifikacija šeme relacione baze podataka ..............................................................................................99 7.3..................................................................................80 5................... Filtriranje podataka korišćenjem makroa..................102 7..5.... Dodavanje novih podataka korišćenjem upita ..........................65 4....................... Dodavanje akcija makroa.....................3..........4........73 5.................................................73 5...................... Neophodno predznanje ....1......................103 7............................... Korišćenje sloja sa raskinutom vezom ADO.................1............................. Sličnosti i razlike formi i izveštaja........................................................80 5..................................1...94 6.............................................132 - ...........................................2........4.......NET-a ....................................................3............ Levi spoljašnji spoj (left-outer join).................................113 8..............................98 7.2................................6............................................................................................................................................... Kreiranje SQL komande ........................91 6.............2..............102 7...........................................2..............90 6..........................3..................... Osnovni tipovi izveštaja u Access-u ......................................... Početno grupisanje i sortiranje podataka ............................................................................ Korišćenje DataReader objekta........................66 4..............................76 5.. Brisanje tabele.....7..............................83 6................. Ciljevi lekcije ..........63 4...................................89 6...... Dekartov proizvod (cross-join) .................................3..........................4................................5............................................................................................................. Pokretanje i izvršenje makroa ...... ADO.................... Brisanje podataka.................................1.......... Direktan pristup podacima korišćenjem ADO.......NET data provider-i.................................5.......................2.NET-a.....................................................95 6...4............................ Povezivanje Windows Forms i ASP.....................1..................................... Ciljevi lekcije .........................Baze podataka ................................... Neophodno predznanje .....................81 Lekcija 6.......................... Modifikovanje strukture forme ............................................................................................................5........................2................93 6.....................................................................................85 6.............................................. Kombinovanje rezultata više SQL upita ................................87 6.........................................108 Lekcija 8.....6................... ADO..6....................96 Lekcija 7.... Unutrašnji spoj (inner-join)..........................78 5.........................................2............................................................................................................92 6................4................................................... Desni spoljašnji spoj (right-outer join) .........74 5....................5......85 6...................................................1...........4. Neophodno predznanje ...........................84 6...NET-a za pristup podacima .............................. Kreiranje izveštaja korišćenjem Report Wizard-a ..........98 7.... Izrada i korišćenje formi .....................................5....................... SQL naredbe za manipulaciju podacima ..............................................114 .........................6.............................3............ Kreiranje formi korišćenjem Form Wizard-a...................... Ciljevi lekcije ......4................... Kreiranje aplikacije u Access-u .......................4......88 6......4......5........105 7............................ Modifikacija tabele ......113 8.............................................. Neophodno predznanje ................................100 7.........................................98 7................. Ciljevi lekcije ..............................1.......................................................... Dodavanje novih podataka.................................................................. Izrada i korišćenje makroa ...2............................69 Lekcija 5...............113 8....4................1.......................................6.NET kontrola i podataka korišćenjem C# programskog jezika i ADO.79 5.......Relacioni model Elektronski fakultet u Nišu 4.............3................................................... Izrada i korišćenje izveštaja ...........3........ Uvod.......................... Uvod...................................6...98 7...................83 6...................... Osnovne komponente Access aplikacija.....1...........................................5....NET .........89 6..........5..1......................4.....................................66 4...................1...........................6..........113 8..5..............3...........64 4............

.. Složeno povezivanje Windows Forms kontrola sa podacima ..... Složeno povezivanje podataka sa ASP..Baze podataka ... Povezivanje podataka sa Windows Forms kontrolama ....................Relacioni model Elektronski fakultet u Nišu 8..120 8..........8... ..119 8. Jednostavno povezivanje Windows Forms kontrola sa podacima ..7.........NET kontrolama ..........122 - ............133 - ................4..................................114 8.....116 8.... .....6.........5..............NET kontrolama.. ....9...............115 8. ..........NET kontrolama. ..... Povezivanje podataka sa ASP....... .. Jednostavno povezivanje podataka sa ASP.................

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->