Usmeni Flashcards
ER model: pojam i osnovni elementi.
Osnovna ideja ER modela je da realan svet opisemo pomocu dva primitivna koncepta : entitet i veza. Entitet je bilo koji objekat koji moze jednoznacno da se indetifikuje. Veza je relacija izmedju dva ili vise entiteta.Osnovni elementi ER modela su entitet i tip entiteta, atribut i vrednost atributa, veze i tip veze i ER dijagram
EER model: pojam i osnovni elementi
EER model je prosireni ER model, ima iste elemente kao ER model ali sa dodatnim konceptima. Ti koncepti su :
Klasa - skup ili kolekcija entiteta, tipovi entiteta se mogu tretirati kao klase.
Podklasa i nadklasa - podklasa nasledjuje atribute i veze iz nadklase.
Nasledjivanje - kod nasledjivanja postoje 2 vrste ogranicenja, to su:
Participacija podklasa u vezi - moze biti disjunktna sto znaci da svaki entitet nadklase pripada samo jednoj nadklasi, i preklapajuca gde entitet nadklase moze da pripada vecem broju podklasa.
Drugo ogranicenje je kompletnost, koja moze biti potpuna gde svaki entitet nadklase pripada nekoj podklasi i parcijalna kompletnost gde entiteti nadklase ne moraju pripadati njenoj podklasi
Primer : disjunktna, parcijalna
Osobe mogu biti ili nastavnici ili studenti, postoje osobe koje nisu ni nastavnici ni studenti
Disjunktna, totalna gde su sve osobe ili nastavnici ili studenti
Preklapajuca, parcijalna - osobe mogu biti nastavnici ili studenti ili i jedno i drugo i postoje osobe koje nisu ni jedno ni drugo
Od osnovnih koncepata imamo i specijalizaciju : to je postupak definisanja podklasa pri cemu se krece od postojecih klasa kod kojih se traze moguce specijalizacije koje pored zajednickih osobina sadrzanih u klasi imaju svoje specificne i generalizacija :
Postupak kod koga se od vise postojecih klasa uocavanjem zajednickih osobina definise generalnija klasa
Kategorije - kategorije su nastale zbog potrebe postojanja klasa koje imaju vise od jedne nadklase. Ako se nadklase jedne podklase totalno razlikuju, nemaju isti kljuc, takva podklasa se naziva kategorija. Kod kategorija postoji selektivno nasledjivanje odnosno nasledjivanje predstavlja presek nadklasa.
Deljive klase - to su klase sa vise od jedne nadklase, obezbedjuju visestruko nasledjivanje i nasledjuju klase istog tipa (isti kljuc) i nasledjivanje predstavlja uniju
Prevođenje ER modela u relacioni model
Koraci :
1. Prevođenje regularnih tipova entiteta.
2. Prevođenje slabih tipova entiteta.
3. Prevođenje veze 1:1.
4. Prevođenje veze 1:N.
5. Prevođenje veze M:N.
6. Prelikavanje viševrednosnih atributa.
7. Preslikavanje N-arnih veza.
Prevođenje EER modela u relacioni model.
Za prevođenje EER modela neophodna su tri dodatna koraka u odnosu na ER model. U praksi se primenjuju i ranije, odmah
nakon koraka 1 (paralelno se prevode sa
slabim tipovima entiteta).
- Preslikavanje veza tipa klasa/podklasa.
Alternativa A:
◦ Kreirati relacije za svaku nadklasu sa svim atributima nadklase.
◦ Kreirati relacije za svaku podklasu sa svim atributima podklase i ključem nadklase, koji je istovremeno i ključ podklasa.
Alternativa B:
◦ Kreirati relacije za sve podklase tako da sadrže sve atribute nadklase i sve atribute podklase. Primarni ključ relacije podklase je primarni ključ njegove nadklase.
◦ Treba uočiti da se kod ove opcije ne kreira relacija za nadklasu. Ova alternativa je moguća samo ukoliko je specijalizacija TOTALNA.
Alternativa C:
◦ Kreirati jednu relaciju koja sadrži sve atribute nadklase i sve atribute podklasa i atribut tip koji svojom vrednošću određuje podklasu.
Alternativa D:
Slicno kao 8.c sem sto se umesto atributa TIP dodaju atributi za svaku podklasu I ovo je dobro za preklapajuce podklase.
9.Preslikavanje deljivih klasa-primenjuje se neka alternativa iz slucaja 8.
10.Preslikavanje kategorija- Kreira se relacija za kategoriju I relacije za njene nadklase, ako su
kljucevi razliciiti kreira se novi kljuc koji predstavlja surogat kljuc
PL/SQL – pojam, namena i osnovni elemeneti.
PL/SQL je jezik koji predstavlja proceduralno
proširenje SQL-a.
Kada je korisnik ograničen samo na SQL on prosleđuje
jednu po jednu naredbu DBMS-u.
PL/SQL prevazilazi ovo ograničenje i dodaje
strukturne elemente SQL-u.
PL/SQL predstavlja strukturni programski jezik za
ORACLE.
Osnovni ciljevi su :
Povecanje ekspresivnosti SQL-a.
Pristup rezultatima upita korišcenjem slogova.
Optimizacija kombinacija SQL naredbi.
Višestruko korišcenje programskog koda.
Smanjenje cene održavanja i izmene aplikacije.
Osnovna gradivna jedinica PL/SQL programa je blok.
Blok predstavlja jednu logučku operaciju.
PL/SQL program se satoji od blokova koji se mogu ugnježdavati.
Blokovi koji predstavljaju funkcije, procedure ili pakete moraju imati ime.
PL/SQL ima opcionu selekciu za deklaracije, obavezan deo koji sadrži PL/SQL naredbe i opcioni deo za obradu grešaka i izuzetka.
PL/SQL program u obaveznom delu može imati SQL naredbe iz grupe DML narebi (SELECT, INSERT,UPDATE, DELETE…).
Ali ne sme da sadrži SQL naredbe iz grupe DDL narebi (CREATE, DROP, ALTER…) umesto njih koristi funkcije iz posebno definisanih paketa.
PL/SQL program sadrži:
deklaracije promenljivih
naredbe dodele
naredbe za kontrolu toka
naredbe petlji
pozive funkcija i procedura
pozive trigger-a
naredbe za obradu grešaka i izuzetaka
Promenljive se koriste za razmenu podataka između baze podataka i PL/SQL programa.
Konstante, promenljive, kursori i izuzeci koji se koriste u nekom bloku moraju biti deklarisani u DECLARE sekciji tog bloka.
Objasniti pojam trigera.
Trigeri su elementi šeme baze podataka, on je blok PL/SQL koda koji se izvršava kao odgovor na događaje insert, update ili delete ako je ispunjen zadati uslov. Triger se izvršava jednom pre ili posle insert-a, delete-a ili update-a
Primena trigera:
Automatsko setovanje IDova (autonumber, surogat ključeva) i izvedenih vrednosti .
Provera promena u podacima.
Automatsko čuvanje starih verzija podataka
Automatska propagacija modifikacija.
Realizacija materijalizovanih pogleda (pogledi koji fizički postoje, fizička kopija podataka)i replikacija promena u osnovne tabele.
Podrška za smart modifikacije pogleda .
Šta sve može da se nadgleda:
Događaji u bazi podataka.
Događaji koji se odnose na definiciju podataka.
Događaji koji se odnose na manipulaciju podacima.
Granularnost trigera:
Na nivou izraza – izvršava se kod trigera jednom, pre ili posle izraza koji je naveden.
Na nivou vrste – Izvršava se kod trigera jednom, pre ili posle promene svake vrste
BEFORE trigeri se izvršavaju PRE DML operacije (INSERT, UPDATE, DELETE, MERGE)
*Trigerovani kod vidi stanje BP PRE/BEFORE modifikacije..
AFTER trigeri se izvršavaju POSLE modifikacije
*Trigerovani kod vidi stanje BP POSLE/AFTER izvršenja operacije.
*Ako triger generiše izuzetak, modifikacija nije završena
Ako triger može da se izvrši i kao BEFORE ili AFTER
triger, izborom tipa trigera može da se utiče na
redolsed izvršenja, tako da se on izvrši pre ili posle
drugih trigera
BEFORE ROW trigeri se izvršavaju
* Posle izračunavanja nove vrednosti vrste
* Pre nego što se vrsta zapamti u tabeli
Tipična arhitekturna rešenja za razvoj aplikacija za rad sa bazama podataka
Klijent je bilo koji korisnik ili program koji zeli da izvrsi odredjenu operaciju nad sistemom. Klijent interaguje sa sistemom koriscenjem prezentacionog sloja (korisnicki interfejs).
Aplikativna logika definise sta sistem radi. Namece poslovna pravila i definise poslovne procese.
Sloj za upravljanje resursima definise organizaciju podataka koji su neophodni kao podrska za aplikativnu logiku. Tipicno se radi o bazi podataka.
Jednoslojna arhitektura (prez/app log/resursi) :
Svi slojevi aplikacije su implementirani kao jedan monolitni entitet. Kompletna aplikacija se nalazi na jednom racunaru tj. Na jednoj platformi. Sve se desava na jednom mestu.
Ovo je tradicionakna arhitetkura i uključuje postojanje dva računara koji učestvuju u izvršenju aplikacije. Klijenti su međusobno nezavisni, pa za različite klijente može da postoji različiti prezentacioni sloj u zavisnosti od funkcionalnosti koje aplikacija nudi. Klijenti obično imaju vrlo ograničene mogućnosti (tanki). Klijentima su se smatrali i prosti ulazni uređaji čiji je zadatak bio da samo prikažu klijentski interfejs koji se izvršava na udaljenoj platformi (vrlo tanki klijenti). Na serveru se nalaze sve datoteke, baza podataka i komponente koje implementiraju aplikativnu logku. Baza podataka ima samo jednog klijenta i to je sloj aplikativne logike.
Troslojna arhitektura (prez + app log + resursi):
Dvoslojne arhitekture su bile popularne do trenutka kada je postalo jasno da je opterecenje na serverskoj strani moguce dodatno raspodeliti odnosno distribuirati. Osnovni problem dvoslojne arhitekture je jaka sprega izmedju aplikativne logike i izvora podataka koji aplikacija koristi. Kod troslojnih sistema tri sloja aplikacije su potpuno odvojena i u vecini slucajeva distribuirana na razlicitim platformama. Srednji sloj obuhvata kompletnu aplikativnu logiku i naziva se middleware i aplikativni server. Bolja raspodela opterecenja i bolja skalabilnost sistema.
Viseslojna arhitektura (prez sloj nije više kod klijenta) :
Web serveri se cesto ponasaju kao klijenti u situacijama kada koriste usluge drugih servera, ukljucujuci i servere baze podataka. Viseslojne aplikacije poseduju veci broj slojeva koji se mogu ponasati i kao klijenti i kao serveri. Svaki skup susednih slojeva predstavlja klijent-server uparivanje. U viseslojnim aplikacijama
svaki sloj predstavlja aplikacioni sloj (browser, web server, aplikacioni server, baza podataka..). Poslednji sloj u arhitekturi je web klijent (u vecini slucajeva Web citac ili inteligenti agent) koji inicira obradu podataka slanjem podataka Web serveru.
Tehnike za razdvajanje slojeva kod aplikacija za rad sa bazama podataka.
Za razdvajanje slojeva se koriste razliciti projektni obrasci:
➢ Model-View-Controller(MVC) –
▪ Model salje notifikacuje kontrolerima I pogledima kada menja stanje
▪ Pogledi zahtevaju informacje od modela na snovu kojih generisu reprezentaciju
▪ Controler moze da salje komande modelu kako bi azurirao njegovo stanje
➢ Model-View-Presenter(MVP) –
▪ Model je interfejs koji definise podatkemodel salje notifikacuje kontrolerima I pogledima
▪ Pogled je asivni interfejs koji prikazuje podatke I rutira komande
▪ Prezenter prestavlja granu izmedju pogledai modela
➢ Model-View-ViewModel(MVVM) –
▪ Model je skup klasa koje predstavljaju reprezentaciju podataka iz izvora podataka
▪ Pogled je komponenta sistema odgovorna za prezentaciju
▪ ViewModel- priprema podatke iz modela za prikaaz u pogledu
Navesti i objasniti projektne obrasce koji se koriste za modeliranje domena.
Za modeliranje domena se mogu koristiti 3 projektna obrasca :
1) Transaction script : Organizuje poslovnu logiku u vidu procedura pri cemu je svaka procedura zaduzena za obradu
jednog zahteva od strane prezentacionog sloja. Moze se implementirati koriscenjem procedura, grupisanjem transackija u
jednu ili vise klasa i koriscenjem command patterna. Prednost koriscenja je jednostavnost i koristi se kada je domenska
logika jednostavna, za kompleksne poslovne logike se ne preporucuje.
2) Table module : Za svaku tabelu, pogled ili upit postoji posebna instanca koja sadrzi kompletnu poslovnu logiku za
rad sa vrstama te tabele/pogleda/upita. Nije pogodan za predstavljanje kompleksne logike.
3) Domain model : Predstavlja OO model domena koji ukljucuje i podatke i poslovnu logiku. Mogu postojati objekti koji
samo predstavljaju podatke, objekti koji predstavljaju poslovnu logiku ili objekti koji sadrze i jedno i drugo.
Svaki objekat predstavlja neki od domenskih entiteta. Koristi se za kompleksne sisteme. Problem su razlike izmedju
OO modela i relacionog modela jer je neophodna stalna transformacija. Za implementaciju se koriste 2 pristupa :
1. Active record - Pored podataka i poslovne logike objekat ukljucuje i metode za rad sa relacionom bazom podataka.
Predstavlja slog u tabeli.
2. Data Mapper - Pored objekata koji sadrze podatke i poslovnu logiku postoje i posebni objekti koji su zaduzeni za
komunikaciju s bazom podataka. OO model je potpuno odvojen od baze i ne mora da bude svestan njenog postojanja.
Objasniti problem Object-Relational Impedance Mismatch.
Skup tehničkih problema koji se javljaju u situacijama kada OO sistem treba da koristi podatke u relacionoj bazi podataka, naročito u situacijama kada je objekte i klase potrebno mapirati u šemu
relacione baze podataka.
Tipični problemi:
Granularnost – broj klasa ne odgovara broju tabela u bazi
Nasleđivanje – nije podržano u relacionom modelu
Identitet- jednakost primarnih ključeva i jednakost objekata
Asocijacije – veze između klasa strani ključevi
Navigacija podataka – veze između klasa strani ključevi
Objasniti pojam objektno-relacionog mapera.
O/R maper predstavlja implementaciju Data Mapper projektnog obrasca. To je tehnika koja omogucava konverziju podataka između
nekompatibilnih sistema OO aplikacija i relacionih baza podataka.
O/R maperi obezbeđuju perzistentnost objekata odnosno omogucavaju da objekti postoje nezavisno od same aplikacije.
-Prednosti korišcenja O/R mapera:
Skalabilnost
Skraceno vreme razvoja
Domain driven design
Nezavisnost od RDBMS-a
-Nedostaci O/R maper tehnologije
Performanse
Problemi prilikom mapiranja između OO modela i relacionog modela
Navesti tipične projektne obrasce na kojima s ebazira arhitektura O/R mapera.
Unit of work - projektni obrazac koji omogucava O/R maperima vodjenje evidencije o svim objektima koji su izmenjeni
tokom transakcije, resavanje problema konkurencije. Ovde se izmene prosledjuju bazi podataka tek po zavrsetku transakcije
Identity map - projektni obrazac koji omogucava O/R maperima da svaki objekat moze da se ucita samo jednom u memoriju,
sve objekte ucitane u memoriju cuva u mapi i prilikom referenciranja objekata koristi se njihova instanca koja je ucitana u mapu.
Lazy load - projektni obrazac koji omogucava O/R maperima da se prilikom ucitavanja podataka ne ucitavaju svi podaci
koje objekat sadrzi nego su inicijalno ucitani samo neophodni podaci, dok se ostali ucitavaju na zahtev odnosno onda kad su potrebni
NHibernate
Glavna funkcionalnost koju Nhibernate obezbeđuje je mapiranje između .NET klasa i odgovrajucih tabela u
relacionoj bazi. Osim toga obezbeđuje mehanizme za pretraživanje i učitavanje podataka. Omogucava da se
razvijaju poslovni objekti u obliku .NET klasa. Svaki poslovni objekat je predstavljen jednom POCO .NET
klasom. To je standardna klasa koja ne nasleđuje bilo koju specijanu klasu. Nhibernate koristi XML mapping
datoteke za odgovarajuce .NET klase kako bi obezbedio podršku za CRUD operacije.
Definisati pojam transakcije, osnovne operacije I svojstva.
Transakcija predstavlja sekvencu SQL DML (data manipulation) naredbi koja predstavlja jednu logičku celinu.
Oracle transakciju tretira kao celinu sve dok sve izmene načinjene od strane SQL naredbi ne postanu validne ili dok ne budu poništene
Prva SQL naredba nekog programa započinje novu transakciju.
Svaka SQL naredba je sastavni deo neke transakcije.
Atomicity (Atomičnost)
◦ Princip sve ili ništa.
◦ Mora da se izvrši svaka operacija unutar transakcije ili se ne izvršava nijedna.
◦ Kada se deo transakcije ne izvrši, ne izvrši se čitava transakcija.
Consistency (Konzistentnost)
◦ Transakcija mora da zadovolji sve definisane protokole i pravila u bilo kom trenutku.
◦ Transakcija ne sme da naruši ova pravila i sistem mora da bude u konzistentnom stanju na početku i na kraju transakcije.
◦ Ne postoje transakcije koje su poluzavršene.
◦ Transakcija prevodi DB iz jednog konzistentnog stanja u drugo.
Isolation (Izolacija)
◦ Nijedna transakcija nema pristup nekoj drugoj transakciji koja nije završena.
◦ Transakcija ne vidi nekomitovane izmene iz drugih transakcija
◦ Svaka transakcija je nezavisna za sebe.
Durability
◦ Kada se transakcija završi, pamti se d aje završena i ne može se
poništiti.
◦ Završene transakcije moraju da prežive bilo koji pad sistema.
◦ Komitovane izmene u bazi podataka su trajne.
COMMIT Nareba završava tekucu transakciju i potvrđuje i trajno snima modifikacije učinjene tokom trasakcije.
ROLLBACK naredba završava tekucu transakciju i poništava sve modifikacije učinjene tokom transakcije.
SAVEPOINT naredba označava i snima tekudu tačku u transakciji.
Sve dok se promene ne potvrde (commit-uju) one nisu vidjlive ostalim korisnicima. Ostali korisnici vide podatke
u onom obliku u kome su bili pre početka transakcije.
Naredba COMMIT poništava sve lock-ove koji su
tokom transakcije kreirani nad tabelama ili pojedinim
vrstama u tabelama.
Transakcija se poništava u situacijama kada je izdata naredba
koja je dovela do neželjenih efekata (obrisani ili ažurirani pogrešni podaci) ili kada naredba iz određenih razloga ne
može da se izvrši ili se tokom izvršenja javi izuzetak.
Naredba ROLLBACK bazu podataka vraća u prvobitno stanje odnosno stanje u kome se nalazila pre nego što je izvršena
prva naredba transakcije.
To omogućava korisniku da preduzme korake koji će ispraviti uočene greške i nedostatke i da zatim ponovo pokrene transakciju.
Ukoliko prilikom izvršavanja neke SQL naredbe dođe do greške ili pojave izuzetka Oracle automatski poništava (automatic rollback) sve efekte te naredbe.
Automatski rollback na nivou naredbe ne utiče na
efekte prethodnih naredbi transakciji.
Oracli automatski može da poništi neku SQL naredbu ukoliko detektuje pojavu deadlock-a u sistemu.
Naredba SAVEPOINT omogućava da se označi
(imenuje) i snimi tekuća tačka u transakciji.
U kombinaciji sa naredbom ROLLBACK, naredba
SAVEPOINT, omogućava da se u slučaju grešaka ponište efekti samo pojedinih delova transakcije a ne čitave transakcije.
Nazivi SAVEPOINT tačaka se mogu ponavljati više puta.
Aktivna SAVEPOINT tačka je poziv SAVEPOINT
naredbe nakon poslednjeg poziva COMMIT ili
ROLLBACK naredbe.
Transakcija može da ima neograničeni broj aktivnih
SAVEPOINT tačaka..
Definisati pojam nivo izolacije I objasniti na primeru Oracle DBMS
Nivo izolacije je sposobnost sistema da promene učinjene u jednoj operaciji učini nevidljivim za druge
operacije.
Oracle podržava 3 nivoa izolacije:
1. READ COMMITED :
Podrazumevani nivo izolacije. Ukoliko neka naredba transakcije zahteva lock koji ved drži neka druga
transakcija, naredba čeka da se oslobodi. Transakcije se izvršavaju paralelno i izmene koje vrši jedna
transakcija nisu vidljive ostalim dok sene izvrši COMMIT naredba. Vide se izmene samo koje su bile
commitovane pre početka.
2. SERIALIZABLE:
Transakcije se izvršavaju tako da izgleda kao da se izvršavaju jedna za drugom. Ako neka transakcija zahteva lock koji drži neka druga transakcija onda se ta naredba završava greškom. Vide se izmene samo koje su bile validne pre početka transakcije.
3. READ ONLY:
Poseban slučaj serializable izolacije. Transakcija čita podatke samo iz baze. Transakcija vidi izmene koje su
bile validne pre početka transakcije.
Fenomeni koji mogu da se jave kao posledica postojanja konkurentnih transakcija:
◦ Dirty read – transakcija čita podatke koje je izmenila druga transakcija koja još uvek nije komitovana
◦ Nonrepeatable (fuzzy reads) – Ukoliko transakcija pokuša da ponovo učita podatke, koje je prethodno učitala, može se desiti da ti podaci budu modifikovani ili obrisani kao posledica neke druge komitovane transakcije.
◦ Phantom reads – višestruko izvršavanje istog upita u okviru transakcije može da vraća različite rezultate (pojavljuju se novi podaci koji prethodno nisu postojali).
Definisati mehanizam zaključavanja kod relacionih DBMS-ova.
Mehanizam zaključivanja omogucava korišcenje baze podataka u višekorisničkom okruženju bez opasnosti da ce doci do narušavanja konzistentnosti podataka.
Oracle automatski vodi računa o mehanizmu zaključivanja.
Po završetku Oracle oslobađa sve lock-ove.
Oracle podržava dva moda zaključavanja:
1. Ekskluzivni mod – Onemogucava deljenje resursa između transakcija.
2. Deljivi mod – Omogucava deljenje resursa u zavisnosti od operacije koja se izvršava nad tim resursom.
Oracle podržava nekoliko tipova zaključavanja:
1. DML locks (row level i table level locks) – Zaključavanje sloga/skupa slogova ili sprečava DDL nad
tabelom.
2. DDL locks – štiti definiciju objekta tokom izvršavanja DDL operacija.
3. Oracle Internal Locks – potpuno automatizovani mehanizam za oracle-ve interne strukture
podataka.