8

Величина: px
Почињати приказ од странице:

Download "8"

Транскрипт

1 KAKO (NE KORISTITI OBJEKTNO-RELACIJSKE MOGUĆNOSTI ORACLE DBMS-a Zlatko Sirotić Istra informatički inženjering d.o.o., Pula SAŽETAK Kasnih 80-tih i ranih 90-tih godina prošlog stoljeća počeli su se pojavljivati prvi objektni DBMS sustavi, a kasnih 90-tih prvi objektno-relacijski DBMS sustavi. Danas skoro svi RDBMS proizvodi imaju prefiks "O", tj. predstavljaju se kao ORDBMS (objektno-relacijski DBMS, podržavajući (barem neke objektno-relacijske mogućnosti definirane u SQL:1999 i SQL:2003 standardu. No, poznati znanstvenik na području relacijskog modela i relacijskih sustava C.J.Date napisao je u svojoj knjizi "Database in Depth" (2005, str. 32: "After all, the whole point of an "objectrelational" system is precisely that we can have attribute values in relations that are of arbitrary complexity. Perhaps a better way to say it is this: a proper objectrelational system is just a relational system with proper type support - which just means it's a proper relational system, no more and no less.". U radu se prikazuju objektno-relacijske mogućnosti Oracle 11g (i 10g DBMS-a i daju se preporuke na koji bi se način te mogućnosti trebale koristiti (također, na koji način se ne bi trebale koristiti! u skladu s Dateovim radovima. UVOD Relacijski model podataka teoretski je razradio E.F.Codd i prvi put ga opisao u radu "A Relational Model of Data for Large Shared Data Banks", CACM 13, No. 6 (June Date (2004, str. 170 navodi da je taj rad i danas vrijedan proučavanja, iako su, naravno, neke ideje u međuvremenu doživjele promjene, ali su te promjene više evolucijske nego revolucionarne. Na temelju relacijskog modela, u desetljeću intenzivno se radilo na dizajniranju RDBMS sustava - relacijskih sustava za upravljanje bazama podataka. Prvi ("laboratorijski" sustav razvijen je u IBM-u (u kojem je tada radio i E.F.Codd, u okviru projekta System R. U tom projektu stvoren je i jezik SEQUEL (Structured English Query Language, čije je ime kasnije skraćeno na SQL. Taj je projekt potaknuo šire zanimanje za relacijski model i za jezik SQL. Prvi komercijalni RDBMS sustav pod imenom Oracle ponudila je godine kompanija Relational Software Inc. (osnovana je 1977., kasnije je preimenovana u Oracle Corporation. RDBMS sustavi nisu prvi DBMS sustavi na tržištu. Prije njih postojali su hijerarhijski i mrežni DBMS. Međutim, Date ističe (2004, str. 27 da je neprimjereno govoriti o hijerarhijskom i mrežnom modelu podataka, jer su, za razliku od relacijskog modela, hijerarhijski i mrežni "model" nastali nakon pojave tržišnih hijerarhijskih i mrežnih DBMS sustava, pa su "modeli" prikazivali ono što je bilo realizirano u tržišnim produktima. Prvi objektno-orijentirani programski jezik (OOPL Simula 67 nastao je daleke godine (autori su mu Kristen Nygaard i Ole-Johan Dahl dakle, prije pojave relacijskog modela! Jezik Simula 67 inspirirao je kreatore drugih OOPL jezika (npr. jezika Smalltalk, C++, Eiffel. Do naglog razvoja OOPL jezika došlo je početkom i sredinom 80-tih godina prošlog stoljeća. Na krilima uspjeha OOPL-a, kasnih 80-tih i ranih 90-tih godina prošlog stoljeća počeli su se pojavljivati prvi objektni DBMS sustavi, a kasnih 90-tih prvi objektno-relacijski DBMS sustavi. 1. TIPOVI PODATAKA Da bi se prikazao relacijski model, a posebno onaj dio koji govori o strukturi podataka, vrlo je važno definirati tip podataka. Prema (Date 2004, str. 136 tip podataka je imenovani skup vrijednosti koje zadovoljavaju određena ograničenja nad tipom (type constraint. Svakom tipu podataka pridruženi su operatori (read-only i update za operiranje nad vrijednostima i varijablama toga tipa. Date naglašava da je potrebno uvijek voditi brigu o razlici između vrijednosti i varijable za razliku od vrijednosti, varijabla se može mijenjati, tj. tekuća vrijednost varijable može se zamijeniti nekom drugom vrijednošću. Vrijednosti i varijable uvijek moraju biti određenog tipa. 1

2 Tipovi podataka mogu biti sistemski ili korisnički-definirani. Tipovi podataka mogu biti i skalarni ili neskalarni - skalarni tip nema korisnički-vidljivih komponenti. Tip podataka mora imati jednu (ili više mogućih (potencijalnih fizičkih reprezentacija (possible physical representation. Fizička reprezentacija trebala bi korisniku biti sakrivena. Date na puno mjesta u (2004 i (2005 navodi da je jezik SQL dosta loša realizacija relacijskog jezika. Zbog lakšeg objašnjavanja relacijskog modela, Date je razvio vlastiti relacijski jezik Tutorial D. Evo kako u jeziku Tutorial D izgleda definicija tipa POINT (geometrijska točka u dvodimenzionalnom prostoru sa dvije moguće fizičke reprezentacije: TYPE POINT POSSREP CARTESIAN {X RATIONAL, Y RATIONAL} POSSREP POLAR {R RATIONAL, ALFA RATIONAL}; Date naglašava (2004, str. 116 da je tip POINT skalaran, iako moguće fizičke reprezentacije imaju više komponenti (u ovom slučaju obje reprezentacije imaju po dvije komponente. Evo kako u jeziku Tutorial D izgleda definicija ograničenja nad tipom: TYPE WEIGHT POSSREP {D DECIMAL (5, 1 CONSTRAINT D > 0.0 AND D < }; Osim tipova podataka, Date (2004, str 127 navodi potrebu za postojanjem generatora tipova (type generators. Npr. u Tutorial D možemo napisati VAR SALES ARRAY INTEGER 12 ; Varijabla SALES je tipa ARRAY INTEGER 12, a ARRAY je generator tipa. U ovom je slučaju ARRAY sistemski generator tipa, ali generatori tipa mogu biti i korisnički-definirani. Generatori tipa poznati su u literaturi i pod drugim imenima, npr. generički tipovi. Meyer (1997, str. 318 ih naziva generičkim apstraktnim tipovima podataka, u Java jeziku zovu se generics, u C++ jeziku zovu se template(s. Date (2004, str. 115 navodi da pojam apstraktni tip podataka (ADT nije adekvatan, jer na neki način upućuje da postoje i "ne-apstraktni" tipovi podataka, a tip se, po njemu, uvijek treba razlikovati od moguće fizičke reprezentacije. Ipak, držimo da Dateova definicija tipa podataka ima nekih dodirnih točaka sa definicijom ADT-a koju prikazuje Meyer u (1997, poglavlje 6. Meyer kaže da apstraktni tipovi podataka predstavljaju teorijsku (matematičku osnovu za njegovu DBC metodu, pa i za cijeli Eiffel jezik (koji je on dizajnirao i da nam apstraktni tipovi podataka omogućavaju specificiranje softverskog sustava na precizan i kompletan (koliko je to potrebno način, ali bez prespecifikacije (overspecification, tj. bez ulaženja u detalje softverskog rješenja. Drugim riječima, ADT omogućavaju da se precizno definira što se želi dobiti, a da se ne mora ulaziti u detalje kako to postići (aplikativni, a ne imperativni pristup. Meyer prikazuje da se definicija ADT-a sastoji od definicije tipova, funkcija, aksioma i pretkondicija. Npr. kompletna ADS specifikacija za stog (stack izgleda ovako (Meyer, 1997, str. 139: TYPES STACK G FUNCTIONS put: STACK G X G STACK G remove: STACK G - STACK G item: STACK G - G empty: STACK G BOOLEAN make: STACK G AXIOMS For any x: G, s: STACK G A1: item (put (s, x = x A2: remove (put (s, x = s A3: empty (make A4: not empty (put (s, x PRECONDITIONS remove (s: STACK G require not empty (s item (s: STACK G require not empty (s 2

3 Slično kao što Dateov Tutorial D jezik ima ograničenja nad tipovima podataka (TYPE CONSTRAINT, tako Meyer-ov ADT prikazuje ograničenja kroz aksiome i pretkondicije. Date naglašava (2004, str da, za razliku od jezika Tutorial D, SQL nema nešto slično CONSTRAINT specifikaciji, pa bi SQL standard definicija skalarnog tipa WEIGHT bila: CREATE TYPE weight AS DECIMAL (5, 1; Dalje, SQL ne podržava niti specifikaciju moguće fizičke reprezentacije, već se u SQL-u uvijek definira aktualna fizička reprezentacija. Zato će prije navedeni tip POINT, koji je u jeziku Tutorial D bio skalarni tip, u SQL-u biti neskalarni (strukturirani tip: CREATE TYPE point AS ( x FLOAT, y FLOAT NOT FINAL; Napomena: prethodna naredba ima SQL standard sintaksu, a Oracle varijanta iza AS obavezno mora imati riječ OBJECT. 2. RELACIJSKI MODEL PODATAKA Relacijski model je (matematički temelj moderne tehnologije baza podataka. Kako kaže Date (2005, str. 1-4 poznavanje osnova relacijskog modela važno je za svakog tko se profesionalno bavi bazama podataka, jer profesionalci u svakoj disciplini moraju poznavati temelje svog polja rada. Pritom su važni principi, a ne samo konkretni produkti i tehnologije, jer se principi mijenjaju daleko sporije nego konkretni produkti i tehnologije. Danas postoji mnoštvo knjiga koje objašnjavaju relacijski model. Npr. (Date, 2004, 8.izdanje je fundamentalna (i voluminozna knjiga koja se široko koristi na sveučilištima širom svijeta i prodana je u preko primjeraka. (Date, 2005 je relativno kratka (nešto preko 200 stranica knjiga namijenjena profesionalcima koji bi htjeli svoje praktično znanje učvrstiti teoretskim temeljima. I na našem jeziku postoji dobra literatura iz tog područja, npr. (Radovan, 1993 i (Varga, Relacijski model (Date, 2004, str. 109 bavi se strukturom podataka (data structure, operacijama nad podacima (data manipulation i integritetom podataka (data integrity. Ovdje ćemo operacije nad podacima i integritet podataka samo ukratko prikazati. Nešto detaljnije će biti prikazana struktura podataka, jer je to važno za razumijevanje Dateove kritike nekih objektnorelacijskih aspekata SQL:1999 i SQL:2003 standarda (i konkretnih tržišnih ORDBMS sustava koji to podržavaju. Najvažniji koncepti u relacijskom modelu jesu relacijska vrijednost ili relacija i relacijska varijabla. No, prvo treba definirati pojam (koristit ćemo engleski termin tuple vrijednost (tuple value ili samo tuple. (Date 2004, str. 141 definira tuple (value kao skup uređenih trojki u obliku <Ai, Ti, vi>, gdje i poprima vrijednost 1..n, Ai je ime atributa, Ti je ime tipa, a vi je vrijednost (koja je tipa Ti. Uređeni par <Ai, Ti> je atribut tuple-a. Skup svih atributa je zaglavlje (heading tuple-a. Tuple tip (tuple type je determiniran tim zaglavljem. Za razliku od tuple vrijednosti, tuple varijable (tuple variables nisu dio relacijskog modela, ali su tuple varijable važne za korištenje u host programskom jeziku koji koristimo za pisanje aplikacije (Date 2004, str Relacijska vrijednost (relational value ili relacija (Date 2004, str. 146 sastoji se od zaglavlja (heading i tijela (body. Zaglavlje relacije je isto kao i zaglavlje tuple-a. Tijelo relacije je skup svih tuple-a koji imaju isto zaglavlje. Relacijski tip (relational type je determiniran zaglavljem relacije. Date (2004, str. 149 navodi neke važne osobine relacije, koje proizlaze iz činjenice da (matematički skup po definiciji nema uređenja elemenata i nema duplih elemenata: 1. atributi su neuređeni u smislu lijevo-desno, 2. tuple-ovi su neuređeni u smislu gore-dolje, 3. relacija nema duplih tuple-ova. Za razliku od prethodno navedenih pojmova relacija, tuple i atribut, SQL koristi pojmove tablica, redak i stupac, ali ti pojmovi nisu (potpuno ekvivalentni. Npr., za razliku od prethodno navedenih osobina relacije, SQL tablica ima uređene stupce, ima uređene retke i može imati duple retke. Date naročito kritizira ovo zadnje. 3

4 Osim prethodnog, Date (2004, str. 149 naglašava da su relacije uvijek u 1.normalnoj formi, tj. (suprotno onome što smo uobičajeno učili vrijednosti u atributima relacije mogu biti druge relacije to su tzv. RVA (relational-valued attributes. No, to ne znači da Date preporuča takav dizajn relacija uglavnom preporuča upravo suprotno (2005, str. 143, ali činjenica je da relacijski model to dozvoljava. Osim relacija (relacijskih vrijednosti, relacijski model čine i relacijske varijable ili relvar. Date ih (2004, str. 156 dijeli u bazne relvar-e i virtualne relvar-e ili poglede (view. U jeziku Tutorial D sintaksa za deifniranje baznog relvar-a je sljedeća: VAR <relvar name> BASE <relation type> <candidate key def list> <foreign key def list> SQL koristi isti termin tablica i za "tablične vrijednosti" i za "tablične varijable" (Date 2004, str Osim strukture podataka, relacijski model definira i operacije nad podacima, bilo kroz relacijsku algebru, bilo kroz njoj ekvivalentan relacijski račun, ili kroz račun domena (Date 2004, poglavlje 7 i 8, (Radovan 1993, poglavlje 5. Što se tiče SQL-a Date (2004, str. 231 napominje da SQL nije baziran niti na relacijskoj algebri, niti na relacijskom računu, već malo na jednome, malo na drugome (a malo ni na jednom, ni na drugom. Dakle, nikako ne stoji da "relacijski model = SQL". No, Date je svjestan (2005, str da se SQL ne može tek tako izbaciti (on vidi SQL kao database COBOL, pa preporuča da se SQL izgradi na temelju (on top nekog pravog relacijskog jezika i da se, naravno, korisnicima (programerima ili krajnjim korisnicima dozvoli upotreba (uz SQL i tog pravog relacijskog jezika. Treći dio relacijskog modela, integritet podataka, najviše je zanemaren od strane proizvođača RDBMS sustava, ali je (Date 2004, str. 164 doživio i najveće (evolucijske, ne revolucionarne promjene u okviru relacijskog modela. Integritetna ograničenja ili samo ograničenja (constraints Date (2004, str 266 dijeli u 4 kategorije: 1. ograničenja na razini baze, 2. ograničenja na razini relacijske varijable, 3. ograničenja na razini atributa, 4. ograničenja nad tipom (type constraint. Današnji RDBMS sustavi uz deklarativna ograničenja: PK za primarni ključ, UK za jedinstveni ključ, FK za strani ključ, CK za provjeru vrijednosti u jednom retku i NOT NULL (što bi po Dateu trebalo biti obavezno podržavaju i okidače (triggers. Okidači su u biti procedure i mogu služiti i za druge namjene, a ne samo za očuvanje integriteta podataka. Date preferira deklarativna ograničenja. To ne znači da je on protiv okidača trebamo ih koristiti dok nemamo (deklarativne alternative. Date (2004, str 293 navodi da su u zadnje vrijeme integritetna ograničenja ponovno postala zanimljiva ovaj put pod imenom poslovna pravila (business rules. Poslovna pravila su zapravo user-friendly (tj. manje formalan ili neakademski način govora o integritetu baze podataka. Date drži taj trend pozitivnim, te preporuča knjige koje je napisao R.G.Ross, jedan od autoriteta na području poslovnih pravila. Dobra knjiga iz područja poslovnih pravila je i Von Halle (2002. Još je jedna Dateova napomena (2005, str. 122 vezana je za integritetna ograničenja - ona ne bi trebala biti odgođena (deferred, npr. odgođena do pred kraj transakcije. Naime, za razliku od uobičajenog mišljenja da je transakcija jedinica integriteta (u akronimu ACID - Atomicity, Consistency, Isolation, Durability - to predstavlja Consistency, Date drži da bi naredba (statement trebala biti jedinica integriteta, pa integritetna ograničenja ne bi smjela biti odgođena. Što se tiče teorije dizajna baze podataka (database design teory, koju čine prije svega pravila za normalizaciju podataka, Date joj posvećuje dosta prostora u (2004, poglavlja i (2005, poglavlje 7, ali u (2005, str. 136 navodi da teorija dizajna baze podataka nije dio relacijskog modela, već da je ona posebna teorija temeljena (on top na relacijskom modelu. Vezano za normalizaciju podataka, Date navodi (2004, str da se u području skladišta podataka često koriste zvjezdaste sheme (star schema koje po njegovom mišljenju imaju dosta problema, između ostalog i problema sa normalizacijom. Date ističe (kao negativnu preporuku "odoli normalizaciji" koju npr. u svojoj knjizi (Kimball, 2002 navodi jedan od autoriteta na području skladišta podataka. 4

5 3. NASLJEĐIVANJE TIPOVA Nasljeđivanje tipova (type inheritance ili nasljeđivanje klasa svakako je važno za objektnoorijentirane programske jezike i za objektne DBMS sustave, ali kako tvrdi Date - i za relacijski model i za relacijske DBMS sustave. Kod relacijskog modela Date (2004, str. 609 navodi da nas zanima ono što se inače naziva nasljeđivanje domena, što je isto što i nasljeđivanje tipova (podataka, jer su po njemu domena (termin koji se nekad često koristio u okviru relacijskog modela i tip jedno te isto. Dakle, vrijedi "domena = tip". S druge strane, Date smatra i da su tip i klasa jedno te isto. B.Meyer, autoritet na području OOPL-a slaže se da je klasa (i tip, ali je i modul (1997, str. 170: "U pristupu koji nije objektno orijentiran, koncepti modula i klase jasno su odvojeni. Najvažnije svojstvo pojma klasa je da obuhvaća oba koncepta, stapajući ih u jednu lingvističku tvorevinu. Klasa je modul, ili jedinica dekompozicije softvera. Međutim, klasa je također i tip (ili, u slučajevima u kojima učestvuje generičnost, uzorak tipa.". Dakle, vrijedi "klasa = tip = modul". Napomenimo da je u prethodnom citatu Meyer koristio izraz uzorak (pattern tipa za ono što Date naziva generator tipa. Za razliku od nasljeđivanja tipova (nasljeđivanja domena što smatra korisnim, Date (2004, str. 609 navodi da je skeptičan prema ideji nasljeđivanja tablica, tj. postojanja (kako ih SQL standard naziva podtablica i nadtablica (subtables, supertables, s osobinom da podtablica nasljeđuje sve stupce nadtablice i dodaje nove. U jeziku Tutorial D, ovako se prikazuje hijerarhija tipova PLANE_FIGURE, ELLIPSE, CIRCLE: TYPE PLANE_FIGURE ; TYPE ELLIPSE IS PLANE_FIGURE POSSREP { A LENGTH, B LENGTH, CTR POINT CONSTRAINT A >= B }; TYPE CIRCLE IS ELIPSE CONSTRAINT THE_A (ELLIPSE = THE_B (ELLIPSE POSSREP { R = THE_A (ELLIPSE CTR = THE_CTR (ELLIPSE }; Tip ELLIPSE je definiran kao pravi podtip tipa PLANE_FIGURE (PLANE_FIGURE je pravi nadtip tipa ELLIPSE. Tip CIRCLE je podtip tipa ELLIPSE, ali mu je uvedeno ograničenje da je poluos A jednaka poluosi B (tj. ima polumjer R. Date (2004, str. 613 navodi da je pravi smisao nasljeđivanja u tome da ako je B podtip tipa A, tada svi operatori (ili, drugim riječima: procedure, funkcije, metode koji su primjenjivi na tip A istovremeno primjenjivi i na tip B. Dakle, parametri (u drugoj terminologiji - formalni parametri operatora mogu biti jednog deklariranog tipa, a argumenti (u drugoj terminologiji aktualni parametri kod poziva operatora mogu biti ili deklariranog tipa, ili njegovog podtipa. Kaže se (Date 2004, str. 615 da je operator polimorfan. Međutim, u ovom slučaju govorimo o tzv. inkluzijskom polimorfizmu, a postoji i polimorfizam sa preopterećenjem (overloading operatora, kod kojeg dva ili više operatora imaju isto ime i različite parametre. Međutim, kada se govori o nasljeđivanja tipova (ili nasljeđivanju klasa pod pojmom polimorfizam misli se na inkluzijski polimorfizam. Slično kao kod parametara i argumenata operatora, polimorfnost se manifestira i kod rada sa varijablama. Npr. varijabli E čiji je deklarirani tip ELLIPSE može se pridružiti varijabla C čiji je deklarirani tip CIRCLE. Meyer (1997, str. 467 takvo pridruživanje naziva polimorfno pridruživanje. Kod nasljeđivanja tipova, podtip može imati specifičnu implementacijsku verziju određenog operatora. U toku poziva operatora, sistem će sam pozvati odgovarajuću verziju operatora (Date 2004, str. 616, na temelju run-time vezivanja (run-time binding ili (drugi naziv dinamičkog vezivanja. 5

6 Vezano za nasljeđivanje klasa, Meyer (1997, str. 494 naglašava dvojako značenje nasljeđivanja, koje proizlazi iz dvojne uloge klase kao tipa i kao modula. Sa stanovišta modula, najvažnija je prednost nasljeđivanja u tome da modul može biti istovremeno i zatvoren i otvoren za mijenjanje (princip otvoren-zatvoren. Naime, metode nadklase mogu biti zatvorene za mijenjanje, ali možemo napraviti podklasu u kojoj ćemo nadjačati (Meyer kaže redefinirati neku metodu i time je modul postao otvoren. Navedimo sada analogan primjer definiranja hijerarhije tipova po SQL standardu (bez definiranja operatora: CREATE TYPE plane_figure NOT INSTANTIABLE NOT FINAL; CREATE TYPE ellipse UNDER plane_figure AS ( a LENGTH, b LENGTH, ctr POINT INSTANTIABLE NOT FINAL; CREATE TYPE circle UNDER ellipse AS ( r LENGTH INSTANTIABLE NOT FINAL; Kako je rečeno i prije, za razliku od jezika Tutorial D, SQL ne podržava ograničenja tipa i moguće fizičke reprezentacije. Zbog toga u SQL-u tip ELLIPSE ima tri atributa (što je u redu, ali podtip CIRCLE ima četiri atributa, a ne dva, koliko bi ih trebao imati. Naravno, atributi a, b, i r u podtipu CIRCLE morali bi imati uvijek jednaku vrijednost, inače dobijamo "ne-okrugli krug". Možemo primijetiti da je ovaj nedostatak SQL jezika u odnosu na Tutorial D sličan nedostatku DBC metode (posebno nedostatku invarijanti klase u OOPL jezicima (npr. C++ i Java u odnosu na jezik Eiffel (koji podržava DBC. 4. OBJEKTNO-ORIJENTIRANI (OODBMS I OBJEKTNO-RELACIJSKI (ORDBMS SUSTAVI Date (2004, str. 813 navodi kako se kasnih 80-tih i ranih 90-tih godina prošlog stoljeća javio velik interes za objektno-orijentirane (ili kraće: objektne DBMS sustave. Jedan od razloga bio je taj što su SQL produkti tada sigurno bili neadekvatni za rješavanje nekih specifičnih aplikacijskih područja kao što su npr. CADCAM i CIM sustavi, CASE sustavi, GIS sustavi, specifične znanstvene i medicinske aplikacije, sustavi za pohranu i pretraživanje dokumenata i sl. S druge strane, tada su se u upotrebi već dokazali objektno-orijentirani programski jezici, kao što su npr. Smaltalk ili C++. Objektni DBMS sustavi imaju svoj izvor u objektnim programskim jezicima. Kao i objektni programski jezici, tako i objektni DBMS djeluju obećavajuće u smislu povećavanja razine apstrakcije na kojoj se programira. Često se tvrdi da je objektni pristup bliži realnom svijetu, tj. da su softverski objekti slika objekata realnog svijeta. Međutim, kako ističe Meyer (1997, str. 231: "Softverski sistem nije model stvarnosti; u najboljem slučaju to je model modela nekog dijela stvarnosti. Sistem za praćenje pacijenata u bolnici nije model bolnice, već model modela podskupa bolničke stvarnosti.". Treći razlog povećane potrebe (ili želje za objektnim DBMS sustavom proizlazi također kao posljedica povećane upotrebe OOPL jezika. Naime, programerima je potreban neki sistem perzistencije, koji će omogućiti da se tranzijentni objekti sačuvaju i nakon kraja izvršenja programa, tj. da postanu perzistentni objekti. Naravno, kao mehanizam perzistencije mogu poslužiti (i najčešće to jesu relacijski DBMS sustavi. Međutim, RDBMS sustavi nisu (ili nisu bili dobro prilagođeni za pohranjivanje kompleksnih struktura objekata, što se naziva (Meyer 1997, str neslaganje impedancije (impedance mismatch između objektnog modela podataka (objektnog programskog jezika i relacijskog modela podataka (relacijskog DBMS sustava. Za rješavanje tog problema često se (Larman 2002, poglavlje 34 koriste (softverski okviri za perzistenciju (persistence framework, kao skup apstraktnih i konkretnih klasa koje služe za realiziranje servisa za perzistenciju objekata. Što se tiče navedena tri razloga za upotrebu ODBMS sustava umjesto RDBMS sustava, može se reći da su današnji RDBMS sustavi puno prilagođeniji za rad sa CADCAM i ostalim prije navedenim specifičnim sustavima, jer današnji RDBMS sustavi podržavaju različite tipove podataka koje prije nisu podržavali. 6

7 S druge strane, uvođenjem korisnički definiranih tipova podataka i nasljeđivanja tipova, RDBMS sustavi približili su se objektnim sustavima, što znači da je i kod njih povećana razina apstrakcije, a u radu s OOPL jezicima smanjeno je (ali ne i potpuno uklonjeno neslaganje impedancije. Meyer (1997, str navodi da je minimalan skup osobina koje objektni DBMS sustav treba imati sljedeći: treba imati one osobine koje ima (relacijska baza podataka, treba podržavati učahurivanje, identitet objekata i reference. Meyer nasljeđivanje (jednostruko ili višestruko drži dodatnom, korisnom, ali ne i nužnom osobinom. Osim nasljeđivanja, Meyer kao dodatne mogućnosti navodi: praćenje verzija objekata, praćenje verzija klasa i evolucija sheme, dugačke transakcije, zaključavanje, upite. Blaha i Premerlani (1998, poglavlje 15 ne navodi opće osobine koje treba imati ODBMS sustav, već navodi osobine produkta ObjectStore. Meyer (1997, str ukratko opisuje ODBMS sustave Matisse i Versant. Zanimljivo je napomenuti da informativno-propagandni materijali firme Matisse Software ( naglašavaju kako njihov DBMS sustav Matisse predstavlja "Object-SQL Database" (na početnoj web stranici piše da je "Post-Relational SQL Database". U materijalima ističu da je greška ranih ODBMS sustava upravo u tome što perzistenciju objekata omogućavaju na "prelagan" (tj. nekontroliran način, te da nijedan DBMS sustav ne može biti uspješan ako ne podržava SQL, i to u samoj jezgri (kernel DBMS sustava. Ističu kako je njihovo rješenje, tj. objektna-sql baza, fuzija najboljeg iz oba svijeta lakoće objektnog razvoja i sveprisutnosti SQL jezika. Možemo primijetiti da se proizvođači RDBMS i ODBMS sustava sve više trude da svoje sustave naprave kao hibridne. Što se tiče ODBMS sustava, postojala je organizacija za njihovu standardizaciju Object Data Management Group (ODMG, u kojoj su se nalazili manje-više svi proizvođači ODBMS sustava. ODMG je napravio standard poznat kao ODMG Object Model, čija je zadnja verzija 3.0 napravljena godine. ODMG 3.0 definira Object Model, Object Definition Language (ODL, Object Query Language (OQL, ali ne definira nešto kao "Object Manipulation Language", već se manipulacija objektima radi sa programskim jezicima za koje ODMG standard pruža podršku vezivanja jezika (language bindings: C++, Smalltalk i Java. Organizacija ODMG se rasformirala, a pravo na njihov standard preuzela je poznata organizacija (sličnog naziva Object Management Group (OMG, koja je objavila da će napraviti "4th generation" standard za objektne baze podataka. Treba napomenuti da postoje i razmišljanja o tome da ODBMS (pa ni RDBMS sustavi uopće nisu potrebni, jer se perzistencija može učiniti dovoljno snažnom već u okviru određenog OOPL jezika. Npr. kod jezika Java poznat je standard Java Data Objects (JDO. Larman (2002, str. 537 mišljenja je da "tehnologije kao one bazirane na JDO specifikaciji nude parcijalna rješenja". Meyer (1997, str navodi jedan mehanizam (u jeziku Eiffel koji bi omogućio da svi objekti budu predefinirani kao perzistentni, a da tranzijentni objekti budu izuzetak. Po njemu, taj mehanizam nalazi potporu u rastućoj dostupnosti 64-bitnog virtualnog adresnog prostora. No, ipak kaže: "Sve je ovo spekulativno i ne pruža nikakav dokaz da bi se trebalo odreći tradicionalnog pojma baze podataka.". Prije desetak godina, skoro svi proizvođači relacijskih DBMS sustava izašli su na tržište sa objektno-relacijskim nadogradnjama (ili opcijama. Kako navodi Date (2004, str. 859 jasna ideja bila je da njihovi proizvodi trebaju podržavati i objektne i relacijske mogućnosti, tj. proizvodi predstavljaju približavanje između te dvije tehnologije. Dateovo strogo mišljenje je da to približavanje treba ići tako da se zadrže temelji relacijskog modela, koji bi trebao evoluirati tako da uključi dobre osobine objektnih sustava. Date je mišljenja da je najvažnija (i možda jedina dobra ideja koja je uvedena u relacijski model iz objektnog svijeta odgovarajuća podrška za tipove podataka. Druga dobra ideja (ako se računa odvojeno je podrška za nasljeđivanje tipova. Zapravo, riječ je o tome da RDBMS sustavi konačno implementiraju nešto što je u relacijskom modelu davno predviđeno, a to su domene, koje jednostavno možemo zvati tipovi podataka. Relacijski sustav koji na pravilan način podržava domene (tj. tipove može podržavati sve one vrste podataka za koje se prije koristilo ODBMS sustave (CADCAM podaci, GIS podaci, multimedija, biomedicinski podaci i dr.. Vezano za približavanje između objekata i relacija, Date (2004, str 862 postavlja jedno krucijalno pitanje: "Koji je koncept u relacijskom svijetu blizanac konceptu (objektna klasa u objektnom svijetu?". Date nudi dva moguća odgovora: 1. domena = (objektna klasa, 2. relvar (relacijska varijabla = klasa. Date kaže da je jedini ispravan odgovor prvi, jer i domena i klasa su zapravo tip. Budući je relvar varijabla, a varijable nisu tipovi, drugi odgovor mora biti očito pogrešan. 7

8 No, neki produkti polaze od tog pogrešnog odgovora i takvu grešku Date naziva (slobodno prevedeno prva gruba greška (The First Great Blunder. Iz te greške proizlaze mnoge posljedice pa i ta da se u nekim produktima javlja koncept nadtablice i podtablice (gdje se podtablica kreira kao podklasa nadtablice. Date (2004, str. 869 pretpostavlja da prva gruba greška ima korijenje u nedostatku konsenzusa oko značenja nekih temeljnih termina u objektnom svijetu, a naročito ističe upotrebu termina objekt u "objektnoj analizi i dizajnu" ili "objektnom modeliranju", gdje zapravo nije riječ o objektima, nego o onome što se u području baza podataka obično naziva entitet. Druga gruba greška (Date 2004, str. 870 je miješanje pokazivača (pointer i relacija. Pokazivači pokazuju na varijable, a ne na vrijednosti. Ali, ako relacijska varijabla R1 ima atribut čija je vrijednost pokazivač u relacijsku varijablu R2, tada ti pokazivači pokazuju na tuple varijablu, a pojam tuple varijable ne postoji u relacijskom modelu jer se relacijski model (slobodno rečeno bavi relacijama (relacijskim vrijednostima koje su skupovi tuple vrijednosti, koji su pak skupovi skalarnih vrijednosti. Date pretpostavlja da druga gruba greška dolazi od toga što objektni sustavi i objektni jezici uključuju pokazivače kao neku formu objektnog ID-a, pa se onda ideja o miješanju pokazivača i relacija javila iz želje da relacijski sustavi budu što više "object-like". 5. ORACLE TIPOVI PODATAKA Oracle baza 11g (i prethodne verzije podržava prije svega sistemski definirane ili ugrađene (built-in tipove podataka (Oracle ih naziva native, koji mogu biti skalarni ("jednostavni" ili neskalarni. Slijedi kratak popis nekih sistemski definiranih skalarnih tipova podataka. Znakovni tipovi podataka su (između ostalih CHAR za fiksan broj znakova (maksimum je 2000, VARCHAR2 za varijabilan broj znakova (maksimum je 4000, CLOB (Character Large OBject zapravo, nije riječ o objektu za veliki broj znakova (4 GB i više. Najvažniji numerički tip podataka je NUMERIC. Najvažniji datumski, a istovremeno i vremenski tip podataka je DATE, koji služi za pamćenje podataka o stoljeću, godini, mjesecu, danu, satu, minuti i sekundi. Ne postoji tip podataka BOOLEAN (odnosno, postoji u PLSQLu, ali ne i u SQL-u, kojega Date (2005, str. 165 smatra fundamentalnim tipom podataka. Od neskalarnih sistemski definiranih tipova podataka vjerojatno je najzanimljiviji XMLTYPE (uveden je u bazi 9i, koji služi za pohranu XML dokumenata i manipulaciju njima pomoću brojnih ugrađenih metoda (operatora. Iako je riječ o sistemskom tipu podataka, on se koristi na sličan način kao korisnički definirani (user-defined tipovi podataka. Osim iz SQL-a, XMLTYPE može se koristiti i iz PLSQL-a i Jave: programske varijable, parametri procedure, povratne vrijednosti funkcije i sl. - mogu biti tipa XMLTYPE. Oracle je godine objavio 8.0 verziju baze i nazvao ju objektno-relacijskom. U skladu s tim nadopunjeni su i SQL i Oracle specifični programski jezik PLSQL. U bazu 8.0 uvedeni su novi tipovi podataka poznati kao kolekcije (collection; termin se često koristi neprecizno, jer se ponekad misli na tip, a ponekad na objekt tog tipa, kao i objektni tip (object type za koji možemo reći da je ekvivalent OOPL klasi (napomena: vjerojatno bi pravilnije bilo reći tip objekta, ali zbog lakšeg razumijevanja kod upotrebe tog izraza u rečenicama, koristit ćemo izraz objektni tip želimo dati naglasak na pojam tip, a ne na pojam objekt. Kolekcije se u Oracle literaturi obično navode zajedno sa objektnim tipom, tj. kolekcije se smatraju objektno-relacijskim mogućnostima (značajkama. Zanimljivo je da su u bazi 8.0 te objektno-relacijske mogućnosti činile opciju koja se posebno prodavala, ali već u bazi 8i Oracle ih je ugradio u standardne (bez posebne doplate mogućnosti Oracle baze. Oracle SQL poznaje dva tipa-kolekcije: tip-ugniježđena tablica (nested table type; uobičajeni ne-oracle pojam je MULTISET, a mi ćemo ga nazivati tablični tip i tip-niz (VARRAY type. VARRAY je skraćenica za variable-sized array, ali se definirani broj elemenata može naknadno mijenjati tek od baze 10g. Jezik PLSQL poznaje još jednu vrstu kolekcije asocijativne nizove (associative array, koji imaju porijeklo još iz baze Oracle 7, kada su se zvali PLSQL tablice. Primjer definiranja tabličnog tipa: CREATE TYPE list_of_names AS TABLE OF VARCHAR2(100 Primjer definiranja tipa-niza sa 10 elemenata, te povećanja broja elemenata (od baze 10g na 20: CREATE TYPE array_of_names AS VARRAY(10 OF VARCHAR2(100 ALTER TYPE array_of_names MODIFY LIMIT 20 CASCADE 8

9 Nažalost, pojedinačnim elementima VARRAY tipa ne može se pristupiti kroz SQL, već samo kroz PLSQL. Zapravo, jedno (naše rješenje postoji, ali je poprilično složeno tekst "Updating the Individual Elements of a Varray" na adresi Objektni tip pojavio se u bazi 8.0, ali u bazi 8i Oracle je stavio naglasak na ugrađivanje JVM (Java Virtual Machine u bazu - otuda potječe ono "i" (kao Internet u nazivu 8i. Zanimljivo je pročitati (Feuerstein 2005, str. 982 da se u vrijeme pojave baze 8i smatralo da se programski jezik PLSQL neće nadograđivati sa novim objektnim mogućnostima. Međutim, objektni tip je u bazi 9i (i u SQL-u i u PLSQL-u dobio neke važne objektne mogućnosti kao što su nasljeđivanje, nadjačavanje metoda, polimorfizam. U bazi 10g uvedene su operacije za usporedbu tabličnih tipova i operacije za manipulaciju nad njima (MULTISET operacije, npr. MULTISET UNION, MULTISET INTERSECT i sl.. SQL i PLSQL objektni tip se (barem za sada može definirati samo kao objekt baze (u određenoj shemi. Objektni tip ima dva dijela - specifikaciju i tijelo. U specifikaciji se deklariraju atributi i metode (funkcije i procedure, a u tijelu se metode (deklarirane u specifikaciji u potpunosti definiraju. Metode mogu biti statične (STATIC tj. metode koje se ne primjenjuju na određeni objekt, već na cijelu klasu, te MEMBER metode. U sljedećem primjeru prikazan je objektni tip (samo njegova specifikacija koji ima dva atributa i tri (MEMBER metode, od kojih je jedna metoda konstruktor (mora se zvati isto kao objektni tip: CREATE OR REPLACE TYPE osoba AS OBJECT ( ime VARCHAR2 (20, tezina_u_kg NUMBER, CONSTRUCTOR FUNCTION osoba ( p_ime VARCHAR2, p_tezina_u_kg NUMBER RETURN SELF AS RESULT, MEMBER PROCEDURE prikazi_podatke, MEMBER FUNCTION tezina_u_funtama RETURN NUMBER NOT FINAL Budući da prethodni objektni tip nije finalan (označen je sa NOT FINAL, možemo napraviti podklasu i nadjačati bilo koju njenu MEMBER metodu (Oracle STATIC metode ne mogu se nadjačati, već sakriti, jer je default kod metoda NOT FINAL. Npr. u nastavku radimo podklasu prethodne klase i u njoj nadjačavamo metodu PRIKAZI_PODATKE, te uvodimo novu metodu JEDI_MALO_I_DOBRO, koja se dalje ne može nadjačati, jer je označena sa FINAL (a podklasa je označena sa NOT FINAL, kako bi se mogle raditi i njene podklase: CREATE OR REPLACE TYPE gurman UNDER osoba ( omiljena_hrana VARCHAR2(20, CONSTRUCTOR FUNCTION gurman ( p_ime VARCHAR2, p_tezina_u_kg NUMBER, p_omiljena_hrana VARCHAR2 RETURN SELF AS RESULT, OVERRIDING MEMBER PROCEDURE prikazi_podatke, FINAL MEMBER PROCEDURE jedi_malo_i_dobro NOT FINAL Oracle objektni tipovi mogu se koristiti za kreiranje perzistentnih objekata (kroz SQL i za kreiranje tranzijentnih objekata (kroz PLSQL. Nažalost, za sada Oracle PLSQL ne podržava reference (ili pokazivače na tranzijentne objekte (to bi vjerojatno uvelo dodatnu komplikaciju dizajnerima PLSQL-a potrebu za automatskim sakupljanjem smeća, jer ne želimo da programer mora sam, kao u jeziku C++, voditi brigu o brisanju nepotrebnih objekata. Kao primjer rada sa tranzijentnim objektima može se pogledati naš tekst "The Template Design Pattern in PLSQL" na web adresi 9

10 Jedan drugi naš tekst pokazuje pak moguće greške kod istovremene upotrebe nadjačavanja i preopterećenja metoda - "Dynamic Method Dispatch and Method Overloading in a Subtype" na web adresi Za razliku od referenci na tranzijentne objekte, koje (za sada ne podržava, Oracle podržava reference na perzistentne objekte, i to ne samo unutar PLSQL jezika, već i unutar samog SQL-a. To znači da jedna relacija može imati reference na retke druge relacije to je ono što Date smatra (drugom grubom greškom. Referentni tip (REF na neki drugi tip ne definira se u bazi direktno (pomoću CREATE TYPE naredbe, već u okviru neke druge definicije, npr. kao u sljedećem primjeru (REF dept_type: CREATE TYPE emp_type AS OBJECT ( empno NUMBER, ename VARCHAR2(20, deptno REF dept_type U bazi 9i Oracle je uveo i specijalne tipove podataka ANYDATA, ANYDATASET i ANYTYPE. ANYDATA je samoopisujući tip (self-describing i podržava refleksivnost (kroz odgovarajući API. ANYDATA tip omogućava da stupci (tablice tog tipa ili (PLSQL varijable tog tipa sadrže podatak bilo kojeg sistemski ili korisnički definiranog tipa. ANYDATASET tip je sličan, ali omogućava pohranu skupa podataka (a ne jednog podatka bilo kojeg tipa. ANYTYPE je tip podataka koji sadrži opis drugog (bilo kojeg tipa, bez obzira da li je taj drugi tip podataka perzistentan tip (definiran kroz SQL, ili je čak tranzijentan tip, tj. tip podataka koji se generira dinamički za vrijeme izvršavanja (PLSQL programa. ANYDATA tipovi omogućavaju veliku fleksibilnost u programiranju, ali su zbog svoje fleksibilnosti i teški za razumijevanje, pa su programi koji ih koriste teško čitljivi i mogu biti pogrešno napisani, a greška se pokaže tek kod izvođenja. Ukoliko nam zaista ne treba refleksivno programiranje, bolje ih je ne koristiti. Jedan (naš primjer korištenja ANYDATA i ANYTYPE tipova podataka je "Inserting a 'Generic Record Type' Using ANYDATAANYTYPE Types" na web adresi 6. ORACLE OBJEKTNO-RELACIJSKE TABLICE Imenom objektne-relacijske tablice (object-relational tables možemo nazvati one tablice kod kojih je jedan ili više stupaca (ali ne redak kao cjelina temeljen na objektnom tipu ili tipu-kolekciji. Date smatra da su takve vrste tablica sasvim prihvatljive i da su to zapravo relacijske tablice. U sljedećem primjeru kreiramo tip ADRESA_T i koristimo ga za definiciju stupca ADRESA u objektno-relacijskoj tablici OSOBA: CREATE TYPE adresa_t AS OBJECT ( grad VARCHAR2(20, ulica VARCHAR2(30 CREATE TABLE osoba ( ime VARCHAR2(40 PRIMARY KEY, adresa adresa_t Kada iz Oracle alata SQL+ pogledamo pomoću naredbe DESCRIBE opis tablice OSOBA, vidjet ćemo da ona ima dva stupca: Name Type IME VARCHAR2(40 ADRESA ADRESA_T 10

11 Međutim, tablica OSOBA zapravo ima 4 stupca: skalarni stupac IME, dva stupca koja predstavljaju komponente stupca-objekta ADRESA (njihova imena počinju sa SYS, te poseban stupac (dužine 1 byte, koji se zove kao stupac-objekt (u ovom slučaju ADRESA - njega Oracle koristi za interne potrebe, kao oznaku tipa: SELECT segcol#, name, segcollength, type# FROM sys.col$ WHERE obj# = (SELECT object_id FROM user_objects WHERE object_name = 'OSOBA' ORDER BY segcol#; SEGCOL# NAME SEGCOLLENGTH TYPE# IME ADRESA SYS_NC00003$ SYS_NC00004$ 30 1 Unos i izmjena redaka nad tablicom OSOBA prikazani su u nastavku. Primijetimo da se kod unosa vrijednosti neskalarnog stupca ADRESA mora pozvati (default konstruktor ADRESA_T, a kod izmjene komponente neskalarnog tipa mora se koristiti alias tablice, dok se kod izmjene kompletnog skalarnog stupca opet koristi konstruktor (a alias tablice nije nužan: INSERT INTO osoba VALUES ( 'Ana', adresa_t ('G1', 'U1' ; UPDATE osoba o SET o.adresa.ulica = 'U2' WHERE ime = 'Ana'; UPDATE osoba SET adresa = adresa_t ('G2', 'U3' WHERE ime = 'Ana'; Slijede dvije varijante SELECT naredbe nad tablicom OSOBA prva selektira neskalarni stupac kao cjelinu, a druga selektira komponente skalarnog stupca (u drugom slučaju je nužan alias tablice: SELECT ime, adresa FROM osoba; IME ADRESA(GRAD, ULICA Ana ADRESA_T('G2', 'U3' SELECT ime, o.adresa.grad, o.adresa.ulica FROM osoba o; IME ADRESA.GRAD ADRESA.ULICA Ana G2 U3 Izbrišimo sada tablicu i tip, da nam ne smetaju u nastavku: DROP TABLE osoba; DROP TYPE adresa_t; 11

12 Prikažimo sada kako izgleda nasljeđivanje tipova podataka, nadjačavanje metoda i polimorfizam kod objektno-relacijskih tablica. Prvo ćemo kreirati nadtip ADRESA_T: CREATE TYPE adresa_t AS OBJECT ( grad VARCHAR2(20, ulica VARCHAR2(30, MEMBER FUNCTION adresa_f RETURN VARCHAR2 NOT FINAL -- OBAVEZNO CREATE TYPE BODY adresa_t AS MEMBER FUNCTION adresa_f RETURN VARCHAR2 IS BEGIN RETURN 'Generalna adresa:' grad ' ' ulica; END; END; Kreirajmo sada tablicu OSOBA i unesimo jedan redak: CREATE TABLE osoba ( ime VARCHAR2(40 PRIMARY KEY, adresa adresa_t ; INSERT INTO osoba VALUES ( 'Ana', adresa_t ('G1', 'U1' ; Kreirajmo sada podtipove KUCNA_ADRESA_T i POSL_ADRESA_T, u kojima ćemo dodati atribute i nadjačati metodu (funkciju ADRESA_F: CREATE TYPE kucna_adresa_t UNDER adresa_t ( dodatak1 VARCHAR2(11, OVERRIDING MEMBER FUNCTION adresa_f RETURN VARCHAR2 ; CREATE TYPE BODY kucna_adresa_t AS OVERRIDING MEMBER FUNCTION adresa_f RETURN VARCHAR2 IS BEGIN RETURN 'Kućna adresa:' grad ' ' ulica ' ' dodatak1; END; END; CREATE TYPE posl_adresa_t UNDER adresa_t ( dodatak1 VARCHAR2(12, dodatak2 VARCHAR2(13, dodatak3 VARCHAR2(14, OVERRIDING MEMBER FUNCTION adresa_f RETURN VARCHAR2 ; CREATE TYPE BODY posl_adresa_t AS OVERRIDING MEMBER FUNCTION adresa_f RETURN VARCHAR2 IS BEGIN RETURN 'Poslovna adresa:' grad ' ' ulica ' ' dodatak1 ' ' dodatak2 ' ' dodatak3; END; END; 12

13 Sada možemo unijeti retke sa konstruktorima podtipova KUCNA_ADRESA_T, POSL_ADRESA_T, jer se tablica OSOBA automatski proširila sa 4 dodatna stupca (1 + 3: SELECT segcol#, name, segcollength, type# FROM sys.col$ WHERE obj# = (SELECT object_id FROM user_objects WHERE object_name = 'OSOBA' ORDER BY segcol#; SEGCOL# NAME SEGCOLLENGTH TYPE# IME ADRESA SYS_NC00003$ SYS_NC00004$ SYS_NC00005$ SYS_NC00006$ SYS_NC00007$ SYS_NC00008$ SYS_NC00009$ 14 1 INSERT INTO osoba VALUES ( 'Pero', kucna_adresa_t ('G2', 'U2', 'D1' ; INSERT INTO osoba VALUES ( 'Mira', posl_adresa_t ('G3', 'U3', 'D1', 'D2', 'D3' ; Sada možemo propustiti dvije varijante SELECT naredbe u prvoj se navode imena stupaca, a u drugoj se navodi ime stupca i ime metode (funkcije. Vidimo da u drugom SELECT-u moramo koristiti alias tablice i zagrade iza imena metode, iako (u ovom slučaju metoda nema parametara: SELECT ime, adresa FROM osoba; IME ADRESA(GRAD, ULICA Ana ADRESA_T('G1', 'U1' Pero KUCNA_ADRESA_T('G2', 'U2', 'D1' Mira POSL_ADRESA_T('G3', 'U3', 'D1', 'D2', 'D3' -- obavezne zagrade iza imena metode (PLSQL ima uniformni pristup, SQL ne SELECT ime, o.adresa.adresa_f( FROM osoba o; IME O.ADRESA.ADRESA_F( Ana Generalna adresa:g1 U1 Pero Kućna adresa:g2 U2 D1 Mira Poslovna adresa:g3 U3 D1 D2 D3 13

14 Dalje - selekcija na retke kojima je adresa određenog tipa -- samo tip kucna_adresa_t ili njegovi podtipovi (sada ih nema SELECT ime, adresa FROM osoba WHERE adresa IS OF (kucna_adresa_t; -- samo tip adresa_t ili njegovi podtipovi (sada su to svi SELECT ime, adresa FROM osoba WHERE adresa IS OF (adresa_t; -- samo tip adresa_t, bez podtipova SELECT ime, adresa FROM osoba WHERE adresa IS OF (ONLY adresa_t; Kako prikazati samo određene atribute objektnog stupca (one koji odgovaraju određenim atributima iz nadtipa adresa ili iz njegovih podtipova? Atribute koji odgovaraju atributima iz nadtipa adresa možemo lako prikazati: SELECT ime, o.adresa.grad FROM osoba o; IME ADRESA.GRAD Ana G1 Pero G2 Mira G3 Ali, ne možemo (direktno prikazati atribute koji odgovaraju atributima podtipa: SELECT ime, o.adresa.dodatak1 FROM osoba o; ERROR at line 1: ORA-00904: "O"."ADRESA"."DODATAK1": invalid identifier Istina, moguće je navesti sistemsko ime stupca: SELECT ime, SYS_NC00009$ FROM osoba; No, "čišće" je koristiti TREAT ("object_column" AS "subtype": SELECT ime, TREAT (adresa AS posl_adresa_t.dodatak1 FROM osoba; IME TREAT(ADRESA Ana Pero Mira D1 Ili, prikažimo samo osobe koje imaju poslovnu adresu: SELECT ime, TREAT (adresa AS posl_adresa_t.dodatak1 FROM osoba WHERE adresa IS OF (posl_adresa_t; IME TREAT(ADRESA Mira D1 14

15 Kako raditi UPDATE objektnog stupca cijelog ili pojedinih atributa? Kako smo i prije vidjeli, lako je ažurirati cijeli stupac: UPDATE osoba SET adresa = adresa_t ('G2', 'U3' WHERE ime = 'Ana'; Možemo ažurirati i atribute objektnog stupca koji odgovaraju atributima iz nadtipa adresa: UPDATE osoba o SET o.adresa.grad = 'G3' WHERE ime = 'Ana'; Ali, ne možemo (direktno ažurirati atribute koji odgovaraju atributima podtipa (npr. podtipa posl_adresa_t. Napomenimo da u sljedećoj naredbi razlog greške nije taj što 'Ana' ima generalnu adresu (tipa adresa_t koja nema stupac dodatak1 isto bi bilo sa 'Pero' i 'Mira', iako njihove adrese (tipa kucna_adresa_t i posl_adresa_t imaju taj stupac: UPDATE osoba o SET o.adresa.dodatak1 = 'D2' WHERE ime = 'Ana'; SET o.adresa.dodatak1 = 'D2' * ERROR at line 2: ORA-00904: "O"."ADRESA"."DODATAK1": invalid identifier Istina, mogli bismo koristiti sistemska imena stupaca dodatak1 (napomena - imamo ih dva, kao kod SELECT, ali to nije "čisto". No, za razliku od SELECT, kod UPDATE ne pomaže TREAT: UPDATE osoba o SET TREAT (adresa AS posl_adresa_t.dodatak1 = 'D2' WHERE ime = 'Ana'; SET TREAT (adresa AS posl_adresa_t.dodatak1 = 'D2' * ERROR at line 2: ORA-00927: missing equal sign Ali, ovo radi - UPDATE inline wiew: UPDATE (SELECT TREAT (adresa AS posl_adresa_t.dodatak1 dod1 FROM osoba WHERE ime = 'Ana' SET dod1 = 'D2'; ili UPDATE (SELECT ime, TREAT (adresa AS posl_adresa_t.dodatak1 dod1 FROM osoba SET dod1 = 'D2' WHERE ime = 'Ana'; Nažalost, moramo primijetiti da smo u ovom konkretnom slučaju dobili nekonzistentnost, iako u UPDATE nismo koristili sistemsko ime stupca (što nije "čisto". Naime, 'Ana' sada ima napunjen stupac dodatak1, iako je njena adresa i dalje ostala tipa adresa_t, a adresa_t nema taj stupac. 15

16 Kako napraviti INDEX ili CONSTRAINT nad atributima objektnog stupca? Ne mora se koristiti "sistemsko ime" (u sljedećoj točki vidjet ćemo da ponekad moramo, npr. kod FK i objektnih tablica, u nekim slučajevima, može i ovako: CREATE INDEX dodatak3_i ON osoba (TREAT (adresa AS posl_adresa_t.dodatak3; Izbrišimo opet tablice i tipove, da nam ne smetaju u nastavku (to ćemo raditi i poslije: DROP TABLE osoba; DROP TYPE posl_adresa_t; DROP TYPE kucna_adresa_t; DROP TYPE adresa_t; Pogledajmo sada kako bi izgledala tablica u kojoj je stupac TELEFONI deklariran kao NIZ_TELEFONA_T (niz ima pet elemenata. Elementi niza u ovom slučaju su skalarne vrijednosti, ali mogu biti i neskalarne. Primijetimo da kod INSERT naredbe nije nužno navesti sve elemente niza (navedena su samo dva telefona: CREATE TYPE niz_telefona_t AS VARRAY (5 OF VARCHAR2(20 CREATE TABLE osoba ( ime VARCHAR2(40 PRIMARY KEY, telefoni niz_telefona_t INSERT INTO osoba VALUES ( 'Mira', niz_telefona_t ('12345', '54321' ; DROP TABLE osoba; DROP TYPE niz_telefona_t; Kako smo već naveli u 5.poglavlju, pojedinačnim elementima VARRAY tipa ne može se pristupiti kroz SQL (osim na vrlo složen način, već samo kroz PLSQL. Zato u Oracle bazi nije preporučljivo koristiti VARRAY tip za stupce tablice. Na kraju, pogledajmo kako objektno-relacijska tablica OSOBA može imati stupac čija je vrijednost neki skup redaka telefona. Za takav slučaj uobičajeno bi se reklo da tablica OSOBA nije u 1.normalnoj formi, ali (kako smo vidjeli u 2.poglavlju Date naglašava da ta tablica jeste u 1.normalnoj formi ali je njen atribut TELEFONI tzv. RVA (relational-valued attribute. Oracle to zove ugniježđena tablica (nested table: CREATE TYPE telefon_t AS OBJECT ( vrsta VARCHAR(10, broj VARCHAR2(20 CREATE TYPE tablica_telefona_t AS TABLE OF telefon_t CREATE TABLE osoba ( ime VARCHAR2(40 PRIMARY KEY, telefoni tablica_telefona_t NESTED TABLE telefoni STORE AS telefoni_tab 16

17 Vidimo da se u stvarnosti stupac TELEFONI realizira kao odvojena tablica TELEFONI_TAB. Interno, tablice-roditelj OSOBA i tablica-dijete TELEFONI_TAB imaju dodatne stupce koji služe za njihovo povezivanje. No, kako kaže Date, nije važna interna realizacija, već vanjski pogled (korisnika, uključujući i programera. Evo kako bi izgledao INSERT nad tablicom OSOBA: INSERT INTO osoba VALUES ( 'Ana', tablica_telefona_t ( telefon_t ('kućni', '123', telefon_t ('posl.', '456', telefon_t ('mobil', '789' ; UPDATE možemo raditi na dva načina. Prvi način, mijenjanje vrijednosti cijelog RVA stupca TELEFONI, je jednostavniji: UPDATE osoba SET telefoni = tablica_telefona_t ( telefon_t ('posl.', '000', telefon_t ('mobil', '111' WHERE ime = 'Ana'; U drugom načinu mijenjamo samo neke retke ugniježđene tablice (nula, jedan ili više, ali uvijek retke-djecu koji pripadaju odabranom (samo jednom retku-roditelju, inače Oracle javlja grešku (u nastavku mijenjamo samo telefone koji pripadaju osobi Ana; konkretno mijenjamo samo jedan telefon. U ovom načinu moramo koristiti operator TABLE, kojim pretvaramo odabrani skup redaka ugniježđene tablice u virtualnu tablicu: UPDATE TABLE (SELECT telefoni FROM osoba WHERE ime = 'Ana' SET broj = '111' WHERE vrsta = 'kućni'; DROP TABLE osoba; DROP TYPE tablica_telefona_t; DROP TYPE telefon_t; Tablice sa RVA stupcima najčešće nisu dobar dizajnerski izbor, jer sa njima model podataka sliči na nekadašnje hijerarhijske baze podataka, u kojima se tablici-djetetu moglo pristupati samo preko tablice-roditelja, a rijetko u stvarnosti imamo tablice kojima ne želimo pristupati i direktno. Kako smo već rekli u 2.poglavlju, i Date (2005, str. 143 drži da RVA atributi najčešće nisu dobar dizajnerski izbor, iako su u relacijskom modelu dozvoljeni. Inače, poznati Oracle ekspert (i Oracle zaposlenik Tom Kyte kaže (2005, str. 417 da on uopće ne upotrebljava objektno-relacijske ili objektne tablice, već koristi objektne mogućnosti unutar jezika PLSQL i koristi objektne poglede (object views napravljene nad relacijskim tablicama. 17

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Baze podataka Tema: Osnovna SELECT naredba Vježbu pripremili:

Више

Slide 1

Slide 1 SVEUČILIŠTE U MOSTARU FAKULTET STROJARSTVA I RAČUNARSTVA SUSTAVI BAZA PODATAKA Doc.dr.sc. GORAN KRALJEVIĆ SUSTAVI BAZA PODATAKA 1 Sustavi baza podataka Web: http://www.uni-mo.ba/~goran Pitanja, primjedbe,

Више

Model podataka

Model podataka Fakultet organizacionih nauka Uvod u informacione sisteme Doc. Dr Ognjen Pantelić Modeliranje podataka definisanje strategije snimanje postojećeg stanja projektovanje aplikativno modeliranje implementacija

Више

Kako spriječiti petlju

Kako spriječiti petlju KAKO SPRIJEČITI ITI POJAVU PETLJE U HIJERARHIJSKOJ STRUKTURI PODATAKA Zlatko Sirotić, dipl.ing. Istra informatički inženjering d.o.o. Pula Stranica 1 Tema je rjer ješavanje određenog enog tipa poslovnih

Више

8 2 upiti_izvjesca.indd

8 2 upiti_izvjesca.indd 1 2. Baze podataka Upiti i izvješća baze podataka Na početku cjeline o bazama podataka napravili ste plošnu bazu podataka o natjecanjima učenika. Sada ćete izraditi relacijsku bazu u Accessu o učenicima

Више

Microsoft Word - MySQL_3.doc

Microsoft Word - MySQL_3.doc 7. Data Manipulation Language (DML) Jezik za rad sa podacima (Data Manipulation Language (DML)) služi za umetanje, brisanje i ažuriranje podataka u bazi. 7.1. Umetanje novih redova u tabelu INSERT sintaksa

Више

Inženjering informacionih sistema

Inženjering informacionih sistema Fakultet tehničkih nauka, Novi Sad Inženjering informacionih sistema Dr Ivan Luković Dr Slavica Kordić Nikola Obrenović Milanka Bjelica Dr Jelena Borocki Dr Milan Delić UML UML (Unified Modeling Language)

Више

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 07 - Podstrukture, const, reference v2018/2019. Sastavio: Zvonimir Bujanović Podstrukture Član

Више

1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om -

1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om - 1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om - Minimizujte pisanje programskog koda - Smanjite obim

Више

Upitni jezik SQL

Upitni jezik SQL Šta je SQL? SQL (Structured Query Language) je jezik koji je Američki Institut za Nacionalne Standarde (ANSI - American National Standards Institute) prihvatio kao standardni jezik za relacione baze podataka.

Више

Objektno orjentirano programiranje 2P

Objektno orjentirano programiranje 2P Sveučilište u Rijeci ODJEL ZA INFORMATIKU Akademska 2016./2017. godina OBJEKTNO ORIJENTIRANO PROGRAMIRANJE Studij: Preddiplomski studij informatike (dvopredmetni) Godina i semestar: 2. godina, 3. semestar

Више

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka dr Slavica Kordid Angelina Vujanovid Marina Nenid Marija Kukid Sistem ocenjivanja Ukupno: 100 bodova Teoretski deo (predavanja)

Више

Microsoft Word - 11 Pokazivaci

Microsoft Word - 11 Pokazivaci Pokazivači U dosadašnjem radu smo imali prilike da koristimo promenljive koje smo deklarisali na početku nekog bloka. Prilikom deklaracije promenljiva dobija jedinstveni naziv i odgovarajući prostor u

Више

Microsoft PowerPoint - GR_MbIS_12_IDEF

Microsoft PowerPoint - GR_MbIS_12_IDEF Menadžment poslovnih informacionih sistema - 12 metode modeliranja funkcija pripremila Doc. dr Gordana Radić Integfated DEFinition Definicija: je metoda (jezik) modeliranja bazirana je na kombinaciji grafike

Више

Introduction to Programming

Introduction to  Programming Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

Више

Microsoft Word - WP_kolokvij_2_rjesenja.doc

Microsoft Word - WP_kolokvij_2_rjesenja.doc Napomena WEB PROGRAMIRANJE I PRIMJENE DRUGI KOLOKVIJ vrijeme predviđeno za rješavanje kolokvija je 60 minuta kolokvij se sastoji od 15 pitanja, a ukupan broj bodova je 165 (uz svaki zadatak istaknut je

Више

4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу St

4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу St 4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу Stavke_računa која ће разрешити проблем везе типа N:N

Више

Teorija skupova - blog.sake.ba

Teorija skupova - blog.sake.ba Uvod Matematika je jedan od najomraženijih predmeta kod većine učenika S pravom, dakako! Zapitajmo se šta je uzrok tome? Da li je matematika zaista toliko teška, komplikovana? Odgovor je jednostavan, naravno

Више

PowerPoint Presentation

PowerPoint Presentation i n f o r m a c i j s k i i n ž e n j e r i n g Usporedba Microsoft Analysis Services i Hyperion Essbase OLAP Marko Hilak Krešimir Futivić Maja Inđić 15.10.2009 Microsoft Analysis Services i Hyperion Essbase

Више

(Microsoft PowerPoint Ben\232i\346.ppt [Compatibility Mode])

(Microsoft PowerPoint Ben\232i\346.ppt [Compatibility Mode]) Modelirajmo podatke za poslovanje Darko Benšić, dbensic@croz.net HrOUG 2011, Rovinj, 18. do 22. listopada 2011. Kako se Oracle SQL Developer DataModeler uklopio u agilni proces razvoja modela??? Agenda

Више

Baza podataka

Baza podataka Baza podataka Marijan Šuflaj FER, 2018 Sadržaj Baza podataka Upravljanje sadržajem baza CREATE TABLE ALTER TABLE DROP TABLE INSERT SELECT Spajanje tablica UPDATE DELETE Baza podataka Apstrakcija pohrane

Више

Introduction to Programming

Introduction to  Programming SQL Indeksi Uloga Indeksa o Kako baza postaje sve veća dizajn baze postaje sve važniji o Indeksi igraju značajnu ulogu u brzini rada same baze jer pomažu DBMS da brže pronađe ono što tražimo o Slični su

Више

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji podrška za IBM DB2, Oracle, Ingres, MySQL, PostgreSQL,

Више

Slide 1

Slide 1 Kako jednostavnije preći na višu verziju Formsa Ivan Lovrić, Vedran Latin 14.10.2009. Sadržaj prezentacije Predmet migracije Razlozi za migraciju Infrastruktura potrebna za migraciju Pilot migracija Migracija

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

Више

Matrice. Algebarske operacije s matricama. - Predavanje I

Matrice. Algebarske operacije s matricama. - Predavanje I Matrice.. Predavanje I Ines Radošević inesr@math.uniri.hr Odjel za matematiku Sveučilišta u Rijeci Matrice... Matrice... Podsjeti se... skup, element skupa,..., matematička logika skupovi brojeva N,...,

Више

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1.

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. MJERA I INTEGRAL završni ispit 6. srpnja 208. (Knjige bilježnice dodatni papiri i kalkulatori nisu dozvoljeni!). (8 bodova) Kao na predavanjima za d N sa P d : a b ] a d b d ] : a i b i R a i b i za i

Више

PowerPoint Presentation

PowerPoint Presentation УВОД Дa би рaчунaри нa мрежи могли међусобно да кoмуницирaју и рaзмeњују пoдaткe, пoтрeбнo je: дa сe увeду ПРOТOКOЛИ (утврђeна прaвилa и процедуре за комуникацију) да постоје АДРEСE кoje су jeдинствeнe

Више

Microsoft Word - CAD sistemi

Microsoft Word - CAD sistemi U opštem slučaju, se mogu podeliti na 2D i 3D. 2D Prvo pojavljivanje 2D CAD sistema se dogodilo pre više od 30 godina. Do tada su inženjeri koristili table za crtanje (kulman), a zajednički jezik komuniciranja

Више

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Ulaz i izlaz podataka Ulaz i izlaz podataka Nakon odslušanog bit ćete u stanju: navesti sintaksu naredbi za unos/ispis znakova znakovnih nizova cijelih brojeva realnih brojeva jednostruke i dvostruke preciznosti

Више

Microsoft Word - privitak prijedloga odluke

Microsoft Word - privitak prijedloga odluke Informatički sustav za prikupljanje, simulaciju i prikaz podataka o cijenama javnih komunikacijskih usluga (dalje: Sustav e-tarife) Zagreb, HRVATSKA AGENCIJA ZA POŠTU I ELEKTRONIČKE KOMUNIKACIJE Roberta

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Pokazivači Pointeri Definicija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tipa tip. Definicija pokazivača: mem_klasa tip * p_var; Primjer: static int * pi; double *px; char*

Више

JMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n

JMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja 2018. (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) (a) (2 boda) Definirajte (općenitu) vanjsku mjeru. (b) (2 boda) Definirajte

Више

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s UPUTSTVO ZA BRZO UMREŽAVANJE PROGRAMA MPP2 Da bi program MPP2 radio u mrežnom okruženju po sistemu klijent-server, potrebno je da se na računarima koji su mrežno povezani instalira: serverska verzija programa

Више

SELECT statement basic form

SELECT statement basic form NAZIV OBJEKTA ZNANJA Uvod u JQuery PROLOG Autor * Katarina Kaplarski Klasifikacija * Težina * Osnovni nivo Ključne reči * Ko sluša * Student OAS Trajanje * Komentari autora SADRŽAJ Apstrakt Cilj * Uvodne

Више

Korisničko uputstvo mobilne aplikacije Digitalni Kiosk 1

Korisničko uputstvo mobilne aplikacije Digitalni Kiosk 1 Korisničko uputstvo mobilne aplikacije Digitalni Kiosk 1 Sadržaj Opis mobilne aplikacije Digitalni Kiosk... 3 Pokretanje aplikacije... 3 Registracija/Kreiranje novog korisničkog naloga... 3 Dodavanje platne

Више

PDO

PDO PDO Marijan Šuflaj FER, 2018 Sadržaj PDO Osnove Izvršavanje upita Ranjivosti Dohvaćanje rezultata upita PDO - PHP Data Objects Jednostavno i konzistetno sučelje za pristup bazama podataka iz PHP-a Isti

Више

Microsoft PowerPoint - 6. Query Builder.pptx

Microsoft PowerPoint - 6. Query Builder.pptx Visokaškola strukovnihstudija za informacione i komunikacione tehnologije Query builder Query builder je sastavni deo Laravel framework-a koji pruža pouzdan interfejs za rad sa bazom podataka, kreiranje

Више

03 SUBP

03 SUBP Osnovni SQL tipovi podataka Tip podataka NUMBER(p,s) Opis Broj sa maksimalno p cifara od kojih je s maksimalni broj decimala (1 < p < 38) (- 84 < s < 127) VARCHAR2(s) Promenjivi niz karaktera maksimalne

Више

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4 Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji

Више

01 SUBP

01 SUBP ER model šeme baze podataka: (Sef) (0, N) (0, N) RADNIK (0, 1) SEF (0, N) (Podredjeni) RUKOVODI RADI _NA (1, 1) (0, N) PROJEKAT Šema relacione baze podataka: RADNIK({Mbr, Prez, Ime, Sef, Plata, Datr},

Више

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005 Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005 2 Sadržaj 1 5 1.1 Specifikacija sintakse programskih

Више

Principi softverskog inženjerstva O predmetu

Principi softverskog inženjerstva  O predmetu Vežbe - IV nedelja Modeli baze podataka Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Potrebno je da: Razumete koncepte modela i njegovu svrhu Naučite kako se odnosi između

Више

PowerPoint Presentation

PowerPoint Presentation Visoka škola strukovnih studija za informacione i komunikacione tehnologije MVC - Modeli Školska 2017/18. Dr Nenad Kojić, dipl. inž. Luka Lukić, struk. inž. Danijela Nikitin, spec.stuk.inž MVC.htaccess

Више

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo

Више

KATUŠIĆ ANTONIO.pdf

KATUŠIĆ ANTONIO.pdf SVEUILIŠTE JOSIP JURAJ STROSSMAYER ELEKTROTEHNIKI FAKULTET OSIJEK Preddiplomski studij raunarstva PROGRAMSKI JEZIK RUBY ZAVRŠNI RAD Antonio Katuši OSIJEK, svibanj 2015. SVEUILIŠTE JOSIP JURAJ STROSSMAYER

Више

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - Topic02 - Serbian.ppt Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University

Више

No Slide Title

No Slide Title Statistika je skup metoda za uređivanje, analiziranje i grafičko prikazivanje podataka. statistika???? Podatak je kvantitativna ili kvalitativna vrijednost kojom je opisano određeno obilježje (svojstvo)

Више

Uvod u statistiku

Uvod u statistiku Uvod u statistiku Osnovni pojmovi Statistika nauka o podacima Uključuje prikupljanje, klasifikaciju, prikaz, obradu i interpretaciju podataka Staistička jedinica objekat kome se mjeri neko svojstvo. Svi

Више

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - Topic02 - Serbian.ppt Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University

Више

Sadržaj 1 Diskretan slučajan vektor Definicija slučajnog vektora Diskretan slučajan vektor

Sadržaj 1 Diskretan slučajan vektor Definicija slučajnog vektora Diskretan slučajan vektor Sadržaj Diskretan slučajan vektor Definicija slučajnog vektora 2 Diskretan slučajan vektor Funkcija distribucije slučajnog vektora 2 4 Nezavisnost slučajnih vektora 2 5 Očekivanje slučajnog vektora 6 Kovarijanca

Више

Računarski praktikum I - Vježbe 09 - this, static

Računarski praktikum I - Vježbe 09 - this, static Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 09 - this, static v2018/2019. Sastavio: Zvonimir Bujanović Pokazivač this Kako funkcija članica

Више

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc [Complete introduction into Java programming language] Syllabus Semestar, Godina Informacije o instruktoru Instruktor(i) Email Lokacija i dostupnost 1. Ime, prezime 2. Emir, Puška E-mail adresa emirpuska1988@gmail.com

Више

Fra Serafina Schoena Rijeka MB: MBO: Žiro račun: kod RBA d.d. GSM:

Fra Serafina Schoena Rijeka MB: MBO: Žiro račun: kod RBA d.d. GSM: EKLIPS MINI CMS upute za korištenje v1.0 1. Sadržaj isporuke i opće informacije EKLIPS MINI CMS sustav napravljen je pomoću sljedećih open source tehnologija Java JDK 1.5 - http://java.sun.com/javase/downloads/index_jdk5.jsp

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode] Programski jezik C organizacija izvornog programa Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija

Више

Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити ос

Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити ос Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити основне концепте мрежног модела 3. Објаснити основне

Више

Normalizacija i denormalizacija relacijske sheme baze podataka tjedan

Normalizacija i denormalizacija relacijske sheme baze podataka tjedan Normalizacija i denormalizacija relacijske sheme baze podataka 11. tjedan T. Carić, T. Erdelić Zavod za inteligentne transportne sustave Fakultet prometnih znanosti Sveučilište u Zagrebu Baze podataka

Више

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju Osnovni pojmovi WEB tehnologije korišteni u kolegiju Ivan Vazler Odjel za matematiku Sveučilište u Osijeku 16. listopada 2013. WWW - World Wide Web World Wide Web (WWW) svjetska mreža računala s izvorima

Више

Microsoft PowerPoint - podatkovni promet za objavu.pptx

Microsoft PowerPoint - podatkovni promet za objavu.pptx 1 2 3 Što je složaj protokola (protocol suite)? Pojedini protokol se odnosi samo na jedno pitanje koje omogućava komunikaciju. Kada se kombinira više protokola, grupa protokola koja je rezultat takve kombinacije

Више

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc. SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.dr.sc. Zvonko Iljazović Zagreb, rujan, 2015. Ovaj diplomski

Више

NIAS Projekt e-građani KORISNIČKA UPUTA za aplikaciju NIAS Verzija 1.1 Zagreb, srpanj 2014.

NIAS Projekt e-građani KORISNIČKA UPUTA za aplikaciju NIAS Verzija 1.1 Zagreb, srpanj 2014. Projekt e-građani KORISNIČKA UPUTA za aplikaciju Verzija 1.1 Zagreb, srpanj 2014. Naslov: Opis: Korisnička uputa za aplikaciju Dokument sadrži upute korisnicima aplikacije u sustavu e-građani Ključne riječi:

Више

KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA

KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA SADRŽAJ 1. UVOD... 3 1.1. Cilj i svrha... 3 1.2. Područje primjene... 3 2. POJMOVI I SKRAĆENICE... 4 3. PREDUVJETI KORIŠTENJA... 5 4. PREGLED APLIKACIJE...

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno

Више

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode] OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 5 OBJEKTI U INTERAKCIJI Miloš Kovačević Đorđe Nedeljković 1 /25 OSNOVNI KONCEPTI - Abstrakcija - Modularizacija - Objektne reference - Klasni dijagram - Objektni

Више

Slajd 1

Slajd 1 Luka Vidoš UMAS, studeni 2007 Uvod 2.0 Druga verzija weba? Web 2.0 je fraza, metafora za suvremeno napravljene webove sadrže i socijalizacijsku notu omogućuju posjetiteljima sudjelovanje u kreiranju njihova

Више

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме 1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме Програмирање добијања награда омогућује ученицима да

Више

Algoritmi SŠ P1

Algoritmi SŠ P1 Državno natjecanje iz informatike Srednja škola Prvi dan natjecanja 2. ožujka 219. ime zadatka BADMINTON SJEME MANIPULATOR vremensko ograničenje 1 sekunda 1 sekunda 3 sekunde memorijsko ograničenje 512

Више

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime Test ispravio: () () Ukupan broj bodova:. veljače 04. od 3:00 do 4:00 Ime i prezime Razred Škola Županija Mentor Sadržaj Upute za natjecatelje... Zadaci... Upute za natjecatelje Vrijeme pisanja: 60 minuta

Више

NAPOMENA: Studenti na ispit donose kod urađenog zadatka

NAPOMENA: Studenti na ispit donose kod urađenog zadatka Пројекат из предмета Интернет програмирање за августовски и септембарски испитни рок школске 2018/19. године Коришћењем PHP технологије, технологије AJAX и MySQL базе података, реализовати следећу веб

Више

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese:   Након УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: http://www.srpskiarhiv.rs/ Након тога се на екрану појављује форма за пријаву на часопис

Више

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode] Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu

Више

UAAG Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević

UAAG Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević Osnovne algebarske strukture5. Vektorski prostori 2 5.1 Unutarnja i vanjska množenja Imamo dvije vrste algebarskih operacija, tzv. unutarnja

Више

Microsoft Word - SYLLABUS -Dinamicki

Microsoft Word - SYLLABUS -Dinamicki Univerzitet UKSHIN HOTI PRIZREN Fakultet kompjuterskih nauka Nastava na bosanskom jeziku NASTAVNI PLAN - PROGRAM SYLLABUS Akademska Nivo studija Bachelor Departament god. PREDMET Dinamički sadržaj web

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni

Више

Recuva CERT.hr-PUBDOC

Recuva CERT.hr-PUBDOC Recuva CERT.hr-PUBDOC-2019-5-379 Sadržaj 1 UVOD... 3 2 INSTALACIJA ALATA RECUVA... 4 3 KORIŠTENJE ALATA RECUVA... 7 4 ZAKLJUČAK... 13 Ovaj dokument izradio je Laboratorij za sustave i signale Zavoda za

Више

Elementarna matematika 1 - Oblici matematickog mišljenja

Elementarna matematika 1 - Oblici matematickog mišljenja Oblici matematičkog mišljenja 2007/2008 Mišljenje (psihološka definicija) = izdvajanje u čovjekovoj spoznaji odre denih strana i svojstava promatranog objekta i njihovo dovo denje u odgovarajuće veze s

Више

Upute za instaliranje WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa

Upute za instaliranje WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa koju možete pronaći na sljedećem linku: http://wordpress.org/download/ Kliknite na

Више

PowerPoint Presentation

PowerPoint Presentation Baze Podataka Tip veze (kardinalnost i referencijalni integritet) TIP VEZE (Kardinalnost) 1 : 1 (jedan prema jedan) 1 : N (jedan prema više) N : M (više prema više) RELACIJA 1 : N jedan Klijent više Porudzbina

Више

Projektovanje informacionih sistema i baze podataka

Projektovanje informacionih sistema i baze podataka Realni sistem i informacioni sistem Ulaz Realni sistem Izlaz Unos Baza podataka Izveštaji Realni sistem i informacioni sistem Sistem se definiše kao skup objekata (entiteta) i njihovih međusobnih veza

Више

Sveucilište u Zagrebu

Sveucilište u Zagrebu Proširivanje Pythona programskim jezicima C/C++ Ivo Majić Mentor: Doc. dr. sc. Domagoj Jakobović Sveučilište u Zagrebu Fakultet elektrotehnike i računarstva Ak. god. 2011/12 Ivo Majić (FER) Sveučilište

Више

Projekti šabloni

Projekti šabloni Projekti obrasci Kreiranje objekata Uvod Enkapsuliraju znanje o tome koje konkretno klase koristi sistem Sakrivaju instanciranje objekata i načine na koji se oni povezuju i reprezentuju Ostatak sistema

Више

DUBINSKA ANALIZA PODATAKA

DUBINSKA ANALIZA PODATAKA DUBINSKA ANALIZA PODATAKA () ASOCIJACIJSKA PRAVILA (ENGL. ASSOCIATION RULE) Studeni 2018. Mario Somek SADRŽAJ Asocijacijska pravila? Oblici učenja pravila Podaci za analizu Algoritam Primjer Izvođenje

Више

EUROPSKA KOMISIJA Bruxelles, C(2018) 3697 final ANNEXES 1 to 2 PRILOZI PROVEDBENOJ UREDBI KOMISIJE (EU) /... o izmjeni Uredbe (EU) br. 1301

EUROPSKA KOMISIJA Bruxelles, C(2018) 3697 final ANNEXES 1 to 2 PRILOZI PROVEDBENOJ UREDBI KOMISIJE (EU) /... o izmjeni Uredbe (EU) br. 1301 EUROPSKA KOMISIJA Bruxelles, 13.6.2018. C(2018) 3697 final ANNEXES 1 to 2 PRILOZI PROVEDBENOJ UREDBI KOMISIJE (EU) /... o izmjeni Uredbe (EU) br. 1301/2014 i Uredbe (EU) br. 1302/2014 u pogledu odredaba

Више

Poštovani,

Poštovani, VATROnet Upravljanje vatrogasnim intervencijama i Sustav za uzbunjivanje Popis podataka potrebnih za ispravan rad sustava Srpanj 2017. Sadržaj 1. Uvod... 3 2. Podaci koje je potrebno ažurirati... 3 3.

Више

PuTTY CERT.hr-PUBDOC

PuTTY CERT.hr-PUBDOC PuTTY CERT.hr-PUBDOC-2018-12-371 Sadržaj 1 UVOD... 3 2 INSTALACIJA ALATA PUTTY... 4 3 KORIŠTENJE ALATA PUTTY... 7 3.1 POVEZIVANJE S UDALJENIM RAČUNALOM... 7 3.2 POHRANA PROFILA KORISNIČKIH SJEDNICA...

Више

ТЕОРИЈА УЗОРАКА 2

ТЕОРИЈА УЗОРАКА 2 ТЕОРИЈА УЗОРАКА 2 12. 04. 13. ВЕЖБАЊА Написати функције за бирање елемената популације обима N у узорак обима n, код простог случајног узорка, користећи алгоритме: Draw by draw procedure for SRS/SRSWOR

Више

Skripte2013

Skripte2013 Chapter 2 Algebarske strukture Preslikivanje f : A n! A se naziva n-arna operacija na skupu A Ako je n =2, kažemo da je f : A A! A binarna operacija na A Kažemo da je operacija f arnosti n, u oznaci ar

Више

Slide 1

Slide 1 Web site development using MCMS 2002 Koncept Autori: Multiautorsko okruženje sa podijeljenim ulogama Autori ne moraju imati tehnička predznanja Veza sa MicrosoftWord Developeri: Integracija sa VS.NET Integracija

Више

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p 1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik.

Више

Slide 1

Slide 1 Funkcionalno programiranje Interoperabilnost jezika Scala i Java, 2019. Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

Више

QlikView Training

QlikView Training QlikView Napredni Poslovni Sustavi d.o.o. Svjetlana Čubek Neven Kranjčec 7. 8. svibanj 2014 Sadržaj Što je QlikView? QlikView značajke Što čini QlikView jedinstvenim? Tipični korisnici QlikView alata Prezentacija

Више

PowerPoint Presentation

PowerPoint Presentation Java konkurentno programiranje Životni ciklus niti i problemi sinhronizacije resursa Multitasking Multithreading Životni ciklus niti http://www.roseindia.net/java/thread/lifecycle-of-threads.shtml Životni

Више

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese:   Након УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: http://www.srpskiarhiv.rs/ Након тога се на екрану појављује форма за пријаву на часопис

Више

Document ID / Revision : 0419/1.1 ID Issuer Sustav (sustav izdavatelja identifikacijskih oznaka) Upute za registraciju gospodarskih subjekata

Document ID / Revision : 0419/1.1 ID Issuer Sustav (sustav izdavatelja identifikacijskih oznaka) Upute za registraciju gospodarskih subjekata ID Issuer Sustav (sustav izdavatelja identifikacijskih oznaka) Upute za registraciju gospodarskih subjekata Gospodarski subjekti Definicija: U skladu s Direktivom 2014/40/EU gospodarski subjekt svaka

Више

Lorem ipsum dolor sit amet lorem ipsum dolor

Lorem ipsum dolor sit  amet lorem ipsum dolor Početna prezentacija za korisnike Ključna aktivnost 1: Mobilnost u svrhu učenja: Razmjene mladih i Mobilnost osoba koje rade s mladima Završno izvješće Mobility tool Projektni ciklus Završno izvješće 1.

Више

Primenjeno programiranje - Vežbe

Primenjeno programiranje - Vežbe VISOKA POSLOVNA ŠKOLA STRUKOVNIH STUDIJA NOVI SAD Primena integrisanih razvojnih alata Java i NetBeans IDE 7.0 vežba 9 i 10 Kreiranje desktop aplikacije sa konekcijom na bazu Pokrenuti NetBeans, u kartici

Више