19.10.2015 Views

ERwin pocetnicki vodic

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!