You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Početci rada sa programom <strong>ERwin</strong><br />
by Dr. Peter Wolcott<br />
Department of Information Systems and Quantitative Analysis<br />
College of Information Science and Technology<br />
University of Nebraska at Omaha<br />
Uvod<br />
<strong>ERwin</strong> je popularan alat za modeliranje podataka koji koristi veliki broj vodećih<br />
kompanija u Omahi i u svijetu. Proizvod trenutno posjeduje, razvija i prodaje Computer<br />
Associates, vodeći proizvoñač softvera. Ovaj proizvod podržava različite aspekte<br />
dizajniranja baza podataka, uključujuči modeliranje podataka (data modeling), inžinjering<br />
unaprijed (forward engineering), odnosno kreiranje šeme baze podataka i fizičke baze<br />
podataka na osnovu modela podataka (data modela), i inžinjering unazad (reverse<br />
engineering), odnosno krfeiranje modela podataka (data modela) na osnovu postojeće<br />
baze podataka za brojne relacione baze podataka (DBMS), uključujući Microsoft Access,<br />
Oracle, DB2, Sybase, i druge.<br />
Ovaj kratki tutorijal vas vodi kroz proces kreiranja data modela pomoću Erwin-a.<br />
Tutorijal neće objasniti sve aspekte Erwin-a, ali će pokazati minimum neophodan za<br />
kreiranje i upotrebu data modela. Sastoji se od tri glavna segmenta, koji odgovaraju<br />
projektno orjentisanim zadacima u ovom kursu:<br />
1. Kreiranje osnovnog modela podataka (Konceptualni data model)<br />
2. Kreiranje šeme baze podata<br />
3. Kreiranje baze podata<br />
Ovo je statički tutorijal, prilagoñen za štampanje. Dostupan je i tutorijal koji koristi<br />
fragmente slika sa ekrana i audio.<br />
Sekcija 1. Kreiranje osnovnog modela podataka (data<br />
modela)<br />
Kreriraćemo data model sličan onom koji je već napravljen za Heartland Properties case<br />
study , koji je korišten u ovom kursu. Entiteti uključeni u ovaj model uključuju:<br />
Zaposlene (Employee), Kancelarija (Office), Imovina (Property), i Inspekcija<br />
(Inspection).<br />
Prvo, pokrenućemo <strong>ERwin</strong> iz Start->Programs->Computer Associates->All Fusion-><br />
<strong>ERwin</strong> Data Modeler-> <strong>ERwin</strong><br />
Prvo će se pojaviti dijalog "ModelMart Connection Manager". Jednostavno pritisnite<br />
Cancel.
Zatim će vas program pitati da birate želite li da kreirate novi model ili da otvorite<br />
postojeći, kao na slici 1. Za ovu vježbu, kreiraćemo novi model.<br />
Slika 1: Krfeiranje novog modela<br />
U slijedećem dijalogu, prikazanom na sl. 2, ErWin će vas pitati da izaberete šablon<br />
(template) koji ćete koristiti za kreiranje novog modela. Za sada, možete asocirati model<br />
sa željenom bazom podataka, npr. Microsoft Access, Oracle, DB2, isl. Imaćete priliku da<br />
promjenite mišljenje kasnije, ali za sada izaberite Microsoft Access. Takoñe, izaberite<br />
Logical/Physical kao novi tip modela. Ovaj izbor će vam omogućiti da lako prelazite sa<br />
logičkog modela (ER Diagram) na fizički model (database schema) i obrnuto.
Slika 2: Izbor tipa modela<br />
<strong>ERwin</strong> će vam sada prikazati glavni prozor u kom će se odvijati većina posla na izradi<br />
vaših ER dijagrama, kao na sl. 3.
Slika 3: <strong>ERwin</strong> radni prostor<br />
Radni prostor <strong>ERwin</strong>a se sastoji od 2 glavna dijela. Lijevo je Model Navigator, koji<br />
prikazuje hijerarhiju važnijih dijelova, kao što su entiteti, domeni i subjektna područja<br />
(subject areas). Na desnoj strani je Display Window, koji će prikazivati sam ER dijagram.<br />
Kako budete kreirali objekte, oni će se pojavljivati u displej prozoru (ako su po prirodi<br />
vidljivi, kao što su entiteti), a hijerarhiski će se prikazivati u Model Navigatoru.<br />
Podešavanje osobina (Preferences)<br />
Alat kao što je <strong>ERwin</strong> može da se prilagodi velikom broju notacija i konvencija<br />
modeliranja podataka. U ovom kursu napravićemo slijedeće promjene u osobinama<br />
(preferences) prije početka kreiranja modela:<br />
1. U meniju Format->Entity Display, označite (čekirajte) Primary Key Designator
2. U meniju Format->Entity Display, otkačite oznaku (unčekirajte) Foreign Key<br />
Designator (FK)<br />
3. U meniju Format->Entity Display, otkačite oznaku (unčekirajte) Show Migrated<br />
Attributes<br />
4. U meniju Format->Relationship Display, označite (čekirajte) Verb Phrase<br />
Na kraju, možete birati izmeñu dvije različite notacije E-R dijagrama. U <strong>ERwin</strong>u,<br />
kliknite Model->Model Properties da dobijete prozor kao na sl. 3b:<br />
Slika 3b: Izbor notacije<br />
Ovaj tutorijal se bazira na Information Engineering ("Crows Foot – Vranina noga")<br />
notaciji. Takoñe, možete koristiti i IDEF1X, ako želite.<br />
Kreiranje entiteta<br />
Ka bi kreirali novi entitet, kliknite na ikonu entiteta ( ) na alatnoj trakici (toolbaru), ili<br />
desnim dugmetom kliknite na riječ Entity u Model Navigatoru. Ako ste išli preko ikone,<br />
onda trebate da kliknete u Display Window na mjesto gdje želite da stavite entitet, kao na<br />
sl. 4.
Slika 4: Novi entittet<br />
Podrazumjevano (default) ime entiteta je E/x, gdje je x neki broj (u našem slučaju 2).<br />
Kliknite na Tab taster nekoliko puta da vidite šta se dešava. Pritiskanje tab tastera<br />
izaziva situaciju da fokus kruži po tri glavna dijela Entiteta: po imenu entiteta, po<br />
atributima primarnog ključa i po atributima koji nisu primarni ključevi. Generalno, da<br />
promjenite neki od ovih dijelova, pritisnite Tab sa tastature dok ne doñete do željenog<br />
dijela, a zatim kucajte da dodate ili izmjenite taj dio entiteta.<br />
Za vježbu, pritisnite Tab nekoliko puta dok ne doñete do imena entiteta. Zatim unesite<br />
EMPLOYEE (zaposleni), kao na sl. 5.
Slika 5: Promjena imena entiteta<br />
Sada bi mogli i da snimimo dijagram da ne bi izgubili podatke ako sistem ili aplikacija<br />
padnu.<br />
Dodavanje kolone primarnog ključa<br />
Nakon što smo promjenili ime u EMPLOYEE, pritisnućemo Tab da bi pomjerili fokus<br />
nazad na slijedeći dio Entiteta, pa ćemo dodati primarni ključ. Zatim ćemo ukucati ime<br />
atributa primarni ključ - Emp_Num (identifikacioni broj zaposlenog), kao na sl. 6.
Slika 6: Dodavanje atributa primarni ključ<br />
Ako smo ranije dobro podesili osobine (Preferences), ovaj atribut će prikazati ikonu<br />
ključa pored naziva.<br />
Pritisnite Tab još jednom, da bi doveli fokus do slijedeće horizontalne linije u Entitetu,<br />
gdje možemo dalje dodavati atribute koji nisu primarni ključevi. Ukucajte Emp_Fname<br />
(ime zaposlenog), kao na sl. 7. Nakon toga pritisnite Enter (ne Tab). Primjetite šta se<br />
dešava. Kursor je sada u položaju koji vam omogućava unos novog atributa u istom<br />
dijelu Entiteta, u dijelu za dodavanje atributa koji nisu primarni ključevi (non-primary<br />
key attribute).
Slika 7: Dodavanje atributa koji nisu PK (non-primary key attributes)<br />
Continue adding the following non-primary key attributes:<br />
Emp_Lname (Prezime)<br />
Emp_SSN<br />
Emp_Street (Ulica)<br />
Emp_City (Grad)<br />
Emp_State (Država)<br />
Emp_Zipcode (Poštanski broj)<br />
Emp_Phone (Telefon)<br />
Emp_Fax (Fax)<br />
Vaš dijagram bi trebao izgledati kao na sl. 8.
Slika 8: Employee (zaposleni) entitet<br />
Ponovite proces kreiranja za entitete i atribute koji su prikazani u tabeli 1.<br />
Entitet Attributi Entitet Attributi<br />
OFFICE<br />
Office_Num (pk)<br />
Office_Street<br />
Office_City<br />
Office_State<br />
Office_Zipcode<br />
Office_Name<br />
Office_Phone<br />
Office_Fax<br />
INSPECTION<br />
Insp_Date (pk)<br />
Insp_Comments<br />
PROPERTY Prop_ID (pk) MANAGER Man_Salary
Prop_Street<br />
Prop_City<br />
Prop_State<br />
Prop_Type<br />
Prop_Baths<br />
Prop_Rooms<br />
Prop_MonthlyRent<br />
Man_Car_Allowance<br />
ASSOCIATE Assoc_Hourly_Rate<br />
Tabela 1: Entiteti i Atributi<br />
Treba primjetiti da neki entiteti nemaju atribut primarni ključ (Manager, Associate) i da<br />
jedan entitet ima atribut koji je dio primarnog ključa, a da sam ne konstituiše PK<br />
(Inspection). Kako budemo dodavali relacije ovom dijagramu, priroda ključeva za ove<br />
entitete će postajati jasnija. Za sada, provjerite da atributi Manager i Associate namaju<br />
PK i da atribut Inspection ima samo jedan atribut PK, kao na sl 9.
Slika 9: Entiteti agencije Heartland Properties<br />
Kreiranje relacija<br />
<strong>ERwin</strong> omogućava kreiranje relacija sa tri mogućnosti povezivanja: one-to-one, one-tomany<br />
i many-to-many. U okviru kategorije one-to-many, <strong>ERwin</strong> dozvoljava pravljenje<br />
identifikovanih (identifying) i neidentifikovanih (non-identifying) one-to-many relacija.<br />
One-to-many (jedan prema više) relacije<br />
Počećemo rad sa dvije relacije, izmeñu Inspection i Employee te izmeñu Inspection i<br />
Property. Inspection je u relaciji i sa Property i sa Employee u one to many relacijama.<br />
Svaka Inspekcija (Inspection) se vrši na jednoj Imovini (Property); svaka Imovina<br />
(Property) može biti predmet više inspekcija (Inspection); Svaku Inspekciju (Inspection)<br />
izvodi jedan zaposleni (Employee); svaki Zaposleni (Employee) može provoditi mnoge
Inspekcije (Inspections). Postavlja se pitanje jesu li ovo identifikovane (identifying) ili<br />
neidentifikovane (non-identifying) relacije? Ovo pitanje zadire u srž prirode primarnog<br />
ključa za Inspekciju (Inspection), entiteta koji je na strani "više" (many) relacije.<br />
Primarni ključ na strani Inspekcije je u ovom slučaju kombinovani (composite) primarni<br />
ključ koji se sastoji od dva atributa: {Insp_Date, Prop_ID}. Poslovno pravilo kaže da<br />
svaka imovina može imati samo jednu inspekciju dnevno. Neko bi možda ovu<br />
pretpostavku mogao dovesti u pitanje, ali ćemo je radi ilustracije ostaviti ovakvu. Treba<br />
dakle primjeti da PK Inspekcije (Inspection) uključuje PK Imovine (Property), entiteta sa<br />
kojim je u relaciji. Zbog ovoga, reći ćemo da je relacija izmeñu Inspekcije i Imovine<br />
(Inspection i Property) identifikovana (identifying) one-to-many relacija.<br />
Identifikovana (identifying) relacija se kreira tako da prvo kliknemo na njenu ikonu u<br />
alatnoj trakici ( ). Sada treba primjetiti "vraninu nogu", koja predstavlja "više"<br />
(many) i punu liniju koja označava Identifikovanu (identifying) relaciju. Da bi kreirali<br />
ovu relaciju, prvo ćemo kliknuti na ikonu, pa na roditeljski entitet, na "jedan" (one) strani<br />
relacije, pa na dječiji entitet na "više" (many) strani relacije. U našem slučaju, to će biti –<br />
prvo klik na ikonu, pa na Imovinu (Property), pa na Inspekciju (Inspection). Rezultati su<br />
prikazani na sl. 10.
Slika 10: Identifikovana (identifying) relacija<br />
Treba primjetiti da je <strong>ERwin</strong> ovoj relaciji dao ime "R/1", što i nije od velike pomoći.<br />
Zbog toga ćemo dvokliknuti na relaciju i dobiti dijalog u kom možemo dodatno<br />
definisati opis relacije. Dijalog je prikazan na sl. 11.
Slika 11: Definisanje relacije<br />
U tekst boksu Relationship: ova relacija je prisutna u formi<br />
proditeljski entitet (parent entity) R/1 dječiji entitet (child entity).<br />
Dio "Glagolski izraz" ("Verb Phrase") omogućava nam da definišemo naslove koji će biti<br />
prikazani umjesto R/1. Pošto je roditeljski entitet Imovina (Property) a dječiji je<br />
Inspekcija (Inspection), kada čitamo od roditelja prema djetetu imaćemo "Imovina se<br />
podvrgava Inspekciji" ("Property Undergoes Inspection"). Kada čitamo od djeteta prema<br />
roditelju imaćemo "Inspekcija se preduzima na Imovini" ("Inspection Undertaken at<br />
Property").<br />
U dijelu "Relationship Cardinality" odreñujemo koliko dječijih entiteta može biti<br />
povezano sa svakim roditeljskim entitetom. Preciznije,<br />
"jedna Imovina se podvrgava ni jednoj, jednoj ili više Inspekcija".<br />
Treba primjetiti da u ovoj tački možemo definisati i učešće. Ako Imovina mora biti<br />
podvrgnuta bar jednoj inspekciji, tada ćemo izabrati prinudnu participaciju tako što ćemo<br />
izabrati "Jednu ili više" inspekcija pomoću "One or More" opcije.
Kliknite OK da završite definisanje relacija, kao na sl. 12.<br />
Slika 12: Završene relacije<br />
Primjetite da entitet koji kao dječiji učestvuje u identifikovanoj (identifying) relaciji ima<br />
okrugle ćoškove. Ova notacija se koristi i u drugim alatima za modeliranje i zove se<br />
"slabiji entitet" ("Weak Entity").<br />
Relacija izmeñu Inspekcije i Zaposlenih je nešto drugačija. To je jedan prema više<br />
relacija, ali je neidentifikovana (non-identifying), jer primarni ključ Zaposlenih<br />
(Employee) nije dio primarnog ključa Inspekcije (Inspection). Za ovakav slučaj relacije,<br />
moramo kliknuti na ikonu neidentifikovane relacije (non-identifying) (<br />
isprekidanu liniju umjesto pune.<br />
), koja koristi
Kao i ranije, kliknućemo na ikonu, pa na roditeljski entitet, pa na dječiji. Dakle, kolk na<br />
ikonu, pa na entitet Zaposleni (Employee) pa onda na entitet Inspekcija (Inspection).<br />
Zatim ćemo dvokliknuti na relaciju da dobijemo dijalog za definisanje relacija kao na sl.<br />
13.<br />
Slika 13: Definisanje neidentifikovane (Non-identifying) relacije.<br />
Kao i ranije, unosimo glagolske fraze koje imaju jasno značenje za ove relacije. Kao i<br />
ranije, pošto svaki zaposleni može biti povezan sa ni jednom, jednom ili više inspekcija,<br />
biramo odgovarajuću važnost (cardinality) relacije. Za razliku od prethodnog puta,<br />
biramo neidentifikovanu (non-identifying) relaciju. Imamo i mogućnost da odredimo da<br />
li će biti dozvoljena nulta polja. Ova odluka zavisi od učešća roditeljskog entiteta u<br />
relaciji sa dječijim entitetom. Drugim riječima, da li svaka pojava dječijeg entiteta –<br />
Inspekcije (Inspection) mora biti povezana sa pojavom roditeljskog entiteta – Zaposleni<br />
(Employee)? U našem slučaju, odgovor je da. Svaku Inspekciju mora provesti neko od<br />
zaposlenih, ili se ona ne smatra ispravnom inspekcijom. Dakle, učešće Zaposlenih<br />
(Employee) u relaciji je obavezno.<br />
Kliknite OK da završite definisanje relacija, kao na sl. 14.
Slika 14: Neidentifikovana (Non-identifying) relacija<br />
Zaposleni (Employee) i Kancelarije (Office) takoñe su u meñusobnoj relaciji. Svakom<br />
Zaposlenom (Employee) je pridružena po jedna i samo jedna Kancelarija (Office), a<br />
svaka Kancelarija (Office) ima jednog ili više Zaposlenih(Employees). U ovoj "Jedan<br />
prema Više" (one-to-many) relaciji Kancelarija (Office) je roditelj a Zaposleni<br />
(Employee) je dijete. Pošto primarni ključ djeteta Zaposleni (Employee) ne uključuje PK<br />
roditelja Kancelarija (Office), ovo je neidentifikovana (non-identifying) relacija. Kliknite<br />
na odgovarajuću ikonu, pa na Kancelariju (Office) pa onda na Zaposlene (Employee) da<br />
bi kreirali ovu relaciju. Zatim dvokliknite na na samu relaciju i popunite dijalog za<br />
definiciju relacije kao na sl. 15.
Slika 15: Neidentifikovana(non-identifying) relacija sa obaveznim učešćem<br />
Na slici 15 vidimo primjer relacije u kojoj je učešće obavezno za oba entiteta. Važnost<br />
(Cardinality) indicira da svaka Kancelarija (Office) mora imati "jednog ili više" (One or<br />
More), ali ne i nula Zaposlenih (Employees). Tip relacije (Relationship Type) govori<br />
nam da je ovo neidentifikovana relacija (non-identifying ) i da nul polja (Nulls) nisu<br />
dozvoljena. Drugim riječima, svako dijete – Zaposleni (Employee) mora biti povezan sa<br />
jednim roditeljskim entitetom – Kancelarijom (Office).<br />
Završićemo rad sa relacijama kreiranjem jedne relacije izmeñu Kancelarije (Office) i<br />
Imovine (Property) u kojoj će svaka Kancelarija upravlja sa ni jednom, jednom ili više<br />
Imovina, dok je svaka Imovina upravljana od jedne i samo jedne Kancelarije. Dijagram<br />
bi trebao izgledati kao na sl. 16.
Slika 16: Relacije<br />
SubTipovi i SuperTipovi – (Subtypes and Supertypes)<br />
Postoje dvije vrste zaposlenih koje moramo razlikovati: Menadžeri i Pomoćnici<br />
(Managers and Associates). Svaka od ovih vrsta zaposlenih ima sve osobine nabrojane u<br />
tabeli Zaposleni (Employee) ali i manji broj specifičnih atributa. Samo Menadžeri imaju<br />
fiksnu Platu (Salary) i mogućnost trošenja novca za gorivo (Car allowance). Samo<br />
Pomoćnici (Associates) imaju platu na bazi radnih sati (hourly rate). Mi možemo odrediti<br />
da su Menadžer i Pomoćnik podtipovi entiteta Zaposleni (Employee). Da bi to uradili,<br />
koristićemo ikonu SubTip (subtype - ). Dakle, prvo ćemo kliknuti na ikonu<br />
SubType, zatim na entitet Zaposleni (Employee) koji je u ovom slučaju SuperType, pa na<br />
entitet Menadžer (Manager) koje je SubType. Rezultat je vidljiv na sl. 17.
Slika 17: Subtype relacija<br />
Da bi naveli da je Pomoćnik podtip (subtype), kliknučemo ponovo na ikonu subtype. Ali,<br />
umjesto ponovnog klika na supertip, kliknućeno na ikonu subtype koja se već nalazi<br />
na dijagramu izmeñu entiteta Employee and Manager. Zatim ćemo kliknuti na entitet<br />
Pomoćnik (Associate). Rezultat je vidljiv na sl. 18.
Slika 18: Finalni ER Dijagram<br />
Na kraju, snimite svoj rad. Sada možete ili napustiti <strong>ERwin</strong>, ili nastaviti sa slijedećom<br />
sekcijom – Kreiranje relacione šeme.(Creating a Relational Schema).<br />
Sekcioja 2: Kreiranje relacione šeme<br />
(Creation of a Database Schema)<br />
U ovoj sekciji naučićemo kako da napravimo šemu baze podataka na osnovu E-R<br />
dijagrama koji smo kreirali u sekciji 1. Da bi nastavili, možete koristiti prethodno<br />
napravljeni dijagram ili skinuti s interneta moj E-R dijagram pomoću linka za download.
Ova sekcija ima dva glavna dijela. Prvo, moramo obezbjediti da fundamentalni (snažni)<br />
entiteti imaju primarne ključeva. Drugo, definisaćemo domen za svaki atribut. Treće,<br />
pustićemo Erwin-u da konvertuje dijagram u relacionu šemu.<br />
Dodjela primarnih ključeva<br />
Fundamentalni entiteti su oni čiji PK ne zavisi od bilo kojeg drugog entiteta. od PK<br />
Fundamental entities are those that do not depend on any other entity for their primary<br />
key. Preciznije, fundamentalni entiteti nisu:<br />
• Podtipovi (subtypes)<br />
• Pomoćni ili složeni (associative - composite) entiteti<br />
• Slabi ili opisni (weak - attributive) entiteti.<br />
• Entiteti na strani "više"(many) relacije koja je tipa jedan-prema-više (1-to-many).<br />
U stvari, pomoćni i slabi (associative – weak) entiteti su primjeri za ovu vrstu<br />
entiteta.<br />
U našem primjeru, E-R dijagram izgleda kao na sl. 2.1
Slika 2.1 E-R dijagram<br />
Treba primjetiti da entiteti MANAGER i ASSOCIATE nemaju PK (oni su podtipovi -<br />
subtypes). Primarni ključ entiteta INSPECTION uključuje Insp_Date ali i Prop_ID zbog<br />
relacije u kojoj se Inspekcija (INSPECTION) vrši na Imovini(PROPERTY) pri čemu je<br />
ona identifikujuća (identifying) relacija. Znači, naši fundamentalin entiteti su:<br />
EMPLOYEE, OFFICE, PROPERTY. Svaki od njih ima potpuno definisan PK.<br />
Definisanje Domena (Domains)<br />
Domen nekog atributa je skup vrijednosti koje su dozvoljene tom atributu, odnosno koje<br />
taj atribut može da ima. Npr. domen za tip DanUNedeljji (Day_of_Week) sastojaće se od<br />
7 vrijednosti: {Ponedeljak, Utorak, ..., Nedelja}. Da bi odredili domen, treba da<br />
definišemo:
1. Tip podataka (obavezno). Tipovi podataka mogu biti string (slovni ili<br />
alfanumerički), brojni (nekoliko vrsta), datum i vrijeme itd. Npr.<br />
Assoc_Hourly_Rate mora biti poseban realni broj tipa DECIMAL sa dva<br />
decimalna mjesta. Prop_Rooms mora biti cjelobrojni. Emp_Fname mora biti<br />
string varijabilne dužine, ali ne duži od 50 karaktera.<br />
2. Okviri (constraints) su opcioni. Za neke atribute, skup vrijednosti koje su<br />
predviñene tipom podtaka može biti "tijesan". Day_of_Week je jedan primjer. U<br />
našem dijagramu, U našem E-R dijagramu, nekoliko atributa ima ovako<br />
definisane domene. Npr. vrijednost polja Prop_Type mora biti u {Home,<br />
Apartment, Condo, Commercial} (Kuća, Apartman, Zgrada, Komercijalna).<br />
Vrijednost polja Prop_MonthlyRent mora biti veća od $0.<br />
Jedna od atraktivnih karakteristika domena, pored poboljšanja integriteta tipova podataka<br />
koje omogućavaju, je da domeni mogu biti dijeljeni izmeñu više atributa. Npr. domeni<br />
Emp_State i Prop_State su identični: oni su lista od 50 mogućih kodova država (misli se<br />
na SAD). U nekom E-R dijagramu, možemo definisati jedan domen pa ga koristiti od<br />
strane nekoliko atributa. Korist koju imamo od ovoga je usklañenost izmeñu atributa i<br />
lakše održavanje. Ako bi nova država ušla u sastav SAD, mogli bi natjerati i polje<br />
Emp_State i polje Prop_State da prihvate novi kod ('PR' za Puerto Rico?) jednostavnom<br />
promjenom definicije domena.<br />
Najprije ćemo definisati sve domene koji su nam potrebni u našem E-R dijagamu, a zatim<br />
ih dodjeliti atributima.<br />
Kreiranje domena<br />
Iz menija Model, izabraćemo Domain Dictionary (Riječnik domena). Vidjećemo prozor<br />
kao na sl. 2.2
Slika 2.2 Domain Dictionary<br />
Prvo ćemo kreirati novi domen, a onda ćemo taj domen koristiti za numerička polja kao<br />
što su Emp_Num, Prop_ID i Office_Num. Kliknite na New... da kreirate domen. Upišite<br />
ime "Identifier" kao logičko ime u polje "Logical Name" kao na sl. 2.3.
Slika 2.3 novi Domen<br />
Kliknite OK. Vratićete se u prozor "Domain Dictionary" i vidjećete da je kreiran novi<br />
domen "Identifier", kao na sl. Fiure 2.4. Kliknite na Tab"Data Type" i izaberite<br />
INTEGER za tip podatka ovog domena.
Slika 2.4 Pridruživanje tipa podataka novom Domenu<br />
Sada ćemo kreirati još jedan domen – Država (State), koji ćemo koristiti za polja<br />
Emp_State, Prop_State, i Office_State. Nemojte kliknuti OK u prozoru"Domain<br />
Dictionary". Radije kliknite ponovo na New... Kao na sl. 2.5, dajte ovom domenu ime<br />
State
Slika 2.5 Domen State<br />
Kliknite OK. Izaberite VARCHAR() tip podataka iz Taba "Data Type", i unesite broj 2<br />
izmeñu zagrada kao na sl.2.6. Ovo označava da je tip podatka dvoslovni string. (U stvari,<br />
CHAR(2) bio bi ispravniji tip, ali ako je ciljna baza podataka Microsoft Access,<br />
<strong>ERwin</strong> ne pridružuje ispravno CHAR() sa Microsoftovim TEXT tipom podataka.
Slika 2.6 Domen State (tip podataka)<br />
Sada trebamo da navedemo koji su kodovi država dozvoljeni za ova domen. Kliknite na<br />
tri tačke (ellipsis ...) sa desne strane kombo boksa sa naslovom Ispravno (Valid:)<br />
Vidjećete prozor u kom kreiramo pravila ispravnosti (validation rules), kao na sl. 2.7.
Slika 2.7 Validation Rules<br />
Kreiraćemo novo pravilo (validation rule) za domen State. Kliknite New... . Dajte<br />
pravilu ime "State Codes" kao na sl. 2.8.<br />
Slika 2.8 State Codes<br />
Kliknite OK. Ovom prozoru ćemo se vratiti kasnije. Sada kliknite na radio dugme pod<br />
imenom "Valid Values List" i počnite da upisujete dozvoljene kodove država u koloni<br />
"Valid Value" kao na sl. 2.9.
Slika 2.9 Unos dozvoljenih vrijednosti Domena<br />
Treba primjetiti da <strong>ERwin</strong> gradi SQL IN uslov u kome su izlistane vrijednosti koje smo<br />
mu naveli. Kada završte pritisnite OK.<br />
Slične korake treba proći za kreiranje Domena i unos pravila za sva polja u tabeli 2.1.<br />
Pobrinite se da pravilo (validation rule) za dati domen bude ili prazno ili ono koje želite.<br />
Ponekad će vam <strong>ERwin</strong> dozvoliti da pravilo koje ste napravili za jedan domen bude<br />
primjenjeno i na drugi domen, a da vi to i ne primjetitie (neće očistiti polja).<br />
Domain<br />
name<br />
Name<br />
Street<br />
City<br />
State<br />
Datatype<br />
VARCHAR(50)<br />
VARCHAR(100)<br />
VARCHAR(50)<br />
VARCHAR(2)<br />
Validation rule<br />
Primjedba: Iako polje State treba da bude CHAR(2) za<br />
string fiksne dužine, mislim da postoji bug u softveru koji<br />
takve tipove podataka kovertuje u Byte tip u Accessu.<br />
Možda Access nema odgovarajući tip za string fiksne<br />
dužine. Nije baš ono što želimo...
Zipcode<br />
Phone<br />
Currency<br />
SSN<br />
Comment<br />
Property<br />
Type<br />
Date<br />
Non<br />
negative<br />
Integer<br />
VARCHAR(10)<br />
VARCHAR(15)<br />
DECIMAL(9,2)<br />
VARCHAR(11)<br />
VARCHAR(255)<br />
VARCHAR(25)<br />
DATE<br />
INTEGER<br />
Kreirajte novo pravilo pod imenom Currency sa<br />
minimalnom vrijednošću = 0<br />
Primjedba: Ovo bi trebao biti CHAR(11), ali radi gornje<br />
primjedbe koristimo VARCHAR(11).<br />
Kreirajte pravilo" Property Type " sa listom važećih<br />
vrijednsoti: {Home, Apartment, Condo, Commercial}<br />
Kreirajte novo pravilo pod imenom "non negative<br />
integer" sa minimalnom vrijednošću = 0<br />
Tabela 2.1 Kreiranje domena<br />
Kada završite, prozor "Domain Dictionary" trebao bi da izgleda kao na sl. 2.10<br />
Slika 2.10 Lista domena<br />
Kliknite OK kada završite.<br />
Primjena domena na atribute
Završni korak rada sa domenima je pridruženje domena odgovarajućim atributima. Da bi<br />
to uradili, dvoklinite jedan od entiteta na E-R dijagram, npr. na EMPLOYEE. Vidjećete<br />
listu atributa u lijevom dijelu prozora i listu domena na desnoj strani. Da bi pridružili<br />
domen nekom atributu, prvo kliknite na atribut, pa onda na domen. Nećete dobiti nikakvu<br />
povratnu informaciju da je ovo pridruživanje urañeno. Npr. slika 2.11 prikazuje kako je<br />
atributu Emp_Num asociran (pridružen) domen Identifier.<br />
Slika 2.11 Pridruženi Domen i Stribut<br />
Asocirajte sve ostale atribute na vašem E-R dijagramu sa odgovarajućim domenima,<br />
kako je opisan u tabeli 2.2. Primjetićete da isti domen može biti pridružen u nekoliko<br />
atributa.<br />
Attribute<br />
Emp_Num<br />
Emp_Fname<br />
Emp_Lname<br />
Emp_Street<br />
Emp_City<br />
Emp_State<br />
Emp_Zipcode<br />
Emp_SSN<br />
Domain<br />
Identifier<br />
Name<br />
Name<br />
Street<br />
City<br />
State<br />
Zipcode<br />
SSN
Emp_Phone<br />
Emp_Fax<br />
Office_Num<br />
Office_Street<br />
Office_Zipcode<br />
Office_Name<br />
Office_Phone<br />
Office_Fax<br />
Insp_Date<br />
Insp_Comments<br />
Prop_ID<br />
Prop_Street<br />
Prop_City<br />
Prop_State<br />
Prop_Zipcode<br />
Prop_Type<br />
Prop_Baths<br />
Prop_Rooms<br />
Prop_MonthlyRent<br />
Man_Salary<br />
Phone<br />
Phone<br />
Identifier<br />
Street<br />
Zipcode<br />
Name<br />
Phone<br />
Fax<br />
Date<br />
Comment<br />
Identifier<br />
Street<br />
City<br />
State<br />
Zipcode<br />
Property Type<br />
Non negative integer<br />
Non negative integer<br />
Currency<br />
Currency<br />
Man_Car_Allowance Currency<br />
Assoc_Hourly_Rate<br />
Currency<br />
Tabela 2.2 Atribut - Domen Asocijacija<br />
Konvertovanje E-R Dijagrama u Relacionu šemu<br />
Prvi korak u konvertovanju E-R Dijagrama u relacionu šemu je transformacija svakog<br />
entiteta i svake relacije u vlastitu kopiju u šemi koja se sastoji od relacionih tabela. U<br />
okviru kursa smo pokrili pravila za takvu konverziju. <strong>ERwin</strong> na osnovu ovih pravila<br />
jednostavno obavlja ovu konverziju..<br />
Iz menija Format->Entity Display, sada treba označiti slijedeće 3 opcije (ako već nisu):<br />
1. Primary Key Designator (već je trebao biti označen - čekiran)<br />
2. Foreign Key Designator (FK)<br />
3. Show Migrated Attributes
Kada oznalčimo ove opcije, E-R Dijagram će izgledati kao na sl. 2.12<br />
Slika 2.12 E-R Dijagram sa prikazanim opcijama "Migrated Attributes" i "Foreign<br />
Keys"<br />
Primjetite da je <strong>ERwin</strong> automatski uradio slijedeće:<br />
1. Vanjski ključevi (FK) koriste se za jedan-prema-više (one-to-many) relacije.<br />
Pošto <strong>ERwin</strong> automatski dobavlja vanjske ključeva (FK) ako takva relacija<br />
postoji, bilo koji FK kriran od čovjeka koji modelira podatke bio bi višak i kao<br />
takav obrisan.<br />
2. Vanjski ključevi (FK) koji nastaju iz identifikovanih (identifying) relacija<br />
automatski postaju dio primarnog ključa (vidi INSPECTION).<br />
3. Podtipovi (subtypes) nasllijeñuju PK od svog super tipa (supertype), pa ovi<br />
primarni ključevi služe takoñe i u svrhu vanjskih (FK) ključeva.
Na kraju, da transformišete logički E-R dijagram u fizičku relacionu šemu, jednostavno<br />
odaberite Physical umjesto Logical u kombo boksu na vrhu glavnog prozora, kao na sl.<br />
2.12. Rezultat je vidljiv na sl. 2.13.<br />
Slika 2.13 Fizički Model Relacione šeme
Primjetite da su tipovi podataka, onakvi kakvi su definisani u domenima, jasno prikazani.<br />
U našoj zadnjoj sekciji, Section 3, istražićemo kako možemo koristiti <strong>ERwin</strong> da<br />
napravimo bazu u Microsoft Access-u (ili u gotovo svakoj DBMS) direktno, na osnovu<br />
našeg dizajna.<br />
Sekcija 3: Kreiranje baze podataka<br />
U ovoj sekciji naučićemo kako da kreiramo fizičku bazu podataka na osnovu u<br />
prethodnoj sekciji razvijene relacione šeme. Možete koristiti vlastitu šemu ili skinuti sa<br />
interneta pomoću linka za download .<br />
Ova sekcija sastoji se od 4 dijela. Prvo, provjeravamo relacionu šemu da bi provjerili da<br />
su uneseni tipovi podataka onakvi kakvi trebaju da budu. Zatim, kreiramo praznu Access<br />
bazu podataka. Treće, koristićemo <strong>ERwin</strong> da generišemo tabele u bazi koje će<br />
predstavljati našu relacionu šemu. Četvrto, vidjećemo kako možemo koristiti isti E-R<br />
dijagram da generišemo tabele u Oraklu.<br />
Provjera relacione šeme<br />
Prije nego što krenete dalje, provjerite da li su tipovi podataka i imena kolona ispravno<br />
uneseni. Ovo je posebno važno kada nam je Access ciljna baza podataka, jer neki tipovi<br />
neće biti ispravno preneseni. Npr. CHAR(2) će biti transformisan u Access-ov BYTE tip<br />
umjesto u ispravan TEXT(2). Slika 3.1 prikazuje relacionu šemu iz sekcije 2.
Slika 3.1 Fizički model relacione šeme<br />
Tipovi podataka na slici su ispravni.<br />
Kreiranje prazne Access baze<br />
Slijedeći korak je kreiranje prazne Access baze u kojoj će <strong>ERwin</strong> kreirati tabele.<br />
Uradićemo to pomoću Access-a, kao na slici 3.2.
Slika 3.2 Kreiranje nove, prazne baze<br />
Figure 3.3 Creating a new database<br />
Kreirajte baze, ali nemojte kreirati nikakve tabele ni objekte u njoj.<br />
Zatim, napustite Access. Baza će ostati u datoteci Tutorial.mdb.
Generisanje nove baze<br />
Finalna faza uključuje korištenje Erwin-a da generiše novu bazu na osnovu relacione<br />
šeme.<br />
Iz Tools menija, izaberite Forward Engineer/Schema Generation. Vidjećete prozor kao<br />
na sl. 3.4<br />
Slika 3.4 Prozor za generisanje šeme (Schema Generation)<br />
U ovoj tački držaćemo se podrazumjevanih podešavanja, pa idemo direktno na korak<br />
generisanja šeme. Inače, ovaj prozor služi za navoñenje detalja o vrsti objekata koji<br />
trebaju ili ne trebaju biti uključeni u proces generisanja šeme.<br />
Kliknite na Generate...<br />
Sada ćete vidjeti prozor koji traži da unesete informacije potrebne da bi se povezali na<br />
Access-ovu bazu koju smo skoro kreirali kao na sl. 3.5.
Slika 3.5 Konekcija prema Acces-u<br />
Trebate upisati ADMIN kao User Name, i kliknuti na Browse... da pronañete bazu koju<br />
ste napravili u prethodnom koraku.<br />
Kada ste unijeli ova dva podatka, pritisnite Connect<br />
Sada će <strong>ERwin</strong> kreirati tabele i ostale objekte naše baze podataka. Ako sve bude u redu,<br />
vidjećete prozor ka na sl. 3.6, koji pokazuje rezultate generisanja:<br />
Slika 3.6 Generisanje šeme<br />
Na kraju otvorićemo Access-ovu bazu koju smo tek napravili. Kao na sl. 3.7, naša baza je<br />
popunjena tabelama koje precizno odgovaraju šemi kreiranoj u prethodnoj sekciji.
Congratulations! You may now proceed to add Forms, Queries, Macros, etc. to<br />
implement the rest of your database application (<strong>ERwin</strong> doesn't help you with that.)<br />
Slika 3.7 Access baza<br />
Kreiranje različitih DBMS<br />
A šta ako želite da kreirate Oracle bazu a ne Access bazu? To možete uraditi na osnovu<br />
istog E-R dijagrama. Takoñe imamo 2 koraka: (1) Napravićemo novi fizički model sa<br />
drugom ciljnom bazom, (2) Generisaćemo bazu u maniru sličnom kao što je ranije<br />
opisano.<br />
Vratićemo se na logički E-R dijagram koji smo razvili u sekciji 1, kao na sl. 3.8.
Slika 3.8 Logički mode baze podataka<br />
Iz Tools menija, izaberite Derive New Model
Vidjećete prozor kao na slici 3.9.<br />
Slika 3.9 Prozor Derive New Model<br />
U dijelu New Model Type, izaberite Physical, dok u dijelu pod naslovom Target<br />
Database umjesto Access 2000 treba izabrati Oracle 8x.<br />
Kliknite Next> . Prozor na slici 3.10 prikazuje objekte u logičkom modelu koji će biti<br />
uključeni u novi fizički model.
Slika 3.10 Prozor Derive Model<br />
Ako polja u dijelu Auto-Transform Logical Objects nisu označena, onda ih označite. Ovo<br />
će omogućitit da relacije tipa više-prema-više (many-to-many) budu transformisane u<br />
novu tabelu i da podtipovi (subtypes) pravilno naslijede primarne ključeve od svojih<br />
supertipova (supertype).<br />
Kliknite Next><br />
Sada ćete doći do prozora koji se brine o konverziji logičkih imena u fizička (sl. 3.11).<br />
Pošto naša fizička baza treba da ima ista imena kolona i tabela kakva su imena entiteta i<br />
atributa u logičkoj bazi, ovde nećemo ništa mijenjati.
Slika 3.11 Prozor Logical to Physical Name Conversion<br />
Kliknite Finish.<br />
Sada ćete kao na sl. 3.12 vidjeti novi fizički model sa istim imenima tabela i kolona kao i<br />
ranije, ali će tipovi podataka biti promjenjeni na Oraklove tipove podataka.
Slika 3.12 Fizički model baziran na Oraklovim tipovima podataka.<br />
Kao i ranije, izaberite Forward engineer/generate schema iz menija Tools.<br />
U ovoj tački, da bi pojednostavili stvari, reći ćemo Erwin-u da treba da generiše samo<br />
tabele, pogelede (views), i primarne ključeve. U stvari, treba otkačiti (un-check) sve<br />
Trigger-e kao na sl. 3.13. Takoñe, otkačite Create Procedure. Što je jednostavnija šema,<br />
to će jednostavnije biti napravljena u Oraklu.
Slika 3.13 Opcije za generisanje šeme u Oraklu<br />
Ako kliknete na Preview... dugme, možete vidjeti SQL koji će <strong>ERwin</strong> generisati da kreira<br />
vaše tabele u Oraklu.<br />
Ako ste spremni, kliknite Generate...<br />
<strong>ERwin</strong> će vam tražiti informacije koje su mu potrebne da se poveže na Oraklovu bazu<br />
podataka (Sl. 3.14). Ovdje treba ukucati Oraklovo korisničko ime, password i string za<br />
povezivanje. Ova informacija je različita od one koju ste koristili za povetivanje na<br />
Access-ovu bazu (jer tako i treba da bude).<br />
Slika 3.14 Povezivanje sa Oraklom
Uz malo sreće, sve tabele će biti kreirane u okviru vaše Oracle baze.<br />
Slika 3.15 Kreirane tabele u Oraklu