Elektrotehnička škola Tuzla Predmet: BAZE PODATAKA 4
PRAKTIKUM VJEŽBI Verzija 4.3
Selma Krajinović, mag. ing. el.
1
Istorija dokumenta Oznaka V1.0 V1.1 V1.3 V2.0 V2.1 V3.1
V4.1 V4.2 V4.3
Opis Vježbe za modul 1 Definisani projektni zadaci za timski rad Definisane vjezbe za modul 2 Definisane vjezbe za modul 3 Ispravke i dodaci Modifikovani projektni zadaci za grupni rad Obrisani zadaci za individualni rad Korekcija vjezbi Korekcija vjezbi Dodana vjezba 3.2
Datum 11.10.2010 26.10.2010
Autor Skr Skr
01.12.2010 11.2.2011 11.12.2011 25.09.2013
Skr Skr Skr Skr
05.11.2014 05.02.2015 11.3.2015
Skr Skr skr
2
Sadržaj 1.
Uvodne napomene................................................................................................................................ 1
2.
Modul 01: Model objekti veze i relacioni model .................................................................................. 2 Vježba 1 – Izrada modela objekti veze...................................................................................................... 2 Vježba 2 – Izrada relacionog modela ........................................................................................................ 2 Vježba 3 – Izrada modela objekti – veze pomoću alata MySQL Workbench, Data Modeling .................. 2 Sadržaj projektne dokumentacije: ............................................................................................................ 3
3.
Modul 02: Analiza i primjena DBMS ..................................................................................................... 4 Vježba 1 – Forward, Reverse Engineering, Synchronize ........................................................................... 4 Vježba 2 – Primjer kreiranje baze podataka ............................................................................................. 5 Vježba 3 – Import/export podataka iz relacione baze podataka ............................................................ 18 Vježba 4 – Sigurnost podataka ................................................................................................................ 18 A) Naredba GRANT .............................................................................................................................. 18 B) Naredba REVOKE ............................................................................................................................ 20 C) Naredba CREATE USER, GRANT, REVOKE ....................................................................................... 22 Vježba 5 – implementacija sigurnosti podataka u projektnom zadatku................................................. 22
4.
MODUL 03: Analiza i primjena SQL-a .................................................................................................. 23 Vježba 1 – DDL, DML ............................................................................................................................... 23 Vježba 2 – Ograničenja stranog kluča: opcije za DELETE i UPDATE ........................................................ 25 Vježba 3: Jednostavni Select upiti .......................................................................................................... 26 Vježba 4: Složeni Select upiti (spajanje tabela) Pogledi ........................................................................ 28 Vježba 5: SQL funkcije ............................................................................................................................. 30
5.
PRILOZI ................................................................................................................................................ 31 Prilog 1 – PRIMJER DIZAJNA BAZE PODATAKA........................................................................................ 31 Prilog 2 – Sadržaj projektne dokumentacije ........................................................................................... 40
3
1. Uvodne napomene Za svaku vježbu izrađuje se projektna dokumentacija. Skup svih vježbi sačinjava jedan projektni zadatak. Svaku vježbu učenici izvode zasebno. Većina vježbi odnosi se na individualni projektni zadatak Projektni zadatak dokumentuje se u Microsoft Word document čiji sadržaj je naveden u prilogu 2 – izgled i sadržaj projektnog zadatka. Kopiju Microsoft Word dokumenta sa projektnom dokumentacijom, sql skripte i ostale datoteke mora svaki učenik mora imati spremne na uvid, svaki čas, bez obzira na modul na koji se vježba odnosi i na to da li je vježba već ocjenjena. U okviru poglavlja “teoretske osnove” nije dozvoljeno kopiranje izvornog teksta iz skripte. Učenik treba da nauči gradivo korištenjem skripte i drugih izvora koje samostalno pronađu, te da svojim riječima, onako kako je naučio, opiše određenu materiju. Taj sadržaj mora biti spreman samostalno interpretirati.
1
2. Modul 01: Model objekti veze i relacioni model Vježba 1 – Izrada modela objekti veze Svaki učenik dobije individualni projektni zadatak. Razmotriti definisane zahtjeve. Sve nejasnoće u vezi sa dijelom realnosti za koji se izrađuje model razjasniti prije početka izrade modela. Ponoviti teoretske osnove, a zatim nacrtati dijagram modela objekti-veze, najprije na papiru (zadržati papir sa skicom modela). Svaki učenik treba znati objasniti sve ucrtane objekte i veze. Nacrtati i popuniti tabele sa atributima tabela i veza. Tabele najprije nacrtati na papiru, koja zajedno sa er dijagramom treba da bude dostupna. Definisati strukturu projektne dokumentacije (naslovna strana, sadržaj, pripreme fontova i stilova u Wordu). Upisat urađeno u dokument.
Vježba 2 – Izrada relacionog modela Uraditi slijedeće: -
analizirati proces prevođenje modela iz praktikuma u skripti. ponoviti pravila za prevođenje. sastaviti listu objekata i veza iz predmetnog modela. Prevesti objekte u tabele Prevesti veze tipa 1:1 (ako ih ima) Prevesti veze tipa 1:N Prevesti veze tipa 1:M Kompletirati relacionu šemu
U dokumentaciji svakom koraku u prevođenju prethodi navođenje pravila po kome je urađeno prevođenje. Za izradu vježbi 1. i 2 .koristiti se metodologijom iz priloga 1.
Vježba 3 – Izrada modela objekti – veze pomoću alata MySQL Workbench, Data Modeling Svaki učenik samostalno se upoznaje sa alatom. Naučiti snimati i otvarati model. Samostalno naučiti kreirati objekte i definisati veze među njima. U projektnoj dokumentaciji opisati osobine alata I kako se koristi alat Data Modeling za kreiranje modela objekti veze, ubaciti screenshots i objašnjenja. Kratko opisati kako se alat koristi i čemu služi. Ubaciti
2
exportovani ER model. Napraviti screenshot koji prikazuje detalje o svim kreiranim tabelama (Fields, Foreign Keys). Keirati EER diagram za predmetni model. Snimiti i sačuvati mwb file.
Sadržaj projektne dokumentacije: Projektni zadatak: Projektovanje baze podataka ..... Sadržaj projektne dokumentacije: 1. Analiza potreba a. kopirati projektni zadatak, prema potrebi dopuniti informacijama identifikovanim prilikom izrade modela 2. Model objekti-veze (vježba 1) a. Modeliranje podataka, model objekti-veze (teoretske osnove) b. Dijagram objekti-veze c. Opis objekata i veza 3. Relacioni model (vježba 2) a. Relacioni model (teoretske osnove) b. Prevođenje modela objekti-veze u relacioni model c. Relaciona šeme 4. Kreiranje relacionog modela pomoću CASE alata (vježba 3) a. Kreiranje relacionog modela pomoću MySQL Workbench alata Data Modeling
3
3. Modul 02: Analiza i primjena DBMS Vježba 1 – Forward, Reverse Engineering, Synchronize Svaki učenik treba zasebno uraditi slijedeće: -
Koristi se model kreiran u okviru vježba 3 iz prethodnog modula Kreirati relacionu šemu baze podataka pomoću Forward Engineer alata Napraviti novi data model na bazi modela iz relacione baze podataka korištenjem alata Reverse Engineer Ilustrovati korištenje alata Synchronize
Svaki korak dokumentovati u projektnoj dokumentaciji, tj. dodati poglavlje: 4.2 Kreiranje relacionog modela pomoću MySQL Workbench alata Objasniti kako se koristi Forward Engineer. Konektovati se na bazu pomoću MySQL Development alata. Objasniti ukratko interface alata. Ubaciti screenshot koji potvrđuje da su u tvojoj šemi u procesu “Forward Engineer” kreirane sve tabele baze podataka. Objasniti kako se koristi Reverse Engineer. Dodati jedno polje nekoj od tabela. Pomoću ovog alata napraviti novi ER model (ne zaboravite zatvoriti onaj kojeg ste koristili u postupku Forward Engineer.) Objasniti kako se koristi Synchronize alat. U novom modelu (napravljenom prilikom objašnjavanja funkcije Forward Engineer) obrisati polje koje ste dodali u relacionom modelu prije Forward Engineer. Uraditi Synhronize. Podesiti parametre sinhronizacije tako da nakon sinhronizacije u relacionom modelu više nema novog polja. Ponovno dodati polje u relacioni model. Ponoviti sinhronizaciju, ali sada podesiti da se polje dodano u relacionom modelu pojavi i u ER modelu. Svaki korak dokumentovati (objasniti i postaviti screenshot).
4
Vježba 2 – Primjer kreiranje baze podataka
NAPOMENA: Ova vježba se ne odnose na individualni projektni zadatak. Ipak, potrebno je dokumentovati je u okviru svog projektnog zadatka kao prilog (Prilog 1).
Cilj vježbe je : 1. 2. 3. 4. 5. 6.
Izvršavanje skripte Upoznati korištenje SQL naredbi za kreiranje Model i šema: Reverse /forward engineer, Synchronize upoznati se sa importom i export podataka upoznati korištenje SQL naredbi za izmjenu i brisanje tabela upoznati naredbe za manipulisanje podacima u tabelama
ZADACI 1. Konektovati se na školsku bazu korištenjem vlastitih pristupnih podataka. 2. S ciljem kreiranja testne baze podataka, izvršiti skriptu „create_model.sql“. Prije pokretanja skripte, izmjeniti naredbu koja slijedi. Umjesto „orders“, postaviti ime šeme baze podataka nad kojom imate prava pristupa USE orders; Nakon kreiranja baze u svojoj šemi treba da imate slijedeće tabele
3. Korištenjem naredbe LOAD učitati podatke u tabele iz tekstualnih datoteka. Koristiti skriptu „load_classicmodels.sql“. Prije izvršavanja skripte, kopirati folder „data“ na root diska c, kako bi bio omogućen pristup podacima. Pogledati sintaksu nardbe LOAD u dodatku. 4. Otvoriti alat „Data Modeling“ , „Create new model“. Uraditi „Reverse Engineering“ baze formirane u prethodnim koracima. Učitajte samo tabele napravljene u ovoj vježbi – izostavite tabele iz vašeg projektnog zadatka!!! 5
Nakon učitavanje modela iz baze, imamo model bez uspostavljenih veza, kao na slici
5. Uspostaviti veze između relacija, tako da šema u konačnici izgleda kao na dijagramu Npr. Između tabela productLine i products postoji veza 1:n, gdje je products.productCode strani ključ, povezan sa primarnim ključem productLines.productLine. Da bismo uspostavili ovu vezu potrebno je uraditi slijedeće:
6
U okviru tab stranice Foreign Key, kreirati novi strani ključ (Foreign Key Name = FK_products_productLines) i odbrati tabelu s kojom se uspostavlja veza („orders.productLines“). Zatim treba povezati polja pomoću interface-a na desnoj strani: selektovati kolonu „productLine“ iz tabele „products“ i povezati je sa poljem „productLine“ iz tabele „productLines“.
Na sličan način povezati i ostale tabele.
7
8
Model treba da izgleda ovako:
6. Promjene koje smo uradili nad modelom implemetiramo u bazu pomoću funkcije „Synchronize Model“, kako slijedi:
9
Nakon konektovanja na bazu, slijedi korak u kome se učitavaju informacije iz baze o postojećim objektima:
Zatim biramo šemu sa kojom se model sinhronizuje:
Nakon konektovanja i učitavanja informacija o šemi, vrši se poređenje modela i šeme (source). Sve uočene razlike su naznačene pomoću zelene strelice, koja određuje smjer sinhronizacije. Na slici je određeno da se promjene iz modela implementiraju nad šemom baze podataka. Smjer sinhronizacije realizujemo pomoću dugmadi: -
Update Source, određujemo izmjenu šeme Update Model, određujemo izmjenu modela Ignore, određujemo da se odabrana razlika u strukturi tabele ignoriše
Nakon podešavanja cilja sinhronizacije prelazimo na slijedeći korak.
10
U narednom koraku možemo vidjeti SQL kod kojim se vrši izmjena strukture tabela. Npr. ALTER TABLE `torders`.`t_orders` ADD CONSTRAINT `FK_Orders_customers` FOREIGN KEY (`customerNumber` ) REFERENCES `torders`.`t_customers` (`customerNumber` ) ON DELETE NO ACTION ON UPDATE NO ACTION , ADD INDEX `FK_Orders_customers` (`customerNumber` ASC) ;
Prethodnom SQL naredbom tabeli „t_orders“ dodajemo strani ključ i index. Koristimo ALTER TABLE. Za dodavanje stranog ključa koristimo ključne riječi ADD CONSTRAINT iza kojih navodimo ime ograničenja baze podataka. Zatim slijede ključne riječi FOREIGN KEY iza kojih, u zagradama, navodimo ime kolone tabele koja je strani ključ. Zatim navodimo ime tabele i kolonu sa kojom je tabela povezana. Npr. u prethodnoj naredbi imamo REFERENCES `torders`.`t_customers` (`customerNumber` )
11
Ovim određujemo da je kolona customerNumber iz tabele t_orders povezana sa kolonom customerNumber iz tabele t_customers. Pomoću opcija ON DELETE i ON UPDATE određujemo šta će se desiti sa podacima iz tabele orders ako korisnik obriše odnosno izmjeni relevantne podatke u tabeli customers. Možemo birati: -
No action, što znači da se podaci u tabeli orders ne brišu/mijenjaju, ili CASCADE, što bi značilo da se brisanjem/izmjenom podataka u tabeli customers brišu/mijenjaju podaci u tabeli orders.
Nakon uspješne sinhronizacije dobijemo poruku
Ovim smo u šemu dodali strane ključeve. 7. Aktivirajet SQL editor. 8. Najprije provjerite da li je šema sinhronizovana sa modelom. Npr. Provjerite tabelu tcustomers:
Na tab stranici Foreign Key treba da vidite strani ključ:
12
9. Koristite SQL editor kako biste pregledali podatke u tabelama: Najprije uradite „Refresh“ kako biste aktivirali promjene nad šemom:
Otvorite Edit mode. Npr.
13
10. Svaku od ikona Toolbar-a u Edit modu analizirajte, i upišiteu tabelu čemu služi:
Prvi slog
11. Uradite export podataka pomoću ikone . Najprije odredimo kako će podaci biti zapisani u datoteku file sistema. Biramo CSV (; separated) kako bi se podaci odvojili znakom ,. CSV je skraćenica od Comma Separated Values.
14
Zatim određujemo lokaciju izlazne datoteke. Npr.
Nakon exporta podataka, u datoteci možemo vidjeti sadržaj customerNumber,customerName,contactLastName,contactFirstName,phone,add ressLine1,addressLine2,city,state,postalCode,country,salesRepEmployeeN umber,creditLimit 103,"Atelier graphique",Schmitt,"Carine ",40.32.2555,"54, rue Royale",,Nantes,,44000,France,1370,21000 112,"Signal Gift Stores",King,Jean,7025551838,"8489 Strong St.",,"Las Vegas",NV,83030,USA,1166,71800 114,"Australian Collectors, Co.",Ferguson,Peter,"03 9520 4555","636 St Kilda Road","Level 3",Melbourne,Victoria,3004,Australia,1611,117300 119,"La Rochelle Gifts",Labrune,"Janine ",40.67.8555,"67, rue des Cinquante Otages",,Nantes,,44000,France,1370,118200 121,"Baane Mini Imports",Bergulfsen,"Jonas ","07-98 9555","Erling Skakkes gate 78",,Stavern,,4110,Norway,1504,81700 124,"Mini Gifts Distributors Ltd.",Nelson,Susan,4155551450,"5677 Strong St.",,"San Rafael",CA,97562,USA,1165,210500 125,"Havel & Zbyszek Co",Piestrzeniewicz,"Zbyszek ","(26) 6427555","ul. Filtrowa 68",,Warszawa,,01-012,Poland,,0
Kombinovanjem ove funkcionalnost SQL Worksheet alata i nadedbe LOAD možete razmjenjivati podatke iz jedne u drugu bazu. Exportujte sve tabele testnog modela, a onda ih učitajte u bazu vašeg računara. 12. Analizirajte ćemu služe naredbe podmenija „Send to SQL Editor“
15
Upišite u tabelu šta omogućavaju pojedine opcije: Name (short) Name (long)
16
DODACI LOAD FROM LOAD DATA local INFILE 'putanja do file-a.ekstenzija' INTO TABLE ime_tabele FIELDS TERMINATED BY ',' (može se koristiti bilo koji znak koji služi kako bi odvojili polja koja popunjavamo unutar tabele) LINES TERMINATED BY '\n';(ovaj dio označava da se jedan red u dokumentu odnosi na jedan red unutar tabele zajedno sa svim podacima) Da biste ubacili strani ključ iz nekog file npr. txt, potrebno je da isključite provjeru stranih ključeva unutar tabele, odnosno da ne provjerava dali taj ključ postoji u drugoj tabeli, ta linija koda izgleda ovako: SET FOREIGN_KEY_CHECKS = 0; I posle load-a podataka koristite: SET FOREIGN_KEY_CHECKS = 1; U vježbi koristiti slijedeće sql skripte i txt source datoteke:
17
Vježba 3 – Import/export podataka iz relacione baze podataka
Cilj vježbe: Ilustrovati mogućnost exporta i importa podataka Upisati podatke u sve tabele svog modela pomoću alata MySQL Development (najmanje po 5 slogova u svaku tabelu). Po uzoru na vježbu 2, uraditi export podataka u cvs datoteku. Obrisati podatke u bazi, a zatim ih importovati iz tekstualnih datoteka napravljenih u prvom koraku. Koristeći eksportovane podatke, učitati ih u Microsoft Excel i Microsoft Access. Svaki korak dokumentovati u dokumentaciju projektnog zadatka, kako slijedi: “4.2 Export-import podataka A) Export podataka iz SQL development alata B) Import podataka iz tekstualne datoteke u relacionu bazu C) Import podataka iz tekstualne datoteke u Microsoft Excel i Microsoft Access”
Vježba 4 – Sigurnost podataka NAPOMENA: Ova vježba se ne odnose na individualni projektni zadatak. Ipak, potrebno je dokumentovati je u okviru svog projektnog zadatka kao prilog (Prilog 2). A) Naredba GRANT
1. Zadate su GRANT naredbe. Objasni efekat ovih naredbi
18
2.
Napiši odgovarajuću GRANT naredbu. Korisnik doc treba pravo pristupa podacima u tabeli chores.
Korisniku sleepy treba omogučiti brisanje iz tabele talking_animals. Takožer, on ovo pravo može dati drugima Dodjelite sva prava svima na tabelu chores. (GRANT ALL….) Napiši naredbu kojom se korisniku doc dodjeljuje pravo SELECT nad svim tabelama baze podataka woodland_cottage (GRANT SELECT ON wwwwww TO xxxx)
U prethodnoj vježbi vidjeli smo različite oblike naredbe GRANT. Možemo zaključiti kako slijedi:
1. U okviru iste GRANT naredbe možemo izvršiti dodjelu prava za vise korisnika GRANT ALL ON chores TO bashful, doc, dopey, happz;
2.WITH GRANT
OPTION daje pravo korisinku da drugima dodjeli ono pravo koje mu datom naredbom
dodjeljujemo GRANT DELETE ON chores TO doc WITH GRANT OPTION.
19
3. GRANT naredbom možemo dodjeliti pravo nad odabranom kolonom tabele, GRANT SELECT(chore_name) ON chores TO dopey;
4. Jednom GRANT naredbom možemo dodjeliti vise različitih prava nad jednom tabelom. Samo navedemo listu prava razdvojenih zarezom. GRANT SELECT, INSERT ON talking_animals TO dopey:
5. GRANT ALL dodjeljuje prava SELECT, UPDATE. DELETE i INSERT nad odabranom tabelom GRANT ALL ON chores TO doc;
6. Korisniku možemo jednom GRANT naredbom dodjeliti određena prava nad svim tabelama neke baze podataka ako navedemo database_name.* GRANT SELECT ON woodland_cottage.* TO doc;
B) Naredba REVOKE Korisniku elsie date su privilegije koje joj više ne trebaju. Zadajte odgovarajuće naredbe REVOKE nakon kojih će elsie samo moći čitati podatke.
20
Nema glupih pitanja Q: Možemo li privilegije dodjeljivati na nivou kolone tabele? Npr. možemo li dodjeliti INSERT nad samo jednom kolonom?
A: To bi zapravo bilo potpuno beskorisno – omogućiti da se upiše vrijednost u samo jednu kolonu tabele! Ovo bi imalo smisla samo ako tabela ima samo jednu kolonu, i to upravo onu koju navodim u GRANT naredbi.
Q: Ima li još sličnih, besmislenih GRANT naredbi? A:
Gotovo sve GRANT naredbe nad kolonom su besmislene. Jedino ima smisla dodjeljivati SELECT
privilegiju nad kolonom. I UPDATE….
Q: Pretpostavimo da smo kreirali korisnika koji bi trebao imati sva prava nad svim tabelama u svim šemama baze podataka. Ima li neki jednostavan način da ovo uradimo ?
A: U MySQL-u da. To je naredba GRANT SELECT ON *.* TO elsie; Q: CASCADE je podrazumijevana vrijednost u REVOKE naredbi. Tačno? A: Tačno, u MySQLu, ali, opet, ovisi o DBMS kojeg koristimo. Q: Šta ako zadamo REVOKE za privilegiju koju korisnik uopšte nije imao? A: Poruka o grešci će to jasno obznaniti – bićete obaviješteni da privilegija nije dodjeljena.
21
C) Naredba CREATE USER, GRANT, REVOKE Zadatak je da budete Greg i da zaštite bazu tako da je korisnici ne mogu upropastiti. Prošitajte opise poslova pojedinih korisnika i napišite sve potrebne GRANT naredbe koje će im omogučiti pristup podacima koji im usitinu trebaju a onemogučiti pristup ostalim. GREG Frank: Ja sam odgovoram za pronalaženje interesantnih poslova. Nikada ništa ne upisujem u bazu, ali ponekad brišem podatke kada je otvorena pozicija (posao) popunjena. Ponekad pogledam podatke u my_contacts. Jim: Ja unosim sve podakte u bazu. Stvarno to dobro radim, jer baza mi ne dozvoljava da za pol upišem xxx, mogu upisati samo M ili Z (kako, razmišljaj). Pored unosa, ja i mijenjam podatke. Učim brisati podatke, ali Greg mi ne dozvoljava... Joe: Greg me upravo zaposlio da radim na promanaženju poslova za zainteresovane klijente. Želi intergrisati podatke o kontaktima sa zaposlenim u web stranicu. Ja sam više web developer nego SQL guy, ali jednostavne poslove mogu uraditi. Svakako SELECT mogu uraditi, INSERT baš i ne. Pogledaj bazu koju je Greg napravio i napiši naredbe kako slijedi. 1. Napišti naredbu kojom bi korisniku root promjenili lozinku. 2. Napiši 3 naredbe kojima bi kreirali tri korisnika za Gregovu bazu. 3. Napiši potrebne GRANT naredbe kako bi svaki od ova tri korisnika mogao obavljati svoj posao.
Vježba 5 – implementacija sigurnosti podataka u projektnom zadatku U svom projektnom zadatku definisati koncept sigurnosti podataka. Kreirati barem 3 korisnika i dodjeliti im odgovarajuća prava pristupa. U projektnu dokumentaciju dodati slijedeći sadržaj: “4.3 Koncept sigurnosti podataka A) Kreiranje korisnika B) Definisanje prava pristupa objektima baze podataka
22
4. MODUL 03: Analiza i primjena SQL-a Vježba 1 – DDL, DML Cilj vježbe je :
upoznati korištenje SQL naredbi za kreiranje, izmjenu i brisanje tabela upoznati naredbe za manipulisanje podacima u tabelama
Sve naredbe pisati pomoću DDL/DML. Svaku naredbu kopirati u isti dokument, nakon svakog zadatka, u fontu kako slijedi:
CREATE TABLE.....
ZADACI 1. Konektovati se na školsku bazu korištenjem vlastitih pristupnih podataka. U bazi treba da postoje kreirane tabele kao na slici
2. Korištenjem DDL naredbe CREATE TABLE, napraviti tabele T_land i T_city sa kolonama kao na slici:
3. Zadati naredbe INSERT koje upisuju slijedeće podatke u tabele LAND Name Belgium
Phone_prefix 032
code BEL 23
currency EUR
Bosnia and Herzegovina Brazil Bulgaria United States of America France Japan Australia United Kingdom
387 055 359 001 033 081 061 044
BIH BRA BGR USA FRA JPN AUS GBR
CITY Name Brussels Sarajewo
Zip 56xxx 33xxx
Phone_prefix 056 033
Sao Paolo Sofia San Francisco Boston New York Paris Tokyo Sydney London
76xxx 100xx 415xx 617xx 718xx 250xx 392xx 36xxx 826xx
076 100 415 617 718 250 392 036 826
BAM BRL BGL USD EUR JPY AUD GBP
Land* Belgium Bosnia and Herzegovina Brazil Bulgaria USA USA USA France Japan Australia United Kingdom
*NAPOMENA Kolonu „Land“ ostaviti praznu. U 5. zadatku korisiti sadržaj ove kolone kako bi se upisao id odgovarajuće države. 4. Modifikovati tabelu t_offices: a. Dodati kolonu „city_id“ (int) pomoču naredbe ALTER TABLE b. Postaviti strani ključ „t_office.city_id --- t_city.id“, tako da postoje veze kao na slici:
24
5. Na osnovu podataka u tabeli CITY, napisati UPDATE naredbe kojima se u tabeli t_offices, kolona t_city_id upisuje id odgovarajućeg grada. Korisiti postojeće podatke iz kolone city:
6. Napisati ALTER TABLE naredbu kojom se briše kolona „city“ 7. Promjeniti ime kolone „phone_prefix“ u „dialing_code“ u tabelama T_CITY i T_LAND 8. Napisati neredbu DELETE FROM kako biste iz tabela t_city i t_land obrisali sve redove koji nisu povezani sa podacima u tabeli t_offices 9. Uraditi „Reverse Engineer“ i napraviti novi ER dijagram. Kopirati ga u ovaj dokument. 10. Generisati DDL kod za kreiranje šeme baze podataka sa izmjenama urađenim u ovoj vježbi. Kod kopirati u ovaj dokument.
Vježba 2 – Ograničenja stranog kluča: opcije ON DELETE i ON UPDATE Potrebno je revidirati sve tabele u svojoj bazi podataka koje imaju strani ključ. Svaki strani ključ analizirati, te zadati odgovarajuće naredbe koje definišu opcije ON UPDATE i ON DELETE. Model treba osmisliti tako da su zastupljena sva tri tipa ograničenja (RESTRICT, CASCADE, SET NULL). Obrazložiti kako se svako od definisanih ograničenja reflektuje na brisanje i izmjenu slogova. Navesti primjere naredbi UPDATE I DELETE i pokazati kako definisani strani ključevi utječu na izvršavanje ovih naredbi. Ova vježba je dio projektog zadatka. Upisati je u projektnu dokuemnaciju u poglavlje: “5.1 Podešavanje opcija stranih ključeva“
25
Vježba 3: Jednostavni Select upiti Uputstvo za izradu vježbe Svaki učenik konektuje se na svoju šemu iz MySQL Workbench alata. Vježba sadrži niz zadataka koji definišu kakav upit treba napraviti. Nakon kreiranja zadatog upita kopirati ga u dokument i odrediti font kao u primjeru (crveno, bold). Npr. Zadatak 1 Napisati naredbu za selectovanje svih kolona i svih redova iz tabele Customers. SELECT * FROM T_customers Sminiti urađen zadatak pod istim imenom i u isti folder u kojem je i bio (c:\bp4\Vjezba 4.docx) ZADACI 1. Iz tabele Customers selektovati kolone contactLastName i contactFirstName. Ispisati sve redove. 2. Modifkovati prethodnu naredbu tako da se izlista samo 10 prvih slogova 3. Naredbu 1 modifikovati tako da se ispisu slogovi počevšti od 11-og pa onda 15 narednih 4. Modifikovati naredbu 1 dodavanjem odredbe za sortiranje po koloni contactLastName¸ 5. Modifikovati prethodnu naredbu tako da sortiranje bude po koloni contactLastName a zatim i koloni contactFirstName 6. Napisati naredbu kojom se iz tabele Orders ispisuju samo jedinstvene vrijednosti u koloni status. 7. Iz tabele Orders ispisati orderNumber, orderDate i customerNumber sortirane po polju orderDate u rastućem redoslijedu 8. Iz tabele Orders ispisati orderNumber, orderDate i customerNumber sortirane po polju orderDate u opadajućem redoslijedu 9. Ispisati sve kolone iz tabele Order samo ako je vrijdnost kolone status =“shipped“ (isporučeno). Sortirati ih po orderDate 10. Ispisati sve podatke iz tabele Order koje se odnose na kupca sa brojem 114 (CustomerNumber). Sortirati po polju ShippedDate. 11. Iz tabele Employees ispisati samo one slogove kod kojih kolona jobTitle ima vrijednost ‘Sales Rep’.
26
12. Iz tabele Orders izlistati sve narudzbe koje pripadaju kupcu broj 124 (CustomerNumber). 13. Modifikovati prethodni upit tako da se ispisuju samo narudzbe navedenog korisnika u statusu ‚Shipped ‘. 14. Iz tabele Orders izlistati sve narudzbe koje u polju comments imaju neki podatak. 15. Iz tabele Employees izlistati podatke o svim radnicima koji u polju JobTitle imaju niz karaktera ‚Sale‘ bilo gdje u polju. 16. Iz tabele Employees izlistati podatke o radnicima kod kojih je u polju officeCode 2,3 ili 4. Uraditi na dva načina. 17. Iz tabele Employees izlistati podatke o radnicima kod kojih je u polju extension na drugom mjestu karakter „1“. 18. Iz tabele Employees izlistati podatke o radnicima kod kojih polje extension završava karakterom „1“. 19. Iz tabele Employees izlistati podatke o radnicima kod kojih je u polju extension na drugom mjestu karakter „1“ i koje završava karakterom „1“. 20. Iz tabele Offices ispisati podatke o kancelarijama koje nisu iz USA (korisiti polje Contry).
27
Vježba 4: Složeni Select upiti (spajanje tabela) Pogledi
Uputstvo za izradu vježbe Svaki učenik konektuje se na svoju šemu iz MySQL Workbench alata. Vježba sadrži niz zadataka koji definišu kakav upit treba napraviti. Nakon kreiranja zadatog upita kopirati ga u dokument i odrediti font kao u primjeru (crveno, bold). Npr. Zadatak 1 Napisati naredbu za selectovanje svih kolona i svih redova iz tabele Customers. SELECT * FROM T_customers Sminiti urađen zadatak pod istim imenom i u isti folder u kojem je i bio (c:\bp4\Vjezba 4.docx) ZADACI 21. Iz tabele Offices ispisati city i phone, a iz tabele Employees ispisati kolone lastName i firstName. Sortirati po poljima lastName i firstName. 22. Modifikovati prethodni upit tako da se ispisuju podaci o radnicima iz kancelarije koja je iz Tokija (city = Tokyo). 23. Modifikovati upit iz zadatka 1 tako da prikazuje samo podatke o radnicima koji u polju jobTitle imaju string “Sales”. 24. Modifikovati upit iz zadatka 1 tako da se ispisuju podaci o radnicima iz kancelarije koja je iz Tokija (city = Tokyo) i da prikazuje samo podatke o radnicima koji u polju jobTitle imaju string “Sale”. 25. Povezati tabele products i productLines . Iz tabele products ispisati productName, productVendor, productDescription i quantityInStock, a iz tabele ProductLines ispisati textDescription. 26. Modifikovati upit iz prethodnog zadatka tako da se selektuju samo proizvodi (products ) koji u polju productDesription imaju string ‘model’ i proizvodne linije (ProductLines) koje u polju textDescription imaju riječ „CAR.“ 27. Povezati tabele orderDetails, products i productLines. Napraviti upit koji prikazuje iz tabele orderDetails: orderNumber i quantityOrdered, iz tabele products productName ii z tabele ProductLines polje textDescription.
28
28. Modifikovati prethodni upit tako da pokazuje samo stavke kod kojih je naručena količina (quantityOrdered) veća od 60 a ime proizvoda (productName) sadrži string “Porsche”. Definisati sortiranje po koloni productName. 29. Upit iz zadatka 7 proširiti povezivanjem tabele orders. Iz ove tabele prikazati orderDate, customerNumber i status , a iz preostale 3 iste kolone kao u upitu 7. Sortirati podatke po koloni customerNumber. 30. Modifikovati upit iz prethodnog zadatka tako da prikazuje podatke samo o kupcu čiji je broj 112. Iz liste kolona izbrisati customerNumber. 31. Modifikovati upit iz prethodnog zadatka tako da prikazuje podatke o narudžbama napravljenim poslije 1.8.2003. 32. Modifikovati upit iz zadatka 9 tako što povezujemo i tabelu customers. Iz ove tabele prikazati kolone contactLastName i contactFirstName. Sortirati po istim kolonama. 33. Modifikovati upit iz zadatka 12 tako da prikazuje samo narudžbe u statusu 'On Hold'. 34. Povezati tabele customers, orders i payments. Prikazati kolone: Customers->customerNumber, contactLastname, contactFirstname, orders ->orderNumber, orderDate,status, payment>paymentDate, amount. Sortirati poi menu i prezimenu kupca. 35. Modifikovati prethodni upit tako da prikazuje samo plaćanja izvršena poslije 1.12.2004 i ona kod kojih je iznos veći od 50000, a za narudžbe u status “Cancelled” 36. Napraviti view v_employees baziran na upitu iz zadatka 1. 37. Uraditi zadatke 2, 3 i 4 korištenjem pogleda v_employees. 38. Napraviti pogled v_products korištenjem upita iz zadatka 5. 39. Korištenjem pogleda v_products uraditi zadatke 6 i 7. 40. Napraviti pogled v_orders korištenjem upita iz zadatka 9. 41. Korištenjem pogleda v_orders uraditi zadatke 10 i 11.
29
Vježba 5: SQL funkcije
Uputstvo za izradu vježbe Svaki učenik konektuje se na svoju šemu iz MySQL Workbench alata. Vježba sadrži niz zadataka koji definišu kakav upit treba napraviti. Nakon kreiranja zadatog upita kopirati ga u dokument i odrediti font kao u primjeru (crveno, bold). Npr. Zadatak 1 Napisati naredbu za selectovanje svih kolona i svih redova iz tabele Customers. SELECT * FROM T_customers Sminiti urađen zadatak pod istim imenom i u isti folder u kojem je i bio (c:\bp4\Vjezba 4.docx) ZADACI
1. Napiši upit koji će prikazati tekući datum 2. Napiši upit koji će ispisati tekući dan 3. Napiši upit koji će iz tabele payments ispisati sve postojeće kolone i dadati novu koja se računa kao amount uvećan za PDV (amount*1.17). Kolonu nazvati total_amount. 4. Napiši upit koji će iz tabele orderDetails ispisati sve postojeće kolone i dadati novu koja se računa kao priceEach uvećan za PDV (priceEach *1.17). Kolonu nazvati total_ priceEach. 5. Napiši upit koji iz tabele offices kreira novu kolonu koju čine kolone officeCode, city i phone, razdvojene zarezom. Novu kolonu nazvati office. Npr: 1, San Francisco, +1 650 219 4782 6. Napiši upit koji iz tabele employees kreira novu kolonu koju čine kolone lastname, firstname i email, razdvojene zarezom. Novu kolonu nazvati employee. Npr: Murphy, Diane,
[email protected] 7. Napiši upit koji proširuje prethodni upit kolonom koja prikazuje broj karaktera nove kolone. 8. Napiši upit koji prikazuje orderNumber i dan kada je roba isporučena (shippedDate). Kolonu nazvati shippedDay. Podatke čitati iz tabele Orders 9. Napiši upit koji prikazuje orderNumber i mjesec kada je roba isporučena (shippedDate). Kolonu nazvati shippedMonth. Podatke čitati iz tabele Orders 10. Napiši upit koji iz tabele employees ispisuje kolone lastname i firstname, ali tako da je lastname ispisano velikim slovima, a firstname malim slovima
30
5. PRILOZI Prilog 1 – PRIMJER DIZAJNA BAZE PODATAKA Pretpostavimo da treba kreirati jednostavnu bazu podataka koja će se koristiti za u aplikaciji „Internet prodavnica“. S tim u vezi, sporevest ćemo analizu zahtijeva i napraviti ER model.
Analiza potreba Korisnici koji žele naručivati robu najprije moraju da se registruju. Prilikom registracije, korisnici upisuju slijedeće podatke: - ime (obavezan unos) - prezime (obavezan unos) - datum rođenja - jmbg (obavezan unos) - email (obavezan unos) - lozinka (obavezan unos) - telefon (obavezan unos) - fax - mobitel - ulica (obavezan unos) - kućni broj (obavezan unos) - grad (obavezan unos) - poštanski broj (obavezan unos) Registrovani korisnik pravi narudžbu izborom artikala organizovanih u grupe i podgrupe artikala. Npr. postoji grupa „Mliječni proizvodi“, a unutar nje podrgupe: „Mlijeko“, „Mliječni deserti“, „Puter , margarin, mast“ i slično. Pored pripadajuće grupe i podgrupe, za svaki artikal evidentira se: naziv, bar kod, jedinica mjere i cijena. Nakon što završi sa izborom artikala, korisnik kompletira narudžbu, koja se dalje obrađuje od strane radnika za obradu narudžbi. Svaka narudžba ima jedinstven broj, podatke o korisniku (kupcu), datum kreiranja kao i datum isporuke. Pored ovih podataka, postoji i status narudžbe, koji može biti: - narudžba u toku - narudžba kompletirana - isporučena Korisnik može pregledati sve svoje narudžbe, u bilo kojem statusu. Radnik za obradu narudžbi može pregledati narudžbe svih korisnika.
31
32
Modeliranje podataka ER model ER dijagram GRUPA
KORISNIK
1
1
n PODGRUPA n
1 NARUDZBA n 1
ARTIKL 1
n NARUDZBA_STAVKE n
Opis objekata i veze
Pored identifikovanja objekata i veza, u fazi izrade modele objekti veze evidentiramo i atribute objekata, kao i atribute veza, ukoliko ih ima. Za svaki objekat (vezu) pravimo tabele kao u primjerima koji slijede. Objekat KORISNIK Naziv atributa
Tip podataka
Id Ime prezime datum_rodjenja jmbg email lozinka telefon fax mobitel
INTEGER VARCHAR (30) VARCHAR (30) DATE VARCHAR(13) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30)
Obavezno polje da da da ne da da da da ne ne
Primarni kljuc da ne ne ne ne ne ne ne ne ne
33
Opis Primarni kljuc objekta
datum rođenja jedinstven matični broj građana
VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30)
da da da da
ne ne ne ne
Naziv atributa
Tip podataka INTEGER VARCHAR (30)
Primarni kljuc da ne
Opis
id naziv
Obavezno polje da da
Obavezno polje da da
Primarni kljuc da ne
Opis
Obavezno polje da da da da da
Primarni kljuc da ne ne ne ne
Opis
Primarni kljuc da ne
Opis
adresa_ulica adresa_broj adresa_ grad adresa_ptt_broj
kućni broj poštanski broj
Objekat GRUPA
Primarni kljuc objekta
Objekat PODGRUPA Naziv atributa
Tip podataka
id naziv
INTEGER VARCHAR (30)
Primarni kljuc objekta
Objekat ARTIKL Naziv atributa
Tip podataka
id naziv bar_code jed_mjere cijena
INTEGER VARCHAR (30) VARCHAR(30) pobrojani FLOAT(10,2)
Primarni kljuc objekta
Vrijednosti: komad, litar, kilogram
Objekat NARUDZBA Naziv atributa
Tip podataka
id datum_narudzbe
INTEGER DATE
Obavezno polje da da
datum_isporuke
DATE
ne
ne
status
INTEGER
da
ne
34
Primarni kljuc objekta Datum kada je korisnik kreirao ili kompletirao narudžbu Datum kada je izvršena isporuka robe. Zavisi od statusa narudžbe. Ako je status „isporuceno“, vrijednost je obavezna 0 – narudzba u toku 1 – narudžba kompletirana od strane kupca 2 - isporučeno
Objekat NARUDZBA_STAVKE Naziv atributa
Tip podataka
id kolicina
INTEGER INTEGER
Obavezno polje da da
Primarni kljuc da ne
Opis Primarni kljuc objekta
Napomene: Tip podataka atributa određujemo na isti način kao što smo određivali tip promjenljive u programskom jeziku C++. Različiti sistemi za updarvljanje bazama podataka podržavaju različite tipove podataka, ali u osnovi svi sadrže: cjelobrojni (integer), realni (floar), tekstualni (varchar), datumski (date) i logički (BOOL). U ovom praktikumu ograničit ćemo se na ove tipove podataka. Obavezno polje označava dali je dozvoljeno da podatak ne bude upisan za primjerak objekta. Ako je u tabeli navedeno „da“, znači da za svaki primjerak objekta vrijednost atributa mora biti upusana u bazu. Primarni ključ „id“ navodimo za svaki objekat, bez obzira dali ima neki drugi kandidat za primarni ključ ili ne. Ovakva praksa omogučava jedinstven pristup podacima, bolje performanse baze, kao i unificiran tretman primarnog ključa u modeliranju podataka.
Relacioni model Prevođenje modela objekti veze u relacioni model Prevođenje objekata Pravilo za prevođenje veza glasi: Svaki objekat modela objekti veze postaje relaciona tabela, i to tako da atributi objekta postaju atributi relacione tabele, primarni ključ objekta postaje primarni ključ relacione tabele. Primjenom ovog pravila dobijemo slijedeće tabele: Tabela KORISNIK Naziv atributa
Tip podataka
Id Ime prezime datum_rodjenja Jmbg Email
INTEGER VARCHAR (30) VARCHAR (30) DATE VARCHAR(13) VARCHAR(30)
Obavezno polje da da da ne da da
Primarni kljuc da ne ne ne ne ne
35
Opis Primarni kljuc
datum rođenja jedinstven matični broj građana
VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30)
da da ne ne da da da da
ne ne ne ne ne ne ne ne
Naziv atributa
Tip podataka INTEGER VARCHAR (30)
Primarni kljuc da ne
Opis
id naziv
Obavezno polje da da
Obavezno polje da da
Primarni kljuc da ne
Opis
Obavezno polje da da da da da
Primarni kljuc da ne ne ne ne
Opis
Primarni kljuc da ne
Opis
ne
Lozinka Telefon Fax mobitel adresa_ulica adresa_broj adresa_ grad adresa_ptt_broj
kućni broj poštanski broj
Tabela GRUPA
Primarni kljuc
Tabela PODGRUPA Naziv atributa
Tip podataka
id naziv
INTEGER VARCHAR (30)
Primarni kljuc
Tabela ARTIKL Naziv atributa
Tip podataka
Id Naziv bar_code jed_mjere Cijena
INTEGER VARCHAR (30) VARCHAR(30) pobrojani FLOAT(10,2)
Primarni kljuc
Vrijednosti: komad, litar, kilogram
Tabela NARUDZBA Naziv atributa
Tip podataka
Id datum_narudzbe
INTEGER DATE
Obavezno polje da da
datum_isporuke
DATE
ne
36
Primarni kljuc Datum kada je korisnik kreirao ili kompletirao narudžbu Datum kada je izvršena isporuka robe. Zavisi od statusa narudžbe.
Status
INTEGER
da
ne
Obavezno polje da da
Primarni kljuc da ne
Ako je status „isporuceno“, vrijednost je obavezna 0 – narudzba u toku 1 – narudžba kompletirana od strane kupca 2 - isporučeno
Tabela NARUDZBA_STAVKE Naziv atributa
Tip podataka
Id kolicina
INTEGER INTEGER
Opis Primarni kljuc
Prevođenje veza Kod prevođenja veza treba voditi računa o tipu veze (kardinalnost i sveobuhvatnost objekta u vezi). Prevedimo najprije veze tipa 1:N, koje su totalne sa obje strane. U modelu zapravo imamo samo takve veze, i to: Korisnik-narudzba Narudzba- Narudzba_stavke Grupa_podgrupa Podgrupa_artikl Artikl-Narudzba_stavke Za ovakve veze primjenjuje se pravilo: Pravilo 2. - prevođenje veze 1:N Svaki 1:N tip veze ne prevodi se u novu relaciju, nego se primarni ključ objekta sa strane 1 umeće kao atribut u relacionu tabelu na strani N. Ovaj atribut postaje strani ključ relacione tabele na strani N. Svi eventualni artibuti veze postaju atributi relacije na strani N. Prevedimo veze kako slijedi. Veza “Korisnik-Narudzba” U ovoj vezi na strani N je nardžba, te se primarni ključ objekta Korisnik umeće u tabelu Narudzba i postaje strain ključ. Dakle, mijenja se tabela Narudzba i ona postaje: Tabela NARUDZBA Naziv atributa
Tip podataka
Id
INTEGER
Obavezno polje da
Primarni kljuc da 37
Opis Primarni kljuc
Datum kada je korisnik kreirao ili kompletirao narudžbu ne ne Datum kada je izvršena isporuka datum_isporuke DATE robe. Zavisi od statusa narudžbe. Ako je status „isporuceno“, vrijednost je obavezna INTEGER da ne 0 – narudzba u toku Status 1 – narudžba kompletirana od strane kupca 2 - isporučeno INTEGER Da Ne Strani kljuc (iz tabele Korisnik) Korisnik_Id S obzirom da u tabeli Narudzba već postoji polje sa imenom „id“, to pri umetanju stranog ključa dodajemo ime tabele kao prefiks, te dobijemo kolonu Korisnik_Id.
datum_narudzbe
DATE
da
ne
Obavezno polje da da da
Primarni kljuc da ne da
Opis
Obavezno polje da da da
Primarni kljuc da ne ne
Opis
Obavezno polje da da da
Primarni kljuc da ne ne
Opis
Ostale veze prevodimo na isti način. Veza Narudzba- Narudzba_stavke Modifikuje se tabela Narudzba_stavke. Tabela NARUDZBA_STAVKE Naziv atributa
Tip podataka
Id Kolicina Narudzba_Id
INTEGER INTEGER INTEGER
Primarni kljuc Strani kljuc
Veza Grupa_Podgrupa Tabela PODGRUPA Naziv atributa
Tip podataka
Id Naziv Grupa_id
INTEGER VARCHAR (30) INTEGER
Primarni kljuc Strani ključ
Veza Podgrupa_artikl Tabela ARTIKL Naziv atributa
Tip podataka
Id Naziv bar_code
INTEGER VARCHAR (30) VARCHAR(30)
38
Primarni kljuc
jed_mjere Cijena Podgrupa_id
pobrojani FLOAT(10,2) INTEGER
da da da
ne ne ne
Vrijednosti: komad, litar, kilogram
Obavezno polje da da da da
Primarni kljuc da ne da da
Opis
Strani ključ
Veza Artikl-Narudzba_stavke Tabela NARUDZBA_STAVKE Naziv atributa
Tip podataka
Id Kolicina Narudzba_Id Artikl_Id
INTEGER INTEGER INTEGER INTEGER
Primarni kljuc Strani kljuc Strani kljuc
Oprez! Uzima se poslednja verzija tabele. U ovom primjeru tabela je već dobila strani ključ prethodnim prevođenjem relacije. Sada dodajemo strani ključ na tu izmjenjenu tabelu.
Relaciona šema Cilj modeliranja podataka jeste relaciona šema, koja se direktno koristi u narednoj fazi razvoja baze podataka (implementacija). Relaciona šema je skup svih tabela koje su nastale tokom prevođenja modela objekti veze u relacioni model. OPREZ! Uzimamo zadnje verzije tabela
Tabela KORISNIK Naziv atributa
Tip podataka
Id Ime Prezime datum_rodjenja Jmbg Email Lozinka Telefon Fax mobitel adresa_ulica adresa_broj
INTEGER VARCHAR (30) VARCHAR (30) DATE VARCHAR(13) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30) VARCHAR(30)
Obavezno polje da da da ne da da da da ne ne da da
Primarni kljuc da ne ne ne ne ne ne ne ne ne ne ne 39
Opis Primarni kljuc
datum rođenja jedinstven matični broj građana
kućni broj
VARCHAR(30) VARCHAR(30)
da da
ne ne
Naziv atributa
Tip podataka INTEGER VARCHAR (30)
Primarni kljuc da ne
Opis
id naziv
Obavezno polje da da
Obavezno polje da da da
Primarni kljuc da ne ne
Opis
Obavezno polje da da da da da da
Primarni kljuc da ne ne ne ne ne
Opis
Obavezno polje da da da da
Primarni kljuc da ne da da
Opis
adresa_ grad adresa_ptt_broj
poštanski broj
Tabela GRUPA
Primarni kljuc
Tabela PODGRUPA Naziv atributa
Tip podataka
Id Naziv Grupa_id
INTEGER VARCHAR (30) INTEGER
Primarni kljuc Strani ključ
Tabela ARTIKL Naziv atributa
Tip podataka
INTEGER VARCHAR (30) VARCHAR(30) pobrojani FLOAT(10,2) INTEGER Tabela NARUDZBA_STAVKE
Id Naziv bar_code jed_mjere Cijena Podgrupa_id Naziv atributa
Tip podataka
Id Kolicina Narudzba_Id Artikl_Id
INTEGER INTEGER INTEGER INTEGER
Prilog 2 – Sadržaj projektne dokumentacije Prva strana treba da sadrži slijedeće podatke: Elektrotehnička škola Tuzla Školska godina:2011/2012 Razred: 4t1 40
Primarni kljuc
Vrijednosti: komad, litar, kilogram Strani ključ
Primarni kljuc Strani kljuc Strani kljuc
Učenik:
Projektni zadatak: Projektovanje baze podataka ..... Druga strana: Sadržaj 1. Analiza potreba a. kopirati projektni zadatak, prema potrebi dopuniti informacijama identifikovanim prilikom izrade modela 2. Model objekti-veze i. Modeliranje podataka, model objekti-veze (teoretske osnove) ii. Dijagram objekti-veze iii. Opis objekata i veza 3. Relacioni model i. Relacioni model (teoretske osnove) ii. Prevođenje modela objekti-veze u relacioni model iii. Relaciona šema 4. Kreiranje relacionog modela pomoću CASE alata i. Kreiranje relacionog modela pomoću MySQL Workbench alata Data Modeling ii. Forward/Reverse Engineer, Synchronize Model alati iii. Izvršavanje SQL Skripta za kreiranje baze ...... PRILOZI .....
41