17.03.2015 Views

strateegiline analüüs ja detailanalüüs - ttü informaatikainstituut

strateegiline analüüs ja detailanalüüs - ttü informaatikainstituut

strateegiline analüüs ja detailanalüüs - ttü informaatikainstituut

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Teema 7. Andmebaaside projekteerimine:<br />

<strong>strateegiline</strong> analüüs <strong>ja</strong> detailanalüüs<br />

Sisukord<br />

1. Eesmärgid......................................................................................................1<br />

2. Infosüsteemi arendamine..............................................................................1<br />

3. Arendusmetoodikad.....................................................................................10<br />

4. Strateegiline analüüs...................................................................................12<br />

5. Detailanalüüs...............................................................................................28<br />

6. Tootmisettevõtte näide................................................................................36<br />

7. Kontseptuaalne andmemudel......................................................................38<br />

8. Mõisted.........................................................................................................76<br />

9. Kasutatud mater<strong>ja</strong>lid....................................................................................77<br />

Joonised<br />

1. Eesmärgid......................................................................................................1<br />

2. Infosüsteemi arendamine..............................................................................1<br />

3. Arendusmetoodikad.....................................................................................10<br />

4. Strateegiline analüüs...................................................................................12<br />

5. Detailanalüüs...............................................................................................28<br />

6. Tootmisettevõtte näide................................................................................36<br />

7. Kontseptuaalne andmemudel......................................................................38<br />

8. Mõisted.........................................................................................................76<br />

9. Kasutatud mater<strong>ja</strong>lid....................................................................................77<br />

1. Eesmärgid<br />

• Anda ülevaade arendusmetoodikast, selle tähtsusest, komponentidest<br />

<strong>ja</strong> võimalikest väärkasutustest.<br />

• Anda lihtsustatud, kuid terviklik ülevaade strateegilisest analüüsist <strong>ja</strong><br />

detailanalüüsist.<br />

• Kirjeldada kuidas tükeldada infosüsteemi allsüsteemideks.<br />

• Näha ning mõista andmebaaside projekteerimist infosüsteemi<br />

tervikarendamise osana.<br />

• Anda ülevaade kontseptuaalse andmemudeli koostamisest.<br />

2. Infosüsteemi arendamine<br />

Ikka <strong>ja</strong> jälle üritavad arendustööga tegelevad vähekogenud inimesed edu<br />

saavutada tegevustikuga, mille nimi on "kodeeri <strong>ja</strong> paranda" (inglise keeles<br />

code and fix). Selle põhisisu on, et kui ülesanne käes kukutakse suure<br />

entusiasmiga kohe andmebaasi loomise lauseid ning andmebaasi kasutavat<br />

programmi kirjutama ilma, et lahendust eelnevalt läbi mõelda. Mingil hetkel<br />

(alati liiga hil<strong>ja</strong>) hakatakse tegelema ka testimisega. Kui tegemist ei ole just<br />

ühe inimese väga väikses ülesandega, on läbikukkumine kindlustatud.<br />

1


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Andmebaasi projekteerimine, nagu igasugune projekteerimine, peab<br />

toimuma süstemaatiliselt!<br />

Andmebaas on infosüsteemi oluline osa. Infosüsteemi loomise käigus luuakse<br />

alati ka andmebaas. Seega infosüsteemi projekteerimine <strong>ja</strong> valmisehitamine<br />

sisaldab ka andmebaasi projekteerimist <strong>ja</strong> valmistegemist. Ei saa vaadata<br />

lahus infosüsteemi <strong>ja</strong> andmebaasi projekteerimist. Seetõttu vaadeldakse kogu<br />

kursuse käigus neid protsesse üheskoos.<br />

Tegelikult võib antud õppeaine pealkir<strong>ja</strong> ümber<br />

sõnastada. Täpsem pealkiri oleks:<br />

"Intensiivse andmebaasikasutusega<br />

infosüsteemi projekteerimine"<br />

Infosüsteemi arendamiseks algatatakse üks või mitu projekti. Projekt on Mikli<br />

(1999) põh<strong>ja</strong>l "kindla a<strong>ja</strong>vahemiku <strong>ja</strong> finantsidega ning formuleeritud<br />

eesmärkidega ellu viidav muudatus või arendamine."<br />

Infosüsteemi arendamise käigus tuleb viia läbi järgmistele süsteemi<br />

loomissammudele vastavaid tegevusi.<br />

• Strateegiline analüüs.<br />

• Detailanalüüs.<br />

• Disain.<br />

• Realiseerimine (Ehitamine).<br />

• Rakendamine (Üleviimine).<br />

• Hooldamine.<br />

Samaaegselt (paralleelselt) viiakse läbi arendamist toetavaid tugitegevusi.<br />

• Projekti dokumentides <strong>ja</strong> programmikoodis tehtavate muudatuste<br />

haldamine.<br />

• Projektijuhtimine.<br />

• Arenda<strong>ja</strong>te töökeskkonna (tööruumid, tarkvara, riistvara, arvutivõrk)<br />

loomine <strong>ja</strong> käigushoidmine.<br />

• Süsteemi tulevaste kasuta<strong>ja</strong>te koolitamine.<br />

• Süsteemiarenduse tulemuste kvaliteedi hindamine.<br />

Süsteemiarenduse käigus luuakse süsteemi mitmevaateline kirjeldus ning<br />

muudetakse seda kirjeldust üha täpsemaks (<strong>ja</strong> tehnilisemaks). Vaated, millele<br />

vastavad süsteemi kirjeldused koostada, on Sowa <strong>ja</strong> Zachman (1992) esitatud<br />

infosüsteemide arhitektuuri raamistiku põh<strong>ja</strong>l.<br />

• Andmevaade.<br />

• Funktsioonide vaade.<br />

• Võrgu vaade.<br />

• Kasuta<strong>ja</strong>te vaade.<br />

• A<strong>ja</strong>vaade.<br />

• Eesmärkide vaade.<br />

2


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Need vaated ei ole alternatiivid. Süsteemi tuleb tervikliku pildi saamiseks<br />

kirjeldada kõikidest nendest vaadetest lähtuvalt. Süsteemi kirjeldatakse<br />

kasutades mudeleid ning mudelite koostamise protsessi nimetatakse<br />

modelleerimiseks. Mudel on reaalsuse lihtsustatud kirjeldus. Selleks, et<br />

erinevaid vaateid esitavad mudelid üheskoos tõesti annaksid tervikliku pildi<br />

süsteemist, tuleb tagada, et need mudelid on omavahel kooskõlas.<br />

Mudel võib olla visuaalne, tekstiline või kombineeritud. Enamasti koosnebki<br />

mudel visuaalsetest diagrammidest <strong>ja</strong> neid täpsustavatest tekstilistest<br />

kirjeldustest. Koostatud mudelite alusel luuakse töötav tarkvara.<br />

Süsteemi modelleerimiseks võib kasutada visuaalset modelleerimiskeelt UML<br />

(Unified Modeling Language) keelt. Samas ei ole UML kaugeltki ainuke<br />

võimalik keel, mida saab infosüsteemide (<strong>ja</strong> sealhulgas andmebaaside)<br />

projekteerimiseks kasutada. Andmebaasi projekteerimiseks (süsteemi<br />

andmevaate koostamiseks) võib kasutada objekti-rolli mudeleid<br />

(http://www.orm.net). Süsteemi mitmevaateliseks kirjeldamiseks võib näiteks<br />

kasutada objekti-protsessi modelleerimist<br />

(http://en.wikipedia.org/wiki/Object_Process_Methodology) või<br />

süsteemimaatrikseid.<br />

Analüüsi <strong>ja</strong> disaini käigus võib koostada andmebaasi <strong>ja</strong> andmebaasi<br />

kasutavate programmide prototüüpe. Prototüüp on (EVS-ISO/IEC 2382, 1998,<br />

põh<strong>ja</strong>l) "süsteemi projekteerimise, töönäita<strong>ja</strong>te <strong>ja</strong> kasutuspotentsiaali<br />

hindamiseks või nõuete paremaks mõistmiseks või määramiseks sobiv mudel<br />

või esialgne teostus."<br />

Prototüüpide tegemisel võib lähtuda erinevatest strateegiatest. Prototüüp võib<br />

olla mõeldud ideede kiireks testimiseks <strong>ja</strong> see heidetakse enne reaalse<br />

süsteemi ehitamist kõrvale (äravisatav prototüüp). Samas võib prototüübi<br />

täiendamise tulemusena samm-sammult valmida töötav tarkvarasüsteem<br />

(evolutsiooniline prototüüp).<br />

Tabel 1 Infosüsteemi <strong>ja</strong> andmebaasi loomissammude vastavustabel.<br />

Infosüsteemi<br />

loomissamm<br />

Strateegiline analüüs<br />

Detailanalüüs<br />

Disain<br />

Realiseerimine<br />

Rakendamine<br />

Hooldamine<br />

Andmebaasi loomissamm<br />

Nõuete kogumine<br />

Andmebaasi alamosade leidmine<br />

Projektide planeerimine<br />

Kontseptuaalne andmebaasi disain<br />

Nõuete kogumine<br />

Kontseptuaalne andmebaasi disain<br />

Loogiline andmebaasi disain<br />

Füüsiline andmebaasi disain<br />

Andmebaasi realiseerimine<br />

Andmebaasi rakendamine<br />

Andmebaasi hooldamine<br />

3


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Tabel 2 SQL andmebaasi loomissammude lühikirjeldus.<br />

Andmebaasi<br />

loomissamm<br />

Nõuete<br />

kogumine<br />

Kirjeldus<br />

Nii strateegilise kui detailanalüüsi käigus kogutakse<br />

kasuta<strong>ja</strong>te nõudeid infosüsteemile. Infosüsteemile<br />

esitatavaid nõudeid liigitatakse:<br />

• Funktsionaalsed nõuded, mis kirjeldavad tegevusi mille<br />

läbiviimist peab (info)süsteem võimaldama (süsteemi<br />

oodatava funktsionaalsuse). Funktsionaalsete nõuete<br />

esitamiseks võib kasutada kasutusjuhtude mudelit.<br />

Funktsionaalsetest nõuetest tulenevad nõuded<br />

andmetele, mida nende tegevuste läbiviimiseks va<strong>ja</strong><br />

läheb.<br />

• Mittefunktsionaalsed nõuded. Robertson <strong>ja</strong> Robertson<br />

(1999) märgivad, et mittefunktsionaalsed nõuded<br />

kirjeldavad süsteemilt oodatavaid omadusi. Andmebaase<br />

puudutavad mittefunktsionaalsed nõuded on näiteks:<br />

- Nõuded süsteemi töökiirusele. Süsteemi töökiirust<br />

mõjutab oluliselt andmebaasisüsteemile edastatud<br />

korralduste täitmise kiirus.<br />

- Nõuded julgeolekule. Andmed on organisatsiooni oluline<br />

vara ning nende kaitsmiseks tuleb tarvitusele võtta<br />

kõikvõimalikud abinõud.<br />

- Nõuded süsteemi (sh. andmebaasi) muudatuste<br />

sisseviimise kiirusele.<br />

- Juriidilised nõuded (nt. milliseid seaduseid peab<br />

andmebaasi pida<strong>ja</strong> eriliselt arvesse võtma). Näiteks<br />

Eestis peab arvestama isikuandmete kaitse seadusega.<br />

Mittefunktsionaalsed nõuded pannakse kir<strong>ja</strong> näiteks<br />

loendina.<br />

Andmebaasi<br />

alamosade<br />

leidmine<br />

Kasuta<strong>ja</strong>telt informatsiooni kogumise meetodid:<br />

- Uuritakse organisatsiooniga seotud dokumente. Näiteks<br />

tutvutakse tööta<strong>ja</strong>te ametijuhenditega.<br />

- Andmebaasi tulevased kasuta<strong>ja</strong>d täidavad küsimustikke.<br />

- Jälgitakse andmebaasi tulevaste kasuta<strong>ja</strong>te tööd.<br />

- Tehakse intervjuusid tulevaste kasuta<strong>ja</strong>tega.<br />

- Uuritakse varem dokumenteeritud nõudeid teistele<br />

samatüübilistele organisatsioonidele.<br />

Strateegilise analüüsi käigus leitakse põhiolemitüübid<br />

(mõnikord kasutatakse ka terminit põhiobjektid), millele<br />

vastavaid andmeid hakatakse andmebaasis hoidma. Iga<br />

selline olemitüüp vastab mingile uuritavat organisatsiooni<br />

iseloomustavale olulisele mõistele. Igale põhiolemitüübile<br />

vastab alamosa andmebaasist ehk register. Suure süsteemi<br />

(andmebaasi) <strong>ja</strong>gamine alamosadeks lihtsustab selle<br />

süsteemi kirjeldamist <strong>ja</strong> kirjeldusest ülevaate saamist ning<br />

võimaldab planeerida süsteemi alamosade arendamise<br />

järjekorda.<br />

4


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

Andmebaasi<br />

loomissamm<br />

Projektide<br />

planeerimine<br />

Kontseptuaalne<br />

andmebaasi<br />

disain<br />

Kirjeldus<br />

© Erki Eessaar<br />

Planeeritakse projektid mida on va<strong>ja</strong> andmebaasi<br />

valmistegemiseks. Tüüpiliselt projekteeritakse/ehitatakse<br />

ühe projekti käigus üks või mitu registrit aga mitte terve<br />

andmebaas.<br />

Lähtuvalt kasuta<strong>ja</strong> nõuetest koostatakse kontseptuaalne<br />

andmemudel, mis on täiesti vaba kõigist realiseerimisega<br />

seotud kaalutlustest. Sellega kirjeldatakse detailselt nõuded<br />

selle kohta, milliseid andmeid tuleks andmebaasis hoida.<br />

Kontseptuaalses andmemudelis ei pöörata tähelepanu<br />

ühelegi realiseerimisega seotud as<strong>ja</strong>olule, nagu<br />

andmemudel, andmebaasisüsteem, riistvara jne.<br />

Loogiline<br />

andmebaasi<br />

disain<br />

Kontseptuaalse andmemudeli esitamiseks võib kasutada<br />

olemi-suhte diagramme, millele lisaks tuleb luua<br />

olemitüüpide, seosetüüpide <strong>ja</strong> atribuutide dokumentatsioon.<br />

Enne kui saab asuda andmebaasi loogilise disaini<br />

läbiviimise juurde tuleb lõplikult otsustada, millisel<br />

andmemudelil põhineva andmebaasisüsteemi abil on<br />

kavas andmebaas realiseerida. Esialgne valik on tehtud<br />

juba strateegilise analüüsi käigus, kui kirjeldati üks või mitu<br />

süsteemi tehnilise arhitektuuri varianti. Loogilise disaini<br />

käigus koostatakse andmebaasi tehniline kirjeldus vastavalt<br />

valitud andmemudelile.<br />

Kui otsustatakse kasutada SQLi aluseks olevat<br />

andmemudelit, siis kirjeldatakse loogilise disaini tulemusena<br />

tabelid, nende veerud <strong>ja</strong> tabelitega seotud kitsendused.<br />

Muuhulgas määratakse tabelite veergude tüübid<br />

(standardsed, mitte konkreetse andmebaasisüsteemiga<br />

seotud). Tabelite kvaliteedi parandamiseks (andmete<br />

liiasuse vältimiseks) tuleks tabelid viia viiendale<br />

normaalkujule et nad vastaksid ortogonaalse disaini<br />

printsiibis kirjeldatud reeglile. Normaliseerimine aitab<br />

vähendada andmete liiasust üksiku tabeli piires.<br />

Ortogonaalse disaini printsiibist kinnipidamine aitab vältida<br />

andmete liiasust üle erinevat tabelite.<br />

SQL andmebaasi loogilise disaini käigus toimub:<br />

- SQL andmebaasiga sobimatute konstruktsioonide<br />

eemaldamine kontseptuaalsest andmemudelist.<br />

(Valikuline)<br />

- Tabelite leidmine.<br />

- Tabelite viimine kuni viiendale normaalkujule.<br />

- Kontroll, kas kõik tabelid rahuldavad ortogonaalse disaini<br />

printsiipi.<br />

- Kitsenduste kirjeldamine.<br />

Loogilist andmemudelit võib füüsiliselt realiseerida mitmel<br />

erineval viisil.<br />

5


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

Andmebaasi<br />

loomissamm<br />

Füüsiline<br />

andmebaasi<br />

disain<br />

Kirjeldus<br />

© Erki Eessaar<br />

Füüsiline disain optimeerib / häälestab loogilise disaini<br />

lahendusi konkreetsete “füüsiliste” keskkondade <strong>ja</strong>oks. Enne<br />

kui saab asuda andmebaasi füüsilise disaini läbiviimise<br />

juurde tuleb lõplikult otsustada, millise<br />

andmebaasisüsteemi abil on kavas andmebaas<br />

realiseerida. Vähemalt SQL andmebaasisüsteemide puhul<br />

tuleb tõdeda, et erinevates andmebaasisüsteemides on<br />

küllaltki erinevad võimalused andmebaasi realiseerimiseks.<br />

Füüsiline disain andmete osas (andmete füüsiline<br />

projekteerimine) sisaldab:<br />

- Valitakse lõplikult väl<strong>ja</strong> kasutatav andmebaasisüsteem.<br />

Esialgne valik on tehtud juba strateegilise analüüsi<br />

käigus, kui kirjeldati üks või mitu süsteemi tehnilise<br />

arhitektuuri varianti.<br />

Eeldame, et kasutatakse SQL andmebaasisüsteemi.<br />

- Loogilise andmemudeli viimine konkreetse<br />

andmebaasisüsteemi tarkvara konteksti arvestades seal<br />

kasutatavat SQLi dialekti.<br />

- Andmetüüpide täpsustamine vastavalt valitud<br />

andmebaasisüsteemi võimalustele.<br />

- Tabelite valikulise denormaliseerimise (tabelite<br />

normaliseerituse astme vähendamise) kaalumine<br />

mõningate eriti tähtsate andmebaasioperatsioonide<br />

töökiiruse tõstmise eesmärgil.<br />

- Mitmesuguste füüsilise disaini objektide (indeksid,<br />

arvu<strong>ja</strong>da generaatorid, abitabelid, trigerid, rutiinid)<br />

kavandamine.<br />

Füüsilise disaini käigus kavandatakse ka andmebaasi<br />

füüsilise taseme organiseerimine. Ka selle puhul sõltuvad<br />

võimalused väga palju kasutatavast andmebaasisüsteemist.<br />

Näiteid küsimustest, millele tuleb füüsilise disaini käigus<br />

vastus leida:<br />

- Kas tabelid tuleks <strong>ja</strong>gada füüsilisel tasemel<br />

sektsioonideks, mida saab paigutada erinevatesse<br />

failidesse <strong>ja</strong> kõvaketastele?<br />

- Kui suured peaksid olema andmeplokid, millesse<br />

füüsilisel tasemel andmeid salvestatakse?<br />

- Kui palju peaks andmeplokkides olema vaba ruumi?<br />

- Kas andmed peaksid olema andmefailides sorteeritud<br />

ning kui <strong>ja</strong>h, siis milliste andmeväärtuste järgi<br />

sorteerimist läbi viia?<br />

- Kas <strong>ja</strong> milliseid andmeid tuleks pakkida?<br />

- Kas <strong>ja</strong> milliseid tabeli veerge tuleks indekseerida ning<br />

millist tüüpi indekseid tuleks kasutada?<br />

- Kas <strong>ja</strong> milliste veergude kohta peab andmebaasisüsteem<br />

koguma informatsiooni nendes veergudes olevate<br />

väärtuste <strong>ja</strong>otuse kohta (koostama histogramme)?<br />

s <strong>ja</strong> milliseid hetktõmmiseid tuleks kasutada päringute<br />

töökiiruse parandamiseks?<br />

6


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

Andmebaasi<br />

loomissamm<br />

Andmebaasi<br />

realiseerimine<br />

Andmebaasi<br />

rakendamine<br />

Andmebaasi<br />

hooldamine<br />

Kirjeldus<br />

© Erki Eessaar<br />

Andmebaasi loomiseks va<strong>ja</strong>like käsufailide koostamine <strong>ja</strong><br />

nende käivitamine konkreetses andmebaasisüsteemis.<br />

Käsufailid sisaldavad SQL lauseid andmebaasiobjektide<br />

(näiteks baastabelid <strong>ja</strong> vaated) loomiseks. Kui<br />

projekteerimiseks kasutatakse CASE (Computer Aided<br />

System Engineering) vahendit, siis saab käsufailid<br />

automaatselt genereerida <strong>ja</strong> ka andmebaasisüsteemis<br />

käivitada. Samaaegselt toimub andmebaasi <strong>ja</strong> seda<br />

kasutavate programmide testimine. Testimine ei tõesta, et<br />

vigu ei ole – ta tõestab et vead on olemas.<br />

Rakendamise käigus toimub loodud andmebaasi telli<strong>ja</strong><br />

juures töölerakendamine. Muuhulgas võib olla va<strong>ja</strong>lik läbi<br />

viia andmesiire, mille käigus kantakse loodud andmebaasi<br />

andmed süsteemis varem kasutusel olnud andmebaasidest<br />

<strong>ja</strong> välistest allikatest.<br />

Andmebaasi töö jälgimine <strong>ja</strong> tagamine. See on andmebaasi<br />

administraatori (Database Administrator -DBA) ülesanne.<br />

- Tagatakse andmebaasi tõrgeteta töö (kasuta<strong>ja</strong>te<br />

haldamine, andmete varundamine <strong>ja</strong> taastamine jne.)<br />

- Jälgitakse andmebaasis toimuvate operatsioonide<br />

töökiirust <strong>ja</strong> va<strong>ja</strong>dusel püütakse seda parandada (nt.<br />

indeksite lisamine <strong>ja</strong> kustutamine, rutiinides kasutatavate<br />

SQL lausete ümberkirjutamine, tabelite sektsioonideks<br />

<strong>ja</strong>gamine, tabelite <strong>ja</strong> indeksite juhtparameetrite<br />

muutmine). Väga suure osa piisava töökiiruse<br />

tagamisest annab korrektne andmebaasi analüüs <strong>ja</strong><br />

disain.<br />

- Andmebaasi väiksemate muudatuste sisseviimine.<br />

Tekib küsimus, kuidas neid süsteemiarenduse tegevusi organiseerida?<br />

Kose mudel e. veelange mudel (waterfall) – Klassikalise kose mudeli<br />

alusel on süsteemi arendamine <strong>ja</strong>otatud üksteisele järgnevateks etappideks<br />

ning arenduse järgmist etappi ei alustata enne kui eelmine etapp on<br />

lõpetatud. Ühe arendustsükli läbimine tähendab kõigi järjestikuliste etappide<br />

läbimist. Ühe arendustsükli läbimine võib võtta aega 1-2 aastat. Nii<br />

andmebaas kui seda kasutav tarkvara valmivad arendustsükli lõpuks.<br />

Süsteemiarendus koosneb järgmistest järjestikulistest etappidest (loetelu on<br />

esitatud varasemast hilisema poole):<br />

1. Strateegiline analüüs.<br />

2. Detailanalüüs.<br />

3. Disain.<br />

4. Realiseerimine (Ehitamine).<br />

5. Rakendamine (Üleviimine).<br />

6. Hooldus.<br />

Nõuete kogumisest süsteemi töölerakendumiseni kulub palju aega ning<br />

vahepeal võivad nõuded süsteemile <strong>ja</strong> parimad võimalikud tehnilised<br />

lahendused olla muutunud. Näited probleemidest:<br />

7


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• Nõuded peavad olema fikseeritud, enne kui arendamine saab jätkuda,<br />

kuid reaalses maailmas on nõuded muutuvad <strong>ja</strong> palju nõudeid tekib alles<br />

süsteemi esimese versiooni kasutamisel.<br />

• Probleemid võivad ilmneda alles süsteemi testimise käigus.<br />

• Töökiirust saab testida alles siis, kui süsteem on peaaegu valmis.<br />

• Kasuta<strong>ja</strong> näeb esimest korda töötavat süsteemi alles siis, kui see on peaaegu<br />

valmis.<br />

• Kogu süsteem valmib korraga <strong>ja</strong> selle <strong>ja</strong>oks läheb vähemalt 1-2 aastat<br />

aega. Selle a<strong>ja</strong>ga on kasuta<strong>ja</strong>te nõuded suure tõenäosusega muutunud.<br />

Strateegiline<br />

analüüs<br />

Detailanalüüs<br />

Disain<br />

Ehitamine<br />

Rakendamine<br />

aeg<br />

Joonis 1 Süsteemiarendus "kose" mudeli alusel.<br />

Hooldamine<br />

Kose mudeli puudustest ülesaamiseks on seda arendatud/teisendatud.<br />

Näiteks:<br />

• Kose mudel koos kattuvate etappidega: lubatakse alustada järgmist<br />

etappi enne eelmise lõppu. Kui mingi etapi läbimise käigus ilmnevad<br />

probleemid, siis võib nende lahendamiseks teha tegevusi, mis<br />

kuuluvad eelmisesse etappi.<br />

• Järkväl<strong>ja</strong>stusega elutsükkel: Fowler (2007) toob näite, et sellise mudeli<br />

alusel läbiviidavas projektis võidakse kasutada neli kuud analüüsiks <strong>ja</strong><br />

projekteerimiseks koskstiilis, millele järgneb neli kahekuulist süsteemi<br />

iteratiivset versioonitsüklit.<br />

Evolutsiooniline prototüüpimine – Koostatakse süsteemi prototüüp.<br />

Prototüüp on tarkvarasüsteem, mis simuleerib või animeerib teise süsteemi<br />

struktuuri, funktsionaalsust, tegevusi või esitust. Seda kasuta<strong>ja</strong>le ette näidates<br />

<strong>ja</strong> tema poolt nõutud muudatusi sisse viies arendatakse väl<strong>ja</strong> töötav süsteem.<br />

(Prototüüpimise kohta lugege dokumendist kataloogis "Lisamater<strong>ja</strong>l").<br />

Spiraalne mudel – süsteemiarendus koosneb arendustsüklitest, millest<br />

igaühe käigus projekteeritakse / realiseeritakse / testitakse süsteemi või<br />

mingit selle osa üha täpsemalt.<br />

8


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Iteratiivne mudel – süsteemiarendus koosneb lühikestest arendustsüklitest,<br />

millest igaühe käigus projekteeritakse/ realiseeritakse/ testitakse süsteemi<br />

mingit omadust/ osa. Ka andmebaasi ei projekteerita / ehitata ühekorraga,<br />

vaid seda tehakse järk-järgult koos ülejäänud süsteemi kasvamisega.<br />

Iteratiivsel mudelil põhineva süsteemiarenduse metoodikate näideteks on<br />

näiteks Rationali unifitseeritud protsess (RUP) <strong>ja</strong> selle edasiarenduseks olev<br />

ettevõtte unifitseeritud protsess (EUP). Samuti järgib iteratiivset mudelit<br />

näiteks ekstreemprogrammeerimine. Esimest kahte võib isegi nimetada<br />

metoodikate perekonnaks, sest tegemist on raamistikega mis võimaldavad<br />

luua konkreetse projekti <strong>ja</strong>oks kõige sobivama metoodika.<br />

Viimastel aastatel on üha populaarsemaks muutunud agiilmetoodikad<br />

(näiteks ekstreemprogrammeerimine <strong>ja</strong> Scrum) (Leis, 2000). Taolisi<br />

metoodikaid on päris palju. Järgnevalt on nimetatud mõned nende<br />

põhiprintsiibid:<br />

• Tarkvara arendamine iteratiivselt, kasutades lühikesi iteratsioone (1–2<br />

nädalat).<br />

• Minimalism – dokumentatsiooniga ei tule üle pingutada. Loodav lahendus<br />

peab olema lihtne. "Pole va<strong>ja</strong> kelli <strong>ja</strong> vilesid".<br />

• Väga sage <strong>ja</strong> vara<strong>ja</strong>ne testimine.<br />

• Sotsiaalsete väärtuste <strong>ja</strong> meeskonnatöö olulisuse rõhutamine.<br />

• Väga oluline on tihe suhtlus tarkvara telli<strong>ja</strong>ga <strong>ja</strong> tema esinda<strong>ja</strong>te poolne<br />

tagasiside loodava tarkvara kohta. Selle saavutamiseks võiks näiteks üks<br />

telli<strong>ja</strong> esinda<strong>ja</strong> pidevalt viibida süsteemi arenda<strong>ja</strong>te juures <strong>ja</strong> anda<br />

tagasisidet valminud tarkvaralahenduste kohta.<br />

9


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

3. Arendusmetoodikad<br />

Antud kursuses räägitakse andmebaasi loomise metoodikast. Enne tuleks<br />

üritada mõista, mis asi see metoodika on.<br />

Cockburn (1997) loetleb valdkondi, mille kohta üks süsteemi arendamist<br />

juhendav metoodika peaks juhiseid andma:<br />

Tabel 3 Arendusmetoodika komponendid.<br />

Metoodika<br />

valdkond<br />

rollid<br />

oskused<br />

meeskonnad<br />

standardid<br />

töövahendid<br />

tegevused<br />

tulemused<br />

kvaliteet<br />

Valdkonna kirjeldus<br />

Metoodika peaks kirjeldama arendusprotsessis osalevad<br />

osapooled ning nende ülesanded. Rollide näiteks on<br />

projektijuht, ärianalüütik, andmete modelleeri<strong>ja</strong>,<br />

andmebaasi administraator.<br />

Metoodika peaks kirjeldama rollide täit<strong>ja</strong>telt oodatavad<br />

oskused.<br />

Metoodika peaks kirjeldama põhimõtted, kuidas<br />

süsteemiarenduse käigus kasutada grupitööd.<br />

Metoodika peaks loetlema standardid, mida tuleb<br />

süsteemiarenduse käigus jälgida.<br />

Metoodika peaks kirjeldama töövahendeid, mida<br />

süsteemiarenduse käigus võiks kasutada. Töövahendite<br />

on tarkvarapaketid aga ka näiteks mitmesugused<br />

küsimustikud, mis aitavad hinnata tehtud töö kvaliteeti.<br />

Metoodika peaks kirjeldama süsteemiarenduse<br />

<strong>ja</strong>gunemise etappideks <strong>ja</strong> nende etappide käigus tehtavad<br />

tegevused.<br />

Metoodika peaks kirjeldama dokumendid, mis<br />

süsteemiarenduse käigus luuakse.<br />

Metoodika peaks kirjeldama meetodid süsteemiarenduse<br />

tulemuste kvaliteedi hindamiseks.<br />

Metoodikaid on väga erinevaid. Mõned neist on kompaktsed soovituste<br />

kogumid teised aga mahukad (monumentaalsed) kirjeldused, mis juhendavad<br />

süsteemiarenduse iga aspekti.<br />

Andmebaaside arendusprotsessi organiseerimine konkreetsetes firmades /<br />

projektides nõuab kaasaegsete arendusmetoodikate kasutamist.<br />

Andmebaaside arendusmetoodikad on alamhulk infosüsteemi kogu elutsüklit<br />

toetavatest metoodikatest, mida saab kasutada andmebaaside ehitamisel<br />

alates va<strong>ja</strong>duste defineerimisest/analüüsist läbi projekteerimise kuni füüsilise<br />

realiseerimiseni.<br />

Paljusid käesoleval a<strong>ja</strong>l populaarseid arendusmetoodikaid iseloomustavad<br />

omadused nagu:<br />

- iteratiivne (st. süsteemi arendatakse osade kaupa);<br />

- kasuta<strong>ja</strong>t laialdaselt kaasahaarav;<br />

10


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

- sisaldama taaskasutamist (dokumendimallide kasutamine, mustrite<br />

kasutamine, tarkvarakomponentide kasutamine).<br />

Kui otsitakse organisatsiooni <strong>ja</strong>oks andmebaaside arendusmetoodikat, tasub<br />

valida kergesti omandatav <strong>ja</strong> kasutatav ning elektrooniliselt realiseeritud<br />

protsess, mida arendusmeeskonnad saavad läbi võrgu kiiresti erinevates<br />

asukohtades rakendada.<br />

Andmebaasi <strong>ja</strong> seda kasutavate rakenduste ehitamise keerukust saab<br />

vähendada kasutades projektides läbiproovitud andmebaaside arendamise<br />

meetodeid. Sellised meetodid annavad edasi heade projektimeeskondade<br />

parimaid kogemusi <strong>ja</strong> praktikaid, võimaldavad oluliselt vähendada projektiga<br />

seotud riske ning tähtaegu <strong>ja</strong> tõsta projektitulemuste kvaliteeti.<br />

3.1 Metoodika väärkasutused<br />

Metoodika vale kasutamine mõjutab väga suure tõenäosusega negatiivselt<br />

projekti tähtaegu. On üsna tavaline, et organisatsioonid kasutavad<br />

metoodikad kui protsessidiagramme või retsepte ilma ühtegi tegevust<br />

sisuliselt läbi mõtlemata. See võib lõppeda tohutu a<strong>ja</strong>raiskamisega, kui<br />

tehakse tegevusi <strong>ja</strong> toodetakse tulemusi mõistmata nende seost<br />

terviklahendusega.<br />

Metoodikaid on va<strong>ja</strong> häälestada konkreetsetele projektidele. Mitteva<strong>ja</strong>likud<br />

tegevused <strong>ja</strong> tulemused tuleb projektiplaanist kustutada.<br />

Metoodikad, mis on liiga keerukad kasutada <strong>ja</strong> õppida, ei leia kuigi palju<br />

kasutamist projektimeeskondade poolt. Mõningad metoodikad sisaldavad<br />

tuhandeid projekti pisidetaile. Tihedate projekti a<strong>ja</strong>graafikute korral heidetakse<br />

sellised metoodikad kõrvale.<br />

Oluline on uuendada metoodikaid a<strong>ja</strong>s. Uued projektikogemused <strong>ja</strong> parimad<br />

praktikad tuleb teatud a<strong>ja</strong>vahemike tagant metoodikasse lülitada.<br />

11


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

4. Strateegiline analüüs<br />

Järgnevalt räägitakse strateegilise analüüsi metoodikast, mis on väl<strong>ja</strong> töötatud<br />

TTÜ informaatikainstituudi tööta<strong>ja</strong>te poolt. Selle kohta lugege täiendavalt<br />

näiteks Rein Kuusiku artiklit a<strong>ja</strong>kir<strong>ja</strong>st A&A (Kuusik 2000).<br />

Metoodika koostamisel on lähtutud eeldustest, et organisatsioon va<strong>ja</strong>b<br />

edukaks toimimiseks infosüsteemi. Infosüsteemi arendamine ei ole ühekordne<br />

pingutus vaid pidev protsess ning organisatsioon, mis infosüsteemi kasutab,<br />

peab arendamisest aktiivselt osa võtma. See tähendab, et süsteemi tulevased<br />

kasuta<strong>ja</strong>d peaksid osalema süsteemi toimimise aluseks olevate protsesside<br />

(äriprotsesside) kirjeldamisel. Süsteemi sellisel viisil edukalt arendamiseks<br />

peab olema paigas vundament, milleks on tervikpilt loodavast süsteemist.<br />

Nimetatud tervikpilt saadakse strateegilise analüüsi tulemusena.<br />

Süsteemi arendamise algul on probleemiks, et arvutisüsteemi kasutavat<br />

infosüsteemi ei ole või vana infosüsteem ei rahulda enam kasuta<strong>ja</strong>id, kuid<br />

päris täpselt veel ei teata, mida uus süsteem peaks tegema. Strateegilise<br />

analüüsi käigus toimub piltlikult öeldes infosüsteemi projekteerimise<br />

ülesandega tutvumine <strong>ja</strong> esialgse lahendusplaani koostamine.<br />

Strateegilise analüüsi teostamisel on väga oluline oskus näha ette uuritava<br />

organisatsiooni arengut umbes 5 aasta perspektiivis. Näiteks oletame, et<br />

antud hetkel tegeleb uut infosüsteemi va<strong>ja</strong>v ettevõte ainult hulgimüügiga. Kuid<br />

lähema paari aasta jooksul plaanib ta hakata tegelema ka <strong>ja</strong>emüügiga. Kui<br />

seda teadmist mitte arvesse võtta, siis on süsteemiarenduse tulemuseks<br />

infosüsteem, mida tuleb juba mõne aasta pärast hakata oluliselt muutma <strong>ja</strong><br />

täiendama. Loodava süsteemi andmebaas tuleks üritada kavandada nii<br />

paindlik, et ta võimaldaks rahuldada ka tulevikus esilekerkivad nõuded.<br />

Suvalisel süsteemil on Isotamm (1998) põh<strong>ja</strong>l kaks põhiomadust:<br />

- Mitteamorfsus, mis tähendab, et süsteemis on võimalik eristada<br />

iseseisvaid komponente, milleks on süsteemi elemendid <strong>ja</strong><br />

elementidevahelised seosed. Süsteemil on struktuur <strong>ja</strong> ta ei ole amorfne.<br />

- Terviklikkus, mis tähendab, et suvaline süsteem on eristatav teistest<br />

süsteemidest, st. seosed süsteemi elementide vahel on tugevamad kui<br />

süsteemi <strong>ja</strong> teiste süsteemide vahel.<br />

Millised on strateegilise analüüsi põhilised tulemused?<br />

1) Suure terviksüsteemi tükeldamine (dekomponeerimine) suhteliselt<br />

terviklikeks <strong>ja</strong> iseseisvalt arendatavateks allsüsteemideks. Samuti<br />

määratakse, kuidas need allsüsteemid üksteist kasutavad. Iga sellise<br />

allsüsteemi peaks saama arendada omaette projektina. Allsüsteemide<br />

leidmine võimaldab ühtlasi kindlaks määrata süsteemi kui terviku skoobi –<br />

millistest elementidest süsteem koosneb <strong>ja</strong> millised elemendid jäävad<br />

uuritava süsteemi piiridest väl<strong>ja</strong> ning kuuluvad teistesse süsteemidesse.<br />

2) Süsteemi arhitektuuri esialgne kirjeldamine. Larman (2002) defineerib<br />

arhitektuuri kui süsteemi ülesehituse, eesmärkide <strong>ja</strong> struktuuri kirjeldust.<br />

12


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Koostatavas arhitektuurivaates kirjeldatakse allsüsteemide paigutus<br />

erinevates asukohtades <strong>ja</strong> tehniline arhitektuur – kasutatav tarkvara,<br />

riistvara, arvutivõrgud. On võimalik, et kirjeldatakse mitu erinevat<br />

arhitektuurilist lahendust millest süsteemi hilisema arendamise käigus<br />

valitakse kõige sobivam.<br />

3) Arendamise strateegia loomine, milles määratletakse allsüsteemidele<br />

vastavad arendusprojektid, nende prioriteedid, ressursiva<strong>ja</strong>dused, riskid,<br />

projektorganisatsioon. Antakse esialgne hinnang sellele, millises osas<br />

tuleb süsteem lasta tellimustööna valmis teha <strong>ja</strong> millises osas võib<br />

kasutada olemasolevaid tarkvarasüsteeme.<br />

4.1 Allsüsteemid<br />

Süsteemi <strong>ja</strong>gamine allsüsteemideks võimaldab lihtsamalt süsteemi kui tervikut<br />

hallata, sest "teades osiste koostoimimist, on üksikute osiste arendamine<br />

palju lihtsam kui sellisteks osadeks <strong>ja</strong>otamata terviku arendamine<br />

(analoogiliselt tarkvaraarenduse/programmeerimise praktikaga, kus suure<br />

ülesande <strong>ja</strong>otamine väiksemateks tagab realisatsiooni lihtsustumise <strong>ja</strong> seega<br />

ka tulemuse parema kvaliteedi, s.o ülesande üldine keerukus väheneb)."<br />

(Kuusik, 2000).<br />

Vaatame terviksüsteemi näitena ülikooli õppeinfosüsteemi. Terviksüsteemi<br />

tükeldamisel allsüsteemideks leitakse TTÜ Informaatikainstituudis<br />

väl<strong>ja</strong>töötatud käsitluse kohaselt paralleelselt kolme erinevat tüüpi allsüsteemid<br />

<strong>ja</strong> nende vahelised seosed.<br />

• Pädevusalad.<br />

• Funktsionaalsed allsüsteemid.<br />

• Registrid.<br />

Organisatsiooniline tükeldus pädevusala allsüsteemideks. Pädevusala on<br />

konkreetse organisatsiooni juhi vastutuspiirkond. Pädevusala vastab mõnele<br />

organisatsiooni struktuuriüksusele, ametikohale või infosüsteemi kasuta<strong>ja</strong><br />

rollile. Igal pädevusalal on funktsioonid (ülesanded), mida ta peab täitma <strong>ja</strong><br />

infova<strong>ja</strong>dused (nõuded andmetele), mida ta peab kasutama. Mitu isikut võivad<br />

omada sama pädevusala <strong>ja</strong> üks isik võib omada mitut pädevusala.<br />

Ülikooli infosüsteemi pädevusalade näited.<br />

- Üliõpilase pädevusala.<br />

- Õppejõu pädevusala.<br />

- Dekanaadi juhata<strong>ja</strong> pädevusala.<br />

- ...<br />

Pädevusalade kirjeldustest arenevad süsteemiarenduse käigus väl<strong>ja</strong><br />

kasuta<strong>ja</strong>te töökohtade <strong>ja</strong> kasuta<strong>ja</strong>liideste kirjeldused.<br />

Iga pädevusala kirjeldatakse koostöös selle pädevusala esinda<strong>ja</strong>tega<br />

(konkreetse isikutega kes hakkaksid seda süsteemi kasutama). Pädevusalade<br />

esinda<strong>ja</strong>id küsitletakse <strong>ja</strong> nende tööd jälgitakse. Pädevusala esinda<strong>ja</strong>d<br />

peaksid pidevalt hindama enda pädevusala kohta koostatavaid mudeleid.<br />

13


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Väikese koolituse järel võiksid pädevusala esinda<strong>ja</strong>d ka ise koostada oma<br />

pädevusala kirjeldavaid mudeleid. Pädevusalasid kirjeldavad mudelid on<br />

aluseks infosüsteemi projekteeri<strong>ja</strong>tele (süsteemi arendamisega tegeleva IT<br />

firma esinda<strong>ja</strong>d), kes koostavad nende põh<strong>ja</strong>l süsteemi funktsionaalse <strong>ja</strong><br />

andmekeskse tükelduse. Loomulikult on kõigi allsüsteemide mudelite<br />

koostamise puhul va<strong>ja</strong>lik tihe suhtlus projekteeri<strong>ja</strong>te ning süsteemi telli<strong>ja</strong>te <strong>ja</strong><br />

kasuta<strong>ja</strong>te vahel.<br />

Funktsionaalne tükeldus funktsionaalseteks allsüsteemideks.<br />

Funktsionaalne allsüsteem vastab ühele infosüsteemi põhifunktsioonile.<br />

Ülikooli infosüsteemi funktsionaalsete allsüsteemide näited.<br />

- Õppekavade arvestus.<br />

- Õpingukavade arvestus.<br />

- Õppetulemuste arvestus.<br />

- Õppeainete arvestus.<br />

- Tunniplaanide arvestus.<br />

- Üliõpilaste arvestus.<br />

- Tööta<strong>ja</strong>te arvestus.<br />

- Tööta<strong>ja</strong>te tööpanuse arvestus.<br />

- …<br />

Funktsionaalsete allsüsteemide kirjeldustest arenevad süsteemiarenduse<br />

käigus väl<strong>ja</strong> rakendustarkvara moodulid, mis aitavad pädevusalade<br />

esinda<strong>ja</strong>tel oma ülesandeid täita.<br />

Andmekeskne tükeldus andmekeskseteks allsüsteemideks ehk<br />

andmekogudeks ehk registriteks. Registriks nimetame loogilist andmebaasi,<br />

milles hoitakse ühele iseseisvat elutsüklit omavale põhiolemitüübile vastavaid<br />

andmeid ning realiseeritakse selle olemitüübiga seotud elementaarsed<br />

registreerimise <strong>ja</strong> päringu teenused.<br />

Ülikooli infosüsteemi korral on põhiolemitüübid näiteks üliõpilane, õppekava <strong>ja</strong><br />

õppeaine ning teenusteks näiteks uue õppekava sisestamine <strong>ja</strong> õppeaine<br />

otsing koodi või nimetuse järgi.<br />

Ülikooli infosüsteemi registrite näited.<br />

- Üliõpilaste register.<br />

- Õppejõudude register.<br />

- Õppekavade register.<br />

- Õppeainete register.<br />

- Õppetulemuste register.<br />

- …<br />

Moriarty (2001) loetleb kõige põhilisemaid äriga seotud mõisteid: osapooled,<br />

asukohad, sündmused, lepingud, kontod, tooted <strong>ja</strong> teenused, turud,<br />

võimalused, ressursid, kliendid, müügid. Sellistele mõistetele vastavaid<br />

andmeid on va<strong>ja</strong> hallata peaaegu igas infosüsteemis ning seega võib igale<br />

sellisele mõistele vastata omaette register.<br />

14


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Registrite kirjeldustest arenevad süsteemiarenduse käigus väl<strong>ja</strong><br />

andmebaasid, mida kasutab otseselt rakendustarkvara <strong>ja</strong> nende kaudu<br />

pädevusalade esinda<strong>ja</strong>d oma ülesannete täitmiseks.<br />

Registri tüüpi infosüsteemi põhiülesandeks on andmete registreerimine <strong>ja</strong><br />

talletamine, et neid saaks va<strong>ja</strong>dusel hiljem kasutada. Selline infosüsteem<br />

hõlmab lisaks registri andmebaasile ka sellega seotud funktsionaalsed ning<br />

pädevusala allsüsteemid.<br />

Registri tüüpi infosüsteeme va<strong>ja</strong>vad näiteks riigi andmekogud, milleks on<br />

Eesti Vabariigi andmekogude seaduse põh<strong>ja</strong>l riigi põhiregistrid, riiklikud<br />

registrid <strong>ja</strong> riigiasutuste peetavad muud andmekogud.<br />

15


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

4.2 Allsüsteemide vahelised seosed<br />

Kuidas on erinevad allsüsteemid omavahel seotud? Registrites asuvad<br />

andmed, mida kasutavad funktsionaalsed allsüsteemid <strong>ja</strong> mis peavad aitama<br />

lõppkokkuvõttes infosüsteemi kasuta<strong>ja</strong>tel (pädevusalade esinda<strong>ja</strong>tel) oma<br />

ülesandeid täita. Funktsionaalsed allsüsteemid pakuvad teenuseid<br />

pädevusaladele ning oma töö läbiviimiseks kasutavad registrites olevaid<br />

andmeid. Funktsionaalsed allsüsteemid võivad registritesse andmeid lisada,<br />

registrites olevaid andmeid muuta, registrites olevaid andmeid kustutada <strong>ja</strong><br />

lugeda registris olevaid andmeid.<br />

Igal registril on üks või mitu pädevusala, mille esinda<strong>ja</strong>d haldavad seda<br />

registrit – loevad/lisavad/muudavad/kustutavad selles registris andmeid. Igal<br />

registril on null või rohkem pädevusala, mille esinda<strong>ja</strong>d ainult loevad andmeid<br />

sellest registrist. Pädevusalad suhtlevad registritega funktsionaalsete<br />

allsüsteemide kaudu. Tüüpiliselt on registris andmete haldamine (registri<br />

teenindamine) ühe funktsionaalse allsüsteemi ülesanne kuid registris olevaid<br />

andmeid loevad mitmed allsüsteemid.<br />

Eelnevast tulenevalt on infosüsteemi funktsionaalseid allsüsteeme võimalik<br />

leida põhiolemitüüpide põh<strong>ja</strong>l. Igale põhiolemitüübile vastab register ning ka<br />

funktsionaalne allsüsteem mille kaudu toimub selle registri haldamine.<br />

Vaatleme järgnevalt näidet allsüsteemide vaheliste seoste kohta. Ülikooli<br />

infosüsteemi üheks allsüsteemiks on õpingukavade arvestus. Õpingukava on<br />

Tallinna Tehnikaülikooli õppetegevuse eeskir<strong>ja</strong> kohaselt "õppuri poolt<br />

eelseisvaks semestriks valitud õppeainete loend, mida ta kohustub õppima;<br />

õppekava läbimise individuaalne tee semestrite kaupa." Üliõpilane peab<br />

esitama üldjuhul õpingukava iga semestri alguses.<br />

Õpingukavade allsüsteemi kasutavad üliõpilase, õppejõu <strong>ja</strong> dekanaadi<br />

sekretäri pädevusalad. Üliõpilane koostab õpingukava, õppejõud otsustab kas<br />

lubada üliõpilasel õppeainet õppida ning dekanaadi sekretär vaatab<br />

õpingukavade esitamise aruannet. Õpingukavade funktsionaalne allsüsteem<br />

haldab (teenindab) õpingukavade registrit, st. selle allsüsteemi kaudu toimub<br />

andmete lugemine/ lisamine/ muutmine/ kustutamine õpingukavade registris.<br />

Lisaks sellele loeb õpingukavade funktsionaalne allsüsteem andmeid<br />

erinevatest registritest nagu õppeainete register, üliõpilaste register, tööta<strong>ja</strong>te<br />

register <strong>ja</strong> õppetulemuste register. Näiteks õppeainete registris olevaid<br />

andmeid on va<strong>ja</strong> lugeda, sest õpingukava määrab ära semestris õpitavad<br />

õppeained. Õppetulemuste registris olevaid andmeid on va<strong>ja</strong> lugeda et teha<br />

kindlaks, kas üliõpilasel on õigus õppeainet oma õpingukavasse valida (nt.<br />

kas ta on edukalt õppinud õppeaine eelduseks olevat õppeainet). Nimetatud<br />

allsüsteemid moodustavad ühe (väikese) osa ülikooli infosüsteemist kui<br />

tervikust.<br />

16


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

17


Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Dekanaadi sekretär<br />

kasutab<br />

kasutab<br />

Õppejõud<br />

kasutab<br />

Üliõpilane<br />

kasutab<br />

kasutab<br />

Dekanaadi sekretäri<br />

töökoht<br />

Õppejõu töökoht<br />

Üliõpilase töökoht<br />

Õpingukavade funktsionaalne allsüsteem<br />

loeb<br />

loeb<br />

haldab<br />

loeb<br />

loeb<br />

loeb<br />

haldab<br />

loeb<br />

Õppetulemuste<br />

register<br />

Tööta<strong>ja</strong>te<br />

register<br />

Õpingukavade Üliõpilaster register<br />

register<br />

õppimise tulemuseks saadakse<br />

Õppeainete<br />

register<br />

Õppetulemus<br />

Tööta<strong>ja</strong><br />

kinnitab<br />

Õpingukava<br />

esitab<br />

Üliõpilane<br />

Õppeaine<br />

paneb õppimisele hinde<br />

õpingukava sisaldab<br />

Joonis 2 Õpingukavade infosüsteemi <strong>ja</strong>otus allsüsteemideks.<br />

18


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

4.3 Allsüsteemide liigitus<br />

Pädevusalasid võib liigitada vastavalt sellele kas nende pädevusalade<br />

esinda<strong>ja</strong>d:<br />

• töötavad uuritavas organisatsioonis. Näiteks ülikooli infosüsteemis on<br />

üheks selliseks pädevusalaks õppejõud.<br />

• ei tööta uuritavas organisatsioonis, kuid kasutavad selle teenuseid.<br />

Näiteks ülikooli infosüsteemis on sellisteks pädevusaladeks üliõpilane, kes<br />

õpib ülikoolis või haridusministeerium, mille esinda<strong>ja</strong>d soovivad saada<br />

ülikoolilt aruandeid.<br />

Funktsionaalseid allsüsteeme <strong>ja</strong> registreid (edaspidi allsüsteeme) on võimalik<br />

liigitada sisulisteks <strong>ja</strong> administratiivseteks e. tugisüsteemideks.<br />

Sisuline allsüsteem võimaldab viia läbi tegevusi milleks infosüsteemi va<strong>ja</strong>v<br />

organisatsioon on otseselt ellu kutsutud. Näiteks ülikooli ülesandeks on<br />

õpetada üliõpilasi <strong>ja</strong> viia läbi teadustööd. Ülikooli infosüsteemi sisuliste<br />

funktsionaalsete allsüsteemide näited on õppekavade arvestus, õpingukavade<br />

arvestus, õppetulemuste arvestus, õppeainete arvestus, tunniplaanide<br />

arvestus <strong>ja</strong> üliõpilaste arvestus.<br />

Ülikooli infosüsteemi administratiivsete funktsionaalsete allsüsteemide näited<br />

on dokumentide arvestus, lepingute arvestus, ruumide arvestus <strong>ja</strong> tööta<strong>ja</strong>te<br />

arvestus.<br />

Administratiivsete allsüsteemide puhul on suurem võimalus, et leiduvad<br />

mustrid või universaalsed mudelid, mida selliste allsüsteemide kirjeldamiseks<br />

võib kasutada. Samuti on administratiivse allsüsteemi puhul suurem võimalus,<br />

et leidub rakenduspakette, mis pakuvad selliselt allsüsteemilt oodatavat<br />

funktsionaalsust. Soovitame tutvuda Koov (2001) poolt koostatud raamatuga,<br />

kus kirjeldatakse universaalseid programme (raamatupidamine, kliendihaldus,<br />

dokumendihaldus jne.), mingi tegevusvaldkonna (kauplus, hulgiladu, liising<br />

jne.) <strong>ja</strong>oks koostatud eriprogramme ning riigi <strong>ja</strong> kohaliku omavalitsuse töö<br />

hõlbustamiseks koostatud programme.<br />

Sellisel juhul tuleb otsustada, kas allsüsteemi valmistegemiseks tuleb<br />

kohandada olemasolevat rakenduspaketti või ehitada süsteem puhtalt<br />

uuritava organisatsiooni nõuetest lähtudes. Isotamm (1998) leiab, et<br />

rakenduspakettide kasutamise eelisteks on näiteks süsteemi kiire valmimine<br />

<strong>ja</strong> rakenduspaketi dokumentatsiooni olemasolu. Kui rakenduspakett vastab<br />

piisavalt hästi loodava infosüsteemi nõuetele <strong>ja</strong> ei va<strong>ja</strong> ulatuslikku<br />

kohandamist, siis on selle kasutamise hind ette teada <strong>ja</strong> võib kujuneda<br />

väiksemaks kui süsteemi nullist ehitamisel.<br />

Isotamm (1998) märgib, et rakenduspakettide kasutamise probleemideks on:<br />

• paketi liigne üldisus, mis tingib va<strong>ja</strong>duse seda konkreetse<br />

organisatsiooni nõuetega kohandada;<br />

• paketi müü<strong>ja</strong>l pole aega ost<strong>ja</strong> probleemidega põh<strong>ja</strong>likult tegeleda, sest<br />

tal on palju kliente;<br />

19


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• paketi ost<strong>ja</strong> soovidele vastav kohandamine nõuab üldjuhul müü<strong>ja</strong><br />

kaasabi ning selle eest tuleb eraldi maksta.<br />

Seega olemasoleva rakenduspaketi kasutamine ei pruugi alati olla kõige<br />

otstarbekam, sest selle konkreetse organisatsiooni nõuetega kohandamine<br />

võib osutuda liiga keeruliseks, aeganõudvaks <strong>ja</strong> kulukaks.<br />

4.4 Nõuandeid süsteemi allsüsteemideks <strong>ja</strong>gamiseks<br />

Allsüsteemideks <strong>ja</strong>otamise ülesandele ei ole ühte ainuõiget lahendust vaid on<br />

paremad <strong>ja</strong> halvemad lahendused. Kuid kui allsüsteemideks <strong>ja</strong>gamine pole<br />

kõige paremini õnnestunud, siis võib loodud süsteemi toimimise käigus<br />

selguda, et süsteemi ei saa liigse keerukuse või ressursside va<strong>ja</strong>duse tõttu<br />

lisada uusi osi või viia sisse muudatusi – see tähendab, et süsteemi ei saa<br />

edasi arendada (Kuusik, 2000).<br />

Võimalikult hea allsüsteemideks <strong>ja</strong>otuse saamiseks tuleb seega järgida<br />

parimaid praktikad. Allsüsteemide leidmise <strong>ja</strong> kirjeldamise tulemuste<br />

hindamiseks on edukalt rakendatavad tarkvara disaini printsiibid (Larman,<br />

2002).<br />

Allsüsteemid ei tohiks olla liiga väikesed ega liiga suured. Näiteks registris<br />

hoitakse ühele põhiolemitüübile <strong>ja</strong> sellega seotud olemitüüpidele vastavaid<br />

andmeid. Probleem tekib muidugi sellega, mida lugeda põhiolemitüübiks. Kas<br />

kaupade register sisaldab kaubakategooriaid või tuleks eristada kaupade<br />

registrit <strong>ja</strong> kaubakategooriate registrit? Peenendamisega ei maksa liiale minna<br />

<strong>ja</strong> antud juhul piisaks ainult kaupade registrist. Kaubakategooria iseloomustab<br />

kaupa. Kui <strong>ja</strong>gaksime andmebaasi alamosadeks nii, et iga olemitüübi kohta<br />

leidub omaette register, siis kaotaks registriteks <strong>ja</strong>gamine oma mõtte.<br />

Allsüsteemid peaksid kõik olema suhteliselt ühesuguse suurusega. Näiteks<br />

kui ühe registri kirjeldamiseks tuleb kontseptuaalses andmemudelis esitada<br />

30 olemitüüpi <strong>ja</strong> teise kirjeldamiseks tuleb esitada 3 olemitüüpi, siis ei ole<br />

ilmselt tegu sarnaste suurustega.<br />

Allsüsteemi elementidel peab olema kõrge sisemine sidusus (inglise keeles<br />

high cohesion). See tähendab, et funktsionaalse allsüsteemi korral peavad<br />

pakutavad teenused olema tihedalt üksteisega seotud, "käima ühe as<strong>ja</strong><br />

kohta". Näiteks iga funktsionaalne allsüsteem võiks võimaldada hallata<br />

(lugeda, lisada, muuta <strong>ja</strong> kustutada) ühe registri andmeid.<br />

Allsüsteemi sõltuvus teistest allsüsteemidest peaks olema võimalikult väike<br />

(inglise keeles low coupling). Selle eelised on järgnevad.<br />

• Muutused teistes allsüsteemides mõjutavad allsüsteemi võimalikult vähe.<br />

• Spetsifikatsiooni on lihtsam taaskasutada.<br />

• Spetsifikatsioonist on lihtsam aru saada.<br />

20


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

4.5 Strateegilise analüüsi tulemust kirjeldava<br />

dokumentatsiooni struktuur<br />

Järgnevalt esitatakse lihtsustatud nimekiri strateegilise analüüsi<br />

tulemusel loodavatest dokumentidest.<br />

Strateegilise analüüsi projekti spetsifikatsioon (taust, eesmärgid,<br />

oodatavad tulemused)<br />

4.5.1 Süsteemi üldvaade<br />

• Organisatsiooni eesmärgid.<br />

• Infosüsteemi eesmärgid.<br />

• Lausendid.<br />

• Põhiobjektid.<br />

• Põhiprotsessid.<br />

• Põhilised sündmused.<br />

• Tegutse<strong>ja</strong>d.<br />

• Tükeldus allsüsteemideks:<br />

- Pädevusala allsüsteemide nimekiri. Selle saab leida tegutse<strong>ja</strong>te<br />

nimekir<strong>ja</strong> alusel.<br />

- Funktsionaalsed allsüsteemide nimekiri. Selle saab leida<br />

põhiprotsesside <strong>ja</strong> põhiobjektide nimekir<strong>ja</strong> alusel.<br />

- Registri allsüsteemide nimekiri. Selle saab leida põhiobjektide nimekir<strong>ja</strong><br />

alusel.<br />

4.5.2 Pädevusalade kirjeldused<br />

Iga pädevusala kohta koostatakse:<br />

• Eesmärgid.<br />

• Objektid, protsessid <strong>ja</strong> sündmused.<br />

• Nimekiri funktsionaalsetest allsüsteemidest, mida ta kasutab.<br />

• Nimekiri registritest, mida ta loeb <strong>ja</strong> haldab.<br />

• Kasutusjuhtude mudel. Kirjeldatakse konkreetselt selle ühe pädevusalaga<br />

seotud kasutusjuhud. Kasutusjuhtumeid võib lasta kirjeldada pädevusala<br />

enda esinda<strong>ja</strong>tel ning mudel on abiks funktsionaalsete allsüsteemide<br />

kasutusjuhtude leidmisel.<br />

• Domeenimudel. Pädevusala esinda<strong>ja</strong> töövaldkonda kirjeldavad olulised<br />

mõisted <strong>ja</strong> nende mõistete vahelised seosed.<br />

4.5.3 Funktsionaalsete allsüsteemide kirjeldused<br />

Iga funktsionaalse allsüsteemi kohta leitakse näiteks:<br />

• Eesmärgid.<br />

• Objektid, protsessid <strong>ja</strong> sündmused.<br />

21


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• Nimekiri pädevusaladest, kes seda kasutavad.<br />

• Registrid, mida see funktsionaalne allsüsteem loeb <strong>ja</strong> haldab.<br />

• Funktsionaalse allsüsteemi põhiprotsesside kirjeldused<br />

tegevusdiagrammidena.<br />

• Andmebaasi kasutuse eskiismudel (kasutusjuhtude mudel: diagrammid +<br />

tekstilised kirjeldused). Kasutusjuhtude diagrammil näidatakse "kriipsumehikestena"<br />

süsteemi võimalikke kasuta<strong>ja</strong>id ehk tegutse<strong>ja</strong>id (mitte<br />

konkreetsed isikud, vaid pädevusalad), ning ovaalidena süsteemi<br />

kasutamise protsesse. Viimaseid saab tuletada süsteemi kasutust<br />

tingivatest sündmustest. Strateegilise analüüsi tulemusena pannakse<br />

enamike kasutusjuhtude tekstilised kirjeldused kir<strong>ja</strong> lühiformaadis (nimi,<br />

tegutse<strong>ja</strong>d, lühikirjeldus) ning kõige olulisemate kasutusjuhtude korral<br />

esitatakse tekstiline kirjeldus laiendatud formaadis. Laiendatud formaadis<br />

kasutusjuhu kirjeldus sisaldab järgmisi osi.<br />

- Kasutusjuhu nimi.<br />

- Tegutse<strong>ja</strong>d.<br />

- Kasutusjuhu täitmise tulemusel saavutatav eesmärk. Siin võib väl<strong>ja</strong><br />

tuua eesmärgid erinevate tegutse<strong>ja</strong>te <strong>ja</strong>oks.<br />

- Lühikirjeldus, mis võtab paari lausega kasutusjuhu kokku.<br />

- Kasutusjuhu käivitav sündmus.<br />

- Eeltingimused, mis peavad olema täidetud, et kasutusjuhu võiks<br />

käivitada.<br />

- Järeltingimused, mis peavad olema täidetud, et kasutusjuhu võiks<br />

kuulutada edukalt lõppenuks.<br />

- Tüüpiline sündmuste käik e. põhistsenaarium.<br />

- Alternatiivsed (mitte-tüüpilised) süsteemi kasutamise stsenaariumid<br />

ehk laiendused. Iga alternatiivse stsenaariumi juures peaks olema viide<br />

põhistsenaariumi sammule kust võib see alternatiivne stsenaarium<br />

alata. Stsenaariumid pannakse kir<strong>ja</strong> kasuta<strong>ja</strong> <strong>ja</strong> süsteemi vahelise<br />

dialoogina.<br />

• Domeenimudel, kus kirjeldatakse funktsionaalse allsüsteemi skoopi<br />

kuuluvad mõisted <strong>ja</strong> nendevahelised seosed. Kuna tegemist ei ole mitte<br />

andmemudeli vaid domeenimudeliga, siis on lubatud ka selliste<br />

mõistete/seoste esitamine, millele vastavaid andmeid ei ole va<strong>ja</strong><br />

andmebaasis hoida. Domeenimudel on aluseks kontseptuaalse<br />

andmemudeli koostamisele <strong>ja</strong> samuti objekt-orienteeritud tarkvara disaini<br />

<strong>ja</strong>oks kandidaatklasside valimisele.<br />

4.5.4 Registrite kirjeldused<br />

Kuidas kirjeldada strateegilise analüüsi dokumendis registreid? Iga registri<br />

kohta tuleks esitada:<br />

• Taust, kus selgitatakse vabas vormis, milliseid andmeid hoitakse<br />

registris ning milleks seda registrit va<strong>ja</strong> läheb. Taoline mitteformaalne<br />

kõrgtaseme kirjeldus võimaldab huvilisel (näiteks infosüsteemi va<strong>ja</strong>va<br />

organisatsiooni juhtkonna liikmel, kellel teadagi on alati liiga vähe aega)<br />

saada kiiresti registri olemusest ülevaade.<br />

• Eesmärgid, mida register aitab saavutada. Eesmärkide sõnastamisel<br />

tuleks pidada silmas, et eesmärgid peaksid olema mõõdetavad, st. peale<br />

22


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

registri realiseerimist peaks olema võimalik üheselt kindlaks teha kas<br />

eesmärk on täidetud või mitte (tõmmake näiteks paralleele poliitikute<br />

antavate lubadustega). Näide üldsõnalisest eesmärgist, mille täidetust on<br />

raske mõõta: Lihtsustada õpingukava registreerimist. Näide konkreetsest<br />

eesmärgist, mille täidetust on võimalik mõõta: Võimaldada registreerida<br />

kõiki sündmuseid (sündmuse toimumise aeg, sündmuse põhjustanud<br />

subjekt, seisund, millesse õpingukava läks sündmuse tulemusena), mis<br />

põhjustavad õpingukava seisundi muutumist.<br />

• Pädevusalad mille esinda<strong>ja</strong>d pöörduvad (funktsionaalsete<br />

allsüsteemide kaudu) registri poole. Tuleb määrata kindlaks pädevusalad,<br />

mille esinda<strong>ja</strong>d haldavad seda registrit, st.<br />

loevad/lisavad/muudavad/kustutavad selles registris olevaid andmeid.<br />

Samuti tuleb määrata kindlaks pädevusalad, mille esinda<strong>ja</strong>d ainult loevad<br />

selles registris olevaid andmeid.<br />

• Funktsionaalsed allsüsteemid mis pöörduvad registri poole. Tuleb<br />

määrata kindlaks, milliste funktsionaalsete allsüsteemide kaudu toimub<br />

selle registri andmete haldamine (lugemine/ lisamine/ muutmine/<br />

kustutamine). Samuti tuleb määrata kindlaks, millised funktsionaalsed<br />

allsüsteemid ainult loevad selles registris olevaid andmeid. Registrite<br />

seosed pädevusalade <strong>ja</strong> funktsionaalsete allsüsteemidega võib esitada<br />

kasutades risttabeleid<br />

• Infova<strong>ja</strong>dused, mida registri poolt esitatav andmebaasi alamosa aitab<br />

rahuldada. Infova<strong>ja</strong>dused on päringud millele andmebaasi põh<strong>ja</strong>l<br />

soovitakse vastust.<br />

• Seosed teiste registritega. Tuleb kirjeldada milliste teiste sama<br />

süsteemi registritega on vaadeldaval registril ühiseid olemitüüpe. Samuti<br />

tuleb teha kindlaks milliste teiste süsteemide registritega on sellel registril<br />

ühiseid olemitüüpe või toimub andmevahetus. Näiteks Joonis 3 põh<strong>ja</strong>l on<br />

ülikooli infosüsteemis õpingukavade register <strong>ja</strong> tööta<strong>ja</strong>te register seotud<br />

õpingukava sündmuse kaudu. Iga õpingukava kohta tuleb registreerida<br />

sellega toimunud sündmused (loomine, esitamine, kinnitamine jne),<br />

sealhulgas ka andmed sündmuse põhjusta<strong>ja</strong> kohta. Registrite<br />

projekteerimise käigus tuleb otsustada kas õpingukava sündmuse<br />

andmed kuuluvad tööta<strong>ja</strong>te registrisse, õpingukavade registrisse või<br />

moodustavad hoopis omaette registri.<br />

Tööta<strong>ja</strong><br />

kes<br />

põhjustas<br />

Õpingukava<br />

sündmus<br />

Õpingukava<br />

Tööta<strong>ja</strong>te<br />

register<br />

Õpingukavade<br />

register<br />

Joonis 3 Registrite omavahelise seose näide.<br />

23


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• Kontseptuaalse andmemudeli eskiis, millel esitatakse kõige olulisemad<br />

olemitüübid <strong>ja</strong> seosetüübid. Eskiismudelis joonistatakse olemitüüpidele<br />

vastavad "kastid" ning nende olulistele seostele vastavad "kriipsud".<br />

Muude detailide (nagu olemitüüpide atribuudid, seosetüüpide omadused)<br />

valikuline ka<strong>ja</strong>stamine eskiismudelis on sageli kasulik, kuid omab<br />

paratamatult juhuslikku iseloomu ning pole seepärast kohustuslik.<br />

Strateegilise analüüsi käigus ei jää aega et allsüsteeme detailselt<br />

modelleerida ning see ei ole ka strateegilise analüüsi eesmärk.<br />

Kontseptuaalse andmemudeli koostamine viiakse lõpule detailanalüüsi<br />

käigus.<br />

Allsüsteemide leidmine võimaldab süsteemi paremini <strong>ja</strong> ülevaatlikumalt<br />

kirjeldada. Evitts (2000) märgib, et ülevaatlikul diagrammil võiks olla 7+/-2<br />

omavahel loogiliselt seotud elementi. Näiteks registrite leidmine annab<br />

võimaluse koostada ülevaatlikud olemi-suhte diagrammid. Selle asemel,<br />

et koostada andmebaasi kui terviku kohta üks suur diagramm kus on<br />

kümneid või sadu elemente, saame iga registri kohta koostada üks või<br />

mitu eraldi diagrammi, mis rahuldavad Evitts (2000) esitatud nõudeid.<br />

4.5.5 Muud dokumendid<br />

Allsüsteemide vahelised seoste paremaks esitamiseks võib kasutada<br />

risttabeleid (vt. Tabel 4 – Tabel 6) või UMLi paketidiagramme.<br />

Tabel 4 Pädevusalade <strong>ja</strong> funktsionaalsete allsüsteemide vastavustabeli näide.<br />

Õppeainete<br />

arvestus<br />

Õpingukava<br />

de arvestus<br />

Üliõpilaste<br />

arvestus<br />

Üliõpilase pädevusala Õppejõu Dekanaadi sekretäri<br />

pädevusala pädevusala<br />

X X X<br />

X X X<br />

X X X<br />

X Tabel 4 lahtris näitab, et pädevusala kasutab selle funktsionaalse<br />

allsüsteemi teenuseid.<br />

Tabel 5 Pädevusalade <strong>ja</strong> registrite vastavustabeli näide.<br />

Õppeainete<br />

register<br />

Õpingukava<br />

de register<br />

Üliõpilaste<br />

register<br />

Üliõpilase pädevusala Õppejõu Dekanaadi sekretäri<br />

pädevusala pädevusala<br />

R R R<br />

CRUD RU R<br />

R R RU<br />

Mida tähendavad tähed Tabel 5 lahtrites?<br />

• C (Create, loo) – pädevusala esinda<strong>ja</strong>d lisavad registrisse andmeid.<br />

• R (Read, loe) – pädevusala esinda<strong>ja</strong>d loevad registrist andmeid.<br />

• U (Update, muuda) – pädevusala esinda<strong>ja</strong>d muudavad registris<br />

andmeid.<br />

24


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• D (Delete, kustuta) – pädevusala esinda<strong>ja</strong>d kustutatavad registrist<br />

andmeid.<br />

Tabel 6 Funktsionaalsete allsüsteemide <strong>ja</strong> registrite vastavustabeli näide.<br />

Õppeainete<br />

register<br />

Õpingukava<br />

de register<br />

Üliõpilaste<br />

register<br />

Õppeainete arvestus Õpingukavade Üliõpilaste<br />

arvestus arvestus<br />

CRUD R R<br />

CRUD<br />

RU<br />

R<br />

CRUD<br />

Mida tähendavad tähed Tabel 6 lahtrites?<br />

• C (Create, loo) – funktsionaalne allsüsteemi kaudu lisatakse registrisse<br />

andmeid.<br />

• R (Read, loe) – funktsionaalne allsüsteemi kaudu loetakse registrist<br />

andmeid.<br />

• U (Update, muuda) – funktsionaalne allsüsteemi kaudu muudetakse<br />

registris andmeid.<br />

• D (Delete, kustuta) – funktsionaalne allsüsteemi kaudu kustutatakse<br />

registrist andmeid.<br />

Tabel 5 <strong>ja</strong> Tabel 6 on CRUD maatriksi erijuhud (vt <strong>ja</strong>otis 5.4). Allsüsteemide<br />

vaheliste seoste esitamiseks võib kasutada ka paketidiagramme ehk<br />

paketiskeeme, kus näidatakse pakette <strong>ja</strong> nende sõltuvusi (vt. Joonis 4).<br />

Joonis 4 Allsüsteemide vaheliste seoste kujutamine klassidiagrammil.<br />

UMLis on võimalik pakettide abil grupeerida suvalisi UMLi elemente kokku<br />

üldisemateks üksusteks (Fowler, 2007). Paketti tähistab diagrammil sakiga<br />

kaust. Paketi nimeks on allsüsteemi nimi. Stereotüüp viitab,<br />

25


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

et pakett tähistab allsüsteemi. Paketid võivad kuuluda teistesse pakettidesse,<br />

moodustades hierarhilise struktuuri. Näiteks Joonis 4 näitab paketil esitatud<br />

fraas "from Pädevusalad", et see pakett kuulub paketti Pädevusalad.<br />

Lisaks tuleb strateegilise analüüsi käigus koostada arhitektuuri <strong>ja</strong><br />

arendusvaade. Nende alamdokumentide struktuuri antud kursuses ei esitata.<br />

Arhitektuurivaade. Kirjeldatakse allsüsteemide paigutus erinevates<br />

asukohtades <strong>ja</strong> tehniline arhitektuur – tarkvara, riistvara, arvutivõrgud.<br />

Arendusvaade. Kirjeldatakse süsteemi loomiseks käivitatavad projektid,<br />

nende a<strong>ja</strong>line järjekord <strong>ja</strong> prioriteedid. Kirjeldatakse kasutatav<br />

projektorganisatsioon. Kirjeldatakse võimalikud arendamisega seotud riskid.<br />

Antakse esialgne hinnang arendamise maksumusele.<br />

4.6 Projekti planeerimine<br />

Projekt on Mikli (1999) põh<strong>ja</strong>l "kindla a<strong>ja</strong>vahemiku <strong>ja</strong> finantsidega ning<br />

formuleeritud eesmärkidega ellu viidav muudatus või arendamine." Projekti<br />

omadused:<br />

• toimub mingi a<strong>ja</strong>perioodi jooksul;<br />

• hõlmab palju töid, mida tehakse erinevate projekti osaliste poolt;<br />

• tööd selles on organiseeritud, mitte ei toimu kaootiliselt;<br />

• on mõeldud eesmärgi saavutamiseks;<br />

• kasutab meeskonnatööd.<br />

Strateegilise analüüsi üheks ülesandeks on süsteemi arendamise strateegia<br />

loomine, milles määratletakse süsteemi arendamiseks algatatavad projektid,<br />

nende prioriteedid, ressursiva<strong>ja</strong>dused, riskid <strong>ja</strong> projektorganisatsioon.<br />

Mikli (1999) põh<strong>ja</strong>l on suurte projektide süsteemiarenduses kasutamisel<br />

üldjuhul viga selles, et arvutisüsteemi ei õnnestu kohe rakendada. See võib<br />

olla tingitud infosüsteemi va<strong>ja</strong>va organisatsiooni vähesest valmisolekust või<br />

tulevaste kasuta<strong>ja</strong>te oskamatusest. Mitme projektiga arendamisel on aga<br />

probleemiks, kuidas <strong>ja</strong>otada süsteemi arendamine osadeks – projektideks?<br />

Projektide leidmine ongi strateegilise analüüsi üheks eesmärgiks.<br />

Kui süsteemiarendus toimub kose mudeli alusel, siis strateegilisele analüüsile<br />

(vt. Joonis 1) järgneb kõikide allsüsteemide detailanalüüs, disain, ehitamine,<br />

rakendamine <strong>ja</strong> hooldamine. Kuid kuidas kasutada süsteemi arendamiseks<br />

üheskoos strateegilist analüüsi <strong>ja</strong> iteratiivsel mudelil põhinevat<br />

süsteemiarendust? Strateegilise analüüsi arendusvaates planeeritakse<br />

projektid infosüsteemi valmis tegemiseks. Üks projekt hõlmab ühe või mitme<br />

allsüsteemi analüüsi/disaini/ehitamist/rakendamist. Iga projekt võib omakorda<br />

koosneda lühikestest (2–6) nädalat iteratsioonidest, mille käigus<br />

projekteeritakse, ehitatakse <strong>ja</strong> rakendatakse mingi allsüsteemi osa. Lisaks<br />

võib olla va<strong>ja</strong> käivitada koolituse või andmete kvaliteedi parandamise projekte,<br />

et uuele süsteemile saaks üle minna.<br />

26


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

süsteemi<br />

funktsionaalsus<br />

Allsüsteemide<br />

arendusprojekt<br />

Allsüsteemide<br />

arendusprojekt<br />

Strateegiline<br />

analüüs<br />

aeg<br />

Joonis 5 Süsteemiarendus mitme projektiga.<br />

Strateegilise analüüsi käigus tuleks määrata kindlaks ka projektide<br />

prioriteedid. Hoberman (2001) kirjeldab prioriteetide kolmnurka, mille abil<br />

saab määrata arendusprojekti üldisi eesmärke.<br />

Projekti tulemus on<br />

kõrge kvaliteediga<br />

Projektile kulub<br />

vähe aega<br />

Joonis 6 Projekti prioriteetide kolmnurk.<br />

Projekti kulud<br />

on väikesed<br />

Ideaalne oleks saavutada kõik kolm prioriteetide kolmnurgas esitatud<br />

eesmärki. Kuid see on võimatu ning maksimaalselt on võimalik saavutada<br />

kaks eemärki kolmest.<br />

• Kõrge kvaliteediga tulemus saavutataks minimaalse a<strong>ja</strong>ga. Sobilik<br />

projektide <strong>ja</strong>oks, mille tulemus on ülioluline – näiteks teisi projekte ei saa<br />

alustada enne, kui see on lõppenud. Sellise projekti läbiviimiseks on<br />

va<strong>ja</strong>likud kõrgetasemelised täit<strong>ja</strong>d ning suurepärane töökeskkond, ning<br />

see suurendab projekti läbiviimiseks va<strong>ja</strong>likke kulusid.<br />

• Kõrge kvaliteediga tulemus saavutatakse minimaalse hinnaga. Sobilik<br />

projektide <strong>ja</strong>oks, kus on võimalik võtta arendamist rahulikult <strong>ja</strong> veenduda<br />

igal sammul, et ei kulutata liigseid ressursse.<br />

• Minimaalse hinnaga tulemus saavutatakse minimaalse a<strong>ja</strong>ga. Sobib<br />

prototüübi koostamise projektide <strong>ja</strong>oks, kus tuleb kiiresti teha valmis<br />

27


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

esialgne lahendus, millele kasuta<strong>ja</strong>d saavad hakata andma oma<br />

hinnanguid. Seda kasutatakse näiteks kasuta<strong>ja</strong>te käest<br />

tarkvarasüsteemile esitatavate nõuete kogumiseks.<br />

5. Detailanalüüs<br />

Detailanalüüsi eesmärkideks on:<br />

• strateegilise analüüsi tulemustena saadud allsüsteemide täpsem analüüs<br />

<strong>ja</strong> modelleerimine;<br />

• disaini ettevalmistamine;<br />

Detailanalüüsi käigus toimub valitud allsüsteemi(de) detailne<br />

toimimistasemeline (see tähendab sisuline, tehnilisest lahendustest<br />

sõltumatu) modelleerimine. Koostöös telli<strong>ja</strong> ning tulevaste kasuta<strong>ja</strong>tega<br />

täpsustatakse strateegilise analüüsi käigus koostatud eskiismudeleid kõigi<br />

toimimistasemel va<strong>ja</strong>like detailide kättesaamiseni.<br />

Kui ollakse aru saanud äriva<strong>ja</strong>dustest, on kasulik otsida turult mudeleid, valida<br />

sobiv ning kohandada oma organisatsioonile. See tähendab mustrite <strong>ja</strong><br />

universaalsete mudelite kasutamist <strong>ja</strong> sellest tuleb juttu teemas nr. 8.<br />

5.1 Pädevusalade allsüsteemide kirjeldused<br />

Kirjelduse alguses on tausta, eesmärkide ning allsüsteemi seoste täpsustatud<br />

kirjeldus.<br />

5.1.1 Objektivaade<br />

Pädevusala infova<strong>ja</strong>dusi kirjeldav domeenimudel, kus on näidatud kontseptid,<br />

atribuudid, seosed.<br />

5.1.2 Protsessivaade<br />

Pädevusala tööprotsesside kirjeldus, mis on esitatud kasutusjuhtude<br />

diagrammidena. Nendel on väl<strong>ja</strong> toodud kõik kasutusjuhud, milles antud<br />

pädevusala liige osaleb.<br />

5.1.3 Sündmusvaade<br />

Pädevusala kasutusjuhtude tekstilised kirjeldused laiendatud formaadis (vt.<br />

funktsionaalse allsüsteemi kasutusjuhtude kirjeldusi).<br />

28


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

5.2 Funktsionaalsete allsüsteemide kirjeldused<br />

© Erki Eessaar<br />

Kirjelduse alguses on tausta, eesmärkide ning allsüsteemi seoste täpsustatud<br />

kirjeldus.<br />

5.2.1 Objektivaade<br />

Allsüsteemi kirjeldav domeenimudel.<br />

5.2.2 Protsessivaade<br />

Allsüsteemi põhiprotsessid kasutusjuhtude diagrammidena.<br />

5.2.3 Sündmusvaade<br />

Tuleb täpsustada strateegilise analüüsi käigus leitud kasutusjuhtude kirjeldusi<br />

ning va<strong>ja</strong>dusel lisada juurde uusi kasutusjuhte. Kõik kasutusjuhud tuleks<br />

kirjutada lahti laiendatud formaadis. Kasutusjuhtude tekstikirjelduste<br />

muutmisel ei tohi unustada teha vastavaid muudatusi kasutusjuhtude<br />

diagrammides.<br />

Laiendatud formaadis kasutusjuhu kirjelduses sisalduvad stsenaariumid<br />

kirjeldavad seansisiseseid sündmuseid. Detailanalüüsi tulemusena<br />

selgitatakse väl<strong>ja</strong> taolistele sündmustele reageerimiseks va<strong>ja</strong>likud<br />

andmebaasioperatsioonid. Andmebaasioperatsioonid kirjeldatakse registrite<br />

vaates lepingute abil. Stsenaariumitesse tuleb lisada viited<br />

andmebaasioperatsioonide lepingutele.<br />

5.3 Registrite kirjeldused<br />

Kirjelduse alguses on tausta, eesmärkide ning allsüsteemi seoste täpsustatud<br />

kirjeldus.<br />

5.3.1 Objektivaade<br />

Objektivaates esitatakse täpsustatud kontseptuaalne andmemudel.<br />

Kontseptuaalse andmemudeli võimalikud koostisosad:<br />

• Olemi-suhte diagrammid (Siin tuleb näidata ka kõigi seoste nimed).<br />

• Olemitüüpide definitsioonide tabel (olemitüübi nimi (ka aliased kui neid<br />

on), register kuhu olemitüüp kuulub, DEFINITSIOON).<br />

• Atribuutide definitsioonide tabel (olemitüübi nimi, atribuudi nimi (ka aliased<br />

kui neid on), kirjeldus, näidisväärtused). Võib dokumenteerida ka:<br />

üldine andmetüüp <strong>ja</strong> pikkus<br />

- liht- või liitatribuut?<br />

29


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

- ühe- või mitmeväärtuseline atribuut?<br />

- tuletatud atribuut? Kui <strong>ja</strong>h, siis ka tuletusreeglid.<br />

- vaikimisi väärtus.<br />

• Seosetüüpide definitsioonid:<br />

- seosetüübis osalevad olemitüübid,<br />

- seosetüübi võimsus,<br />

- seosetüübis osalevate olemitüüpide osaluskohustus.<br />

5.3.2 Protsessivaade<br />

Detailanalüüsi tulemusena tuleb kirjeldada kasutusjuhtude mudeli koostamise<br />

käigus leitud andmebaasioperatsioone. Andmebaasioperatsioonide<br />

kirjeldamiseks võib kasutada lepingu formaati. Lepingud tuleks kirjutada kõige<br />

olulisemate <strong>ja</strong> keerulisemate operatsioonide kohta.<br />

Miks öeldakse, et operatsioon kirjeldatakse lepingu formaadis? Leping<br />

sätestab lepingu sõlminud osapoolte õigused <strong>ja</strong> kohustused.<br />

Operatsiooni kirjelduses vaadeldakse süsteemi kui musta kasti ning ei<br />

selgitata kuidas operatsiooni läbi viia (selle otsustamine on disaini ülesanne).<br />

Operatsiooni eeltingimused deklareerivad süsteemipoolseid kohustusi. See<br />

tähendab, et süsteem peab operatsiooni õnnestumiseks tagama, et<br />

eeltingimused on täidetud.<br />

Operatsiooni järeltingimused deklareerivad operatsioonipoolseid kohustusi.<br />

See tähendab, et kui süsteem täidab talle pandud kohustused, siis<br />

vastutasuks võib ta oodata, et operatsioon täidab omakorda talle pandud<br />

kohustused <strong>ja</strong> viib andmebaasis läbi järeltingimustes näidatud muudatused.<br />

Iga lepingu spetsifikatsioon sisaldab järgnevaid osi:<br />

• Operatsiooni nimetus parameetritega.<br />

• Eeltingimused. Kirjeldavad, millised andmed olemite <strong>ja</strong> seoste kohta<br />

peavad olema lisatud, muudetud või kustutatud, et operatsiooni saaks<br />

alustada.<br />

• Järeltingimused. Kirjeldavad, millised andmed olemite <strong>ja</strong> seoste kohta<br />

peavad olema lisatud, muudetud või kustutatud, et operatsiooni võiks<br />

edukalt lõpetada. Larman (2002) toob näite teatri põh<strong>ja</strong>l. Kujutlege, et<br />

viibite teatris <strong>ja</strong> jälgite laval toimuvat. Enne operatsiooni algust heidate<br />

pilgu lavale <strong>ja</strong> jätate meelde kuidas rekvisiidid <strong>ja</strong> näitle<strong>ja</strong>d on lavale<br />

paigutatud. Operatsiooni a<strong>ja</strong>l langeb lava ette eesriie, mis operatsiooni<br />

lõppedes uuesti üles tõstetakse. Nüüd on teie ülesanne kir<strong>ja</strong> panna, mis<br />

on rekvisiitide <strong>ja</strong> näitle<strong>ja</strong>te osas laval operatsiooni käigus muutunud<br />

(kes/mis on juurde tulnud, ümberpaigutatud või lavalt kadunud).<br />

• Kasutus kasutusjuhtude poolt. Viited kasutusjuhtudele, mis antud<br />

operatsiooni kasutavad <strong>ja</strong> funktsionaalsetele allsüsteemidele, mida<br />

nimetatud kasutusjuhud kirjeldavad.<br />

Järgnevalt esitame näitena andmebaasioperatsiooni lepingu nimega<br />

Õpingukava loomine. Lepingu spetsifikatsioonis on kursiivis esitatud<br />

30


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

kontseptuaalses andmemudelis kirjeldatud olemitüüpide nimed. Lepingu nime<br />

järel on sulgudes näidatud lepingu parameetrid. Näiteks operatsiooni poole<br />

pöördumisel peab parameetri üliõpilaneID väärtuseks olema üliõpilase<br />

unikaalne identifikaator.<br />

Õpingukava loomine (üliõpilaneID, semesterID, tüüpõpingukavaID)<br />

Eeltingimused:<br />

o Üliõpilane, Semester, Tüüpõpingukava <strong>ja</strong> Õpingukava_seisundi_liik on<br />

registreeritud.<br />

Järeltingimused:<br />

o On loodud Õpingukava.<br />

o Õpingukava on seotud Tüüpõpingukavaga, mille alusel õpingukava<br />

koostatakse.<br />

o Õpingukava on seotud Üliõpilasega, kes seda õpingukava koostab.<br />

o Õpingukava on seotud Semestriga, millal see õpingukava kehtib.<br />

o Õpingukava on seotud Õpingukava_seisundi_liigiga, mille puhul<br />

Õpingukava_seisundi_liik.nimetus="koostamisel".<br />

Millised on mõned olulised punktid, millele lepingu kirjutamisel tähelepanu<br />

pöörata?<br />

• Andmebaasioperatsioonide identifikaatorid peavad olema lisatud<br />

kasutusjuhu laiendatud formaadis tekstilisse kirjeldusse. Lisaks<br />

operatsiooni sisu selgitavale nimele (nt Õpingukava koostamine) võib<br />

operatsiooni identifitseerimiseks võtta kasutusele mõne lühema<br />

identifikaatori (nt OP1), mida on mugavam kasutusjuhtude tekstikirjelduses<br />

kasutada.<br />

• Lepingu järeltingimuses peab olema näidatud ka seoste<br />

tekkimine/kadumine<br />

• Eel- <strong>ja</strong> järeltingimustes peab kasutama sama terminoloogiat kui<br />

kontseptuaalses andmemudelis.<br />

• Lepingu järeltingimustes ei tule kirjeldada muutusi väl<strong>ja</strong>spool andmebaasi –<br />

nt. muudatus kasuta<strong>ja</strong>liideses.<br />

• Andmebaasioperatsioonide lepingute järeltingimustes tuleb kirjeldada ainult<br />

seda, mis andmebaasis operatsiooni tulemusel muutus. Seda mis jäi<br />

samaks ei ole va<strong>ja</strong> kir<strong>ja</strong> panna!<br />

• Iga seisundidiagrammil esitatud seisundi ülemineku kohta peab leiduma<br />

andmebaasioperatsioon, mille tulemusena tehakse andmebaasis<br />

muudatus, et seda seisundimuudatust registreerida.<br />

Andmebaasioperatsioonide kogumist võib mõelda kui liidesest, mille kaudu<br />

funktsionaalne allsüsteem kasutab registri allsüsteemi poolt pakutavaid<br />

teenuseid.<br />

Andmebaasioperatsioonid kapseldavad andmebaasi. Kapseldamine on<br />

objekt-orienteeritud disainist tuntud mõiste <strong>ja</strong> tähendab, et elemendi sisemist<br />

struktuuri peidetakse <strong>ja</strong> elementi saab kasutada ainult avaliku liidese kaudu.<br />

Kuidas liidese pakutavad teenused on realiseeritud pole teenuse kasuta<strong>ja</strong> asi.<br />

Teisisõnu aitab kapseldamine peita ebaolulist informatsiooni teiste elementide<br />

eest. Kapseldamine võimaldab teenuse pakkumise mehhanismi muuta, jättes<br />

samal a<strong>ja</strong>l avaliku liidese muutmata. Antud juhul on kapseldatavaks<br />

31


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

elemendiks andmebaas. Andmebaasioperatsioonide lepingud defineerivad<br />

andmebaasi kasutamiseks mõeldud liidese.<br />

Näiteks SQL andmebaasis võib operatsioonid realiseerida<br />

andmebaasiserveris talletatud rutiinidena või vaadetena, mida kasutavad kõik<br />

andmebaasi poole pöörduvad programmid. Rutiinid <strong>ja</strong> vaated on andmebaasi<br />

programmeeri<strong>ja</strong> kontrolli all <strong>ja</strong> neid saab va<strong>ja</strong>dusel muuta nii (näiteks<br />

optimeerida SQL lauseid), et kasuta<strong>ja</strong> ei pea kuidagi muutma rutiini/vaate<br />

poole pöördumist.<br />

5.3.3 Sündmusvaade<br />

Koostatakse registri põhiolemitüübi seisundidiagramm e. olekumasinaskeem,<br />

mis kirjeldab kõikvõimalikud seisundid, milles sellesse olemitüüpi kuuluvad<br />

olemid võivad viibida ning lubatud siirdeid e. üleminekuid ühest seisundist<br />

teise. Iga siire on põhjustatud mingi sündmuse poolt. Seisundidiagrammi<br />

kohta lugege täpsemalt M. Fowlery raamatu (Fowler, 2007) peatükist nr. 10.<br />

Seisundidiagramm peab vastama järgmistele reeglitele.<br />

• Täpselt üks algne pseudoseisund<br />

• Üks või mitu lõppseisundit.<br />

• Seisunditel on nimed. Mõnikord jäetakse küll algsele pseudoseisundile nimi<br />

andmata.<br />

• Igale seisundi üleminekule on kirjutatud sündmus, mis seda põhjustab.<br />

• Algsest pseudoseisundist saab seisundi üleminekute kaudu mistahes teise<br />

seisundisse.<br />

• Nõue andmebaasile: andmebaasis tehtud päringuga saab kindlaks teha<br />

olemi seisundi käesoleval a<strong>ja</strong>hetkel.<br />

Järgnevalt esitatav olemi-suhte diagrammi fragment demonstreerib sellist<br />

andmebaasi struktuuri mis võimaldab registreerida andmeid nii objekti<br />

hetkeseisundi, kui ka selle seisundi muudatuste kohta.<br />

32


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Joonis 7 Olemi-suhte diagramm seisundi a<strong>ja</strong>loo registreerimise kohta.<br />

5.4 CRUD maatriks<br />

Erinevat tüüpi mudelid esitavad erinevaid vaateid süsteemile. Mudelid peavad<br />

olema omavahel kooskõlas, et anda süsteemist korrektne ülevaade ning<br />

võimaldada luua korrektne süsteemi realisatsioon.<br />

Andmevaadet <strong>ja</strong> protsessivaadet esitavate mudelite omavahelise kooskõla<br />

kontrollimiseks võib kasutada CRUD maatriksit. Maatriksi nimi on akronüüm,<br />

mis tuleneb sõnadest "Create", "Read", "Update", "Delete". (Loo, Loe,<br />

Muuda, Kustuta). Akronüüm on mitme sõna algustähtedest moodustatud<br />

lühinimetus. Eeldame, et andmevaate esitamiseks kasutatav kontseptuaalne<br />

andmemudel sisaldab olemi-suhte diagramme <strong>ja</strong> protsessivaate<br />

kirjeldamiseks kasutatakse kasutusjuhtude mudelit. Sellisel juhul peab iga<br />

atribuudi/seosetüübi kohta leiduma kasutusjuht, kus:<br />

• ... on kirjeldatud toiming, mille käigus atribuut väärtustatakse/seos<br />

tekitatakse (Create).<br />

• ... on kirjeldatud toiming, mille käigus atribuudi väärtust/seost loetakse<br />

(Read).<br />

Näiteks, kui andmeid ainult luuakse, kuid ühegi kasutusjuhu käigus ei loeta,<br />

siis tekib küsimus, miks on va<strong>ja</strong> koguda andmeid mida keegi ei kasuta. Kui<br />

leidub kasutusjuht, mille käigus andmeid loetakse, kuid ühegi kasutusjuhu<br />

käigus neid andmeid ei looda, siis on selge, et süsteemi kirjeldus ei ole täielik.<br />

Lisaks võib leiduda kasutusjuht, kus:<br />

• ... on kirjeldatud toiming, mille käigus atribuudi väärtust/seost<br />

muudetakse (Update).<br />

33


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• ... on kirjeldatud toiming, mille käigus atribuudi väärtus/seos<br />

kustutatakse (Delete).<br />

Kustutada tuleb andmed, mille kustutamist nõuab seadus, määrus või<br />

organisatsioonisisene praktika. Andmete kustutamist võib olla va<strong>ja</strong><br />

sisestusvigade parandamiseks. Andmete kustutamist tuleb alati põh<strong>ja</strong>likult<br />

kaaluda, sest kustutatud andmeid võib tulevikus näiteks analüüsimise<br />

otstarbel va<strong>ja</strong> minna. Infosüsteemi võib luua nii, et enne operatiivandmete<br />

andmebaasist kustutamist laaditakse andmed andmeaita või andmevakka, et<br />

neid oleks võimalik hiljem analüüside läbiviimiseks kasutada.<br />

On võimalik, et isegi kui kasuta<strong>ja</strong>liideses jäetakse kasuta<strong>ja</strong>le mulje, et ta andis<br />

kustutamise korralduse, siis tegelikult muudetakse kustutatava andmeobjekti<br />

seisundit <strong>ja</strong> see säilib andmebaasis. Kasuta<strong>ja</strong> neid andmeid enam ei näe.<br />

CRUD maatriksi võib luua erineva täpsusega.<br />

• Andmevaate võib maatriksis esitada näiteks registri, olemitüübi või<br />

atribuudi/seosetüübi täpsusega. Järgnevalt tuuakse näide olemitüübi<br />

täpsusega maatriksist.<br />

• Protsessivaate võib esitada näiteks funktsionaalse allsüsteemi,<br />

kasutusjuhu või toimingu täpsusega. Järgnevalt tuuakse näide<br />

kasutusjuhu täpsusega maatriksist.<br />

Näide:<br />

Kasutusjuhud (protsessivaade)<br />

Luge<strong>ja</strong>ks<br />

saamine<br />

Trükise<br />

laenutamine<br />

Trükise<br />

tagastamine<br />

Luge<strong>ja</strong>ks oleku<br />

lõpetamine<br />

Trükis R, U R, U<br />

Luge<strong>ja</strong> C R R R, U<br />

Laenutamine C R, U R<br />

Olemitüübid<br />

(andmevaade)<br />

Joonis 8 CRUD maatriksi näide.<br />

• Luge<strong>ja</strong>ks saamise käigus registreeritakse andmebaasis uus luge<strong>ja</strong><br />

(CREATE).<br />

• Trükise laenutamise käigus loetakse (READ) trükise <strong>ja</strong> luge<strong>ja</strong> andmed.<br />

Seejärel registreeritakse andmebaasis uus laenutamine (CREATE).<br />

Lõpuks muudetakse trükise seisundit (UPDATE), näitamaks selle<br />

väl<strong>ja</strong>laenutamist.<br />

• Trükise tagastamise käigus loetakse (READ) kontrolli eesmärgil trükise,<br />

luge<strong>ja</strong> <strong>ja</strong> laenutamise andmed. Registreeritakse laenutamise tegelik<br />

34


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

lõppemise aeg (UPDATE). Lõpuks muudetakse trükise seisundit<br />

(UPDATE) näitamaks, et trükist saab uuesti laenutada.<br />

• Luge<strong>ja</strong>ks oleku lõpetamise korral loetakse (READ) laenutamise andmeid,<br />

et teha kindlaks, ega ei ole veel lõppemata laenutusi. Seejärel loetakse<br />

luge<strong>ja</strong> andmed ning muudetakse luge<strong>ja</strong> seisundid (seisund:="arhiveeritud")<br />

(UPDATE).<br />

35


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

6. Tootmisettevõtte näide<br />

Tabel 7 Tootmisettevõtte IS üldvaate fragment.<br />

Põhiobjektid<br />

• Tellimus<br />

• Toote kavand<br />

• Plaan toote loomiseks<br />

• Töövahendi kavand<br />

• Töövahend<br />

• Mater<strong>ja</strong>l<br />

• Toode<br />

• Saadetis<br />

• Klient<br />

• Tööta<strong>ja</strong><br />

Põhilised sündmused<br />

• Klient esitab palve toote ostuks<br />

• Tellimus kiidetakse heaks<br />

• Tellimus lükatakse tagasi<br />

• Tegemist on uudse tootega<br />

• Laoseisu kontroll näitab, et laos on<br />

piisavalt toodet, et tellimust rahuldada<br />

• Laoseisu kontroll näitab, et laos pole<br />

piisavalt toodet, et tellimust rahuldada<br />

• Projekteeri<strong>ja</strong> lõpetab toote disaini<br />

• Toot<strong>ja</strong> palub luua va<strong>ja</strong>likud töövahendid<br />

• Toot<strong>ja</strong> palub mater<strong>ja</strong>le<br />

• Insener lõpetab töövahendi disaini<br />

• Toot<strong>ja</strong> saab töövahendi valmis <strong>ja</strong> hanki<strong>ja</strong><br />

saab mater<strong>ja</strong>li hangitud<br />

• Toot<strong>ja</strong> lõpetab tootmise<br />

• Inspekteeri<strong>ja</strong> avastab loodud tootes vigu<br />

• Klient saab ostetud toote kätte<br />

• Tööta<strong>ja</strong> alustab tööd<br />

Põhiprotsessid<br />

• Müük<br />

• Toote disain<br />

• Planeerimine<br />

• Töövahendite disain<br />

• Mater<strong>ja</strong>lide hankimine<br />

• Töövahendite tegemine<br />

• Tootmine<br />

• Kohaletoimetamine<br />

• Tööta<strong>ja</strong>te haldamine<br />

Tegutse<strong>ja</strong>d<br />

• Klient<br />

• Müü<strong>ja</strong><br />

• Projekteeri<strong>ja</strong><br />

• Toot<strong>ja</strong><br />

• Insener<br />

• Hanki<strong>ja</strong><br />

• Inspekteeri<strong>ja</strong><br />

• Käsk<strong>ja</strong>lg<br />

• Personalijuht<br />

36


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Tabel 8 Tootmisettevõtte IS võimalik tükeldus allsüsteemideks.<br />

Pädevusala allsüsteemid<br />

• Kliendi pädevusala<br />

• Müü<strong>ja</strong> pädevusala<br />

• Projekteeri<strong>ja</strong> pädevusala<br />

• Toot<strong>ja</strong> pädevusala<br />

• Inseneri pädevusala<br />

• Hanki<strong>ja</strong> pädevusala<br />

• Inspekteeri<strong>ja</strong> pädevusala<br />

• Käsk<strong>ja</strong>la pädevusala<br />

• Personalijuhi pädevusala<br />

Registrid<br />

• Tellimuste register<br />

• Kavandite register<br />

• Valmistoodete register<br />

• Mater<strong>ja</strong>lide <strong>ja</strong> vahendite register<br />

• Tööta<strong>ja</strong>te register<br />

• Saadetiste register<br />

• Klientide register<br />

• ...<br />

Funktsionaalsed allsüsteemid<br />

• Müügi arvestus<br />

- Toote tellimuse registreerimine<br />

- Kliendi registreerimine<br />

- ...<br />

• Tootearenduse arvestus<br />

- Kavandi koostamine<br />

- Kavandi täiendamine<br />

- ...<br />

• Tootmise arvestus<br />

- Tootmise registreerimine<br />

- Valminud kauba registreerimine<br />

- Kadude registreerimine<br />

- Kvaliteedikontroll<br />

- ...<br />

• Mater<strong>ja</strong>lide arvestus<br />

- Tarni<strong>ja</strong> registreerimine<br />

- Tellimuse koostamine<br />

- Mater<strong>ja</strong>lide vastuvõtt<br />

- Mater<strong>ja</strong>li inspekteerimine<br />

- ...<br />

• Tööta<strong>ja</strong>te arvestus<br />

- Tööta<strong>ja</strong> registreerimine<br />

- Tööta<strong>ja</strong> lahkumise registreerimine<br />

- ...<br />

• Saadetiste arvestus<br />

- Saadetise registreerimine<br />

- Kohaletoimetamise<br />

registreerimine<br />

• ...<br />

37


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7. Kontseptuaalne andmemudel<br />

Infosüsteemi projekteerimise käigus läbiviidava strateegilise <strong>ja</strong> detailanalüüsi<br />

olulises tulemuseks on kontseptuaalne andmemudel.<br />

Kontseptuaalne andmemudel on mittetehniline mudel, mis kirjeldab süsteemi<br />

baasandmeid. Ta kirjeldab nõudeid andmebaasile, aga mitte andmebaasi<br />

tehnilist realisatsiooni. Seega kontseptuaalses andmemudelis ei pöörata<br />

tähelepanu ühelegi andmebaasi realiseerimisega seotud as<strong>ja</strong>olule, nagu:<br />

• andmemudel (näiteks relatsiooniline mudel),<br />

• kasutatav andmebaasisüsteem,<br />

• kasutatav riistvara platvorm,<br />

• kasutatava arvutivõrgu ülesehitus,<br />

• töökiiruse küsimused.<br />

Kontseptuaalne andmemudel on aluseks andmebaasi tehniliste kavandite<br />

loomisele, mis arvestavad andmemudeliga (näiteks relatsiooniline mudel) ning<br />

andmebaasi loomiseks kasutatava tarkvara- <strong>ja</strong> riistvara platvormiga<br />

(sealhulgas kasutatava andmebaasisüsteemiga). Kontseptuaalse<br />

andmemudeli esialgsed visandid e. eskiisid luuakse strateegilise analüüsi<br />

käigus ning mudeli koostamine viiakse lõpule detailanalüüsi käigus.<br />

Date (2003) nimetab kontseptuaalse andmemudeli koostamist andmebaasi<br />

semantiliseks modelleerimiseks. Semantiline mudel üritab kirjeldada süsteemi<br />

tähendust. Kontseptuaalne andmemudel kirjeldabki süsteemis säilitama<br />

hakatavate andmete tähendust, struktuuri ning andmetega seotud kitsendusi.<br />

Öeldakse ka, et kontseptuaalne andmemudel valmib andmebaasi<br />

kontseptuaalse disaini tulemusena.<br />

Kontseptuaalse andmemudeli oluliseks koostisosaks on visuaalne mudel<br />

(diagramm), mis kirjeldab andmebaasi kontseptuaalset struktuuri. Kaks<br />

levinud diagrammi tüüpi (<strong>ja</strong> tegelikult ka vastavat modelleerimise viisi) taolise<br />

informatsiooni esitamiseks on:<br />

• Olemi-suhte diagramm (inglise keeles entity-relationship diagramm,<br />

ERD)<br />

• Objekti-rolli mudel (inglise keeles object-role model, ORM)<br />

(http://www.orm.net)<br />

Kontseptuaalse andmemudeli võimalikku struktuuri kirjeldab järgmine valem:<br />

Kontseptuaalne andmemudel = andmebaasi kontseptuaalset struktuuri<br />

esitavad diagrammid + diagrammide elementide tekstilised spetsifikatsioonid<br />

(semantika kirjeldus) + andmetega seotud kitsenduste spetsifikatsioonid.<br />

Väga levinud meetodiks on kasutada kontseptuaalse andmebaasi disaini<br />

tulemuste esitamiseks olemi-suhte diagramme. Tänapäeval luuakse olemisuhte<br />

diagrammid sageli kasutades UMLi klassidiagramme. UML oli algselt<br />

mõeldud objekt-orienteeritud analüüsi <strong>ja</strong> disaini läbiviimiseks, kuid selle<br />

38


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

laiendusmehhanismid võimaldavad teda kasutada universaalse keelena<br />

paljude modelleerimisülesannete lahendamiseks.<br />

7.1 Olemi-suhte diagramm<br />

Väga levinud meetodiks on kasutada kontseptuaalse andmebaasi<br />

kirjeldamiseks olemi-suhte diagramme. Olemi-suhte diagrammid pakuti Peter<br />

Cheni poolt väl<strong>ja</strong> 1970-ndate keskel (Chen, 1976). Chen soovis luua<br />

esitusviisi, millega saaks modelleerida nii hierarhilisi-, võrk-, kui ka<br />

relatsioonilisi andmebaase. 1986 pakuti väl<strong>ja</strong> laiendatud olemi-suhte<br />

diagramm (Theory et al., 1986). Muuhulgas võimaldas see laiendus kirjeldada<br />

üldistusseoseid.<br />

A<strong>ja</strong> jooksul on väl<strong>ja</strong> pakutud palju erinevaid märgisüsteeme e. notatsioone,<br />

mida saab kasutada olemi-suhte diagrammide joonistamiseks. Üks tuntud<br />

märgisüsteem on näiteks Richard Barkeri poolt väl<strong>ja</strong>pakutud Barkeri<br />

märgisüsteem (Barker, 1990). Selle võttis kasutusele Oracle Corporation<br />

integreerides selle arendusmetoodikaga Oracle*CASE ning CASE (Comupter<br />

Aided System Engineering) vahendiga Oracle Designer. Taolist<br />

märgisüsteemi kasutatakse ka näiteks L. Silverstoni koostatud universaalseid<br />

andmemudeleid esitavates raamatutes (Silverston, 2001a; Silverston, 2001b).<br />

Olemi-suhte diagramm on staatikadiagramm, mis kirjeldab süsteemi struktuuri<br />

aspekti.<br />

<br />

Haridusaste_liik<br />

nimetus : String<br />

<br />

Õppeaine_seisundi_liik<br />

nimetus : String<br />

+kõrgeim<br />

1<br />

saavutatud<br />

aste<br />

iseloomustab<br />

0..*<br />

<br />

Õppejõud<br />

eesnimi : String<br />

perenimi : String<br />

sünniaeg : Date<br />

1<br />

0..*<br />

<br />

Õpetamine<br />

alguse_aeg : Date<br />

lõpu_aeg : Date<br />

0..*<br />

+hetkel kehtiv<br />

seisund<br />

1<br />

0..*<br />

1<br />

iseloomustab<br />

<br />

Õppeaine<br />

ainekood : String<br />

nimetus : String<br />

pikk_kirjeldus : String<br />

ainepunkte : Double<br />

Joonis 9 Olemi-suhte diagrammi näide.<br />

Tänapäeval luuakse olemi-suhte diagrammid sageli kasutades UMLi<br />

klassidiagramme. UML oli algselt mõeldud objekt-orienteeritud analüüsi <strong>ja</strong><br />

disaini läbiviimiseks, kuid selle laiendusmehhanismid võimaldavad teda<br />

kasutada universaalse keelena paljude modelleerimisülesannete<br />

lahendamiseks.<br />

39


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Käesolevas raamatus käsitleme me kontseptuaalse andmemudeli koostamist<br />

kasutades selleks UMLis loodud olemi-suhte diagramme.<br />

7.1.1 Olemi-suhte diagrammi komponendid<br />

Olemi-suhte diagrammil esitatakse olemitüübid, olemitüüpide vahelised<br />

seosetüübid ning olemitüüpide atribuudid.<br />

Igale kontseptuaalses andmemudelis esitatud olemitüübile vastab reaalses<br />

maailmas (objektsüsteemis) eksisteeriv konkreetne või abstraktne objekt (asi,<br />

olem), mille kohta tuleb andmebaasis andmeid säilitada.<br />

Valiku aitavad teha modelleeri<strong>ja</strong> enda kogemused ning teiste arenda<strong>ja</strong>te<br />

kogemused mis võivad olla esitatud mustrite või taaskasutatavate mudelite<br />

abil.<br />

7.1.1.1 Olemitüüp<br />

Olem: Suvaline konkreetne või abstraktne asi, mis eksisteerib, eksisteeris või<br />

võiks eksisteerida, kaasa arvatud nende as<strong>ja</strong>de ühendused. Üksikuid olemeid<br />

olemi-suhte diagrammil ei esitata. Olemi-suhte diagrammil esitatakse olemite<br />

üldistused – olemitüübid. Näiteks on olemid konkreetsed õppeained nagu<br />

"Andmebaaside projekteerimine" ainekoodiga IDU3381 <strong>ja</strong> "Andmebaaside<br />

programmeerimine" ainekoodiga IDU0120.<br />

Olemitüüp: Ühiste nimeliste omadustega olemite hulk. Võib öelda, et<br />

tegemist on reaalses maailmas eksisteerivate olemite üldistusega.<br />

Kontseptuaalses andmemudelis tuleb esitada sellised <strong>ja</strong> ainult sellised<br />

olemitüübid, millele vastavate olemite kohta soovitakse hakata hoidma<br />

andmebaasis andmeid. Segadust tekitab, et mõned allikad kasutavad termini<br />

"Olemitüüp" asemel terminit "Olem" <strong>ja</strong> termini "Olem" asemel terminit<br />

"Olemieksemplar".<br />

Olemi-suhte diagrammil esitatakse olemitüüp klassisümboli abil. Klassile võib<br />

määrata stereotüübi tõstmaks esile, et tegemist ei ole mitte<br />

tavalise tarkvaraklassiga, vaid see esitab kontseptuaalses andmemudelis<br />

olemitüüpi. Mis on stereotüüp? Stereotüüp on UMLi laiendusmehhanism, mis<br />

võimaldab luua uut tüüpi mudelielemente, tuletades neid olemasolevatest<br />

elementidest (nt. klass, atribuut, assotsiatsioon, pakett). Neil uutel elementidel<br />

on oma spetsiifilised omadused (sildid), semantika <strong>ja</strong> visuaalne tähistus.<br />

Joonis 9 oleval olemi-suhte diagrammil esitatakse olemitüübid Õppejõud,<br />

Õpetamine, Õppeaine, Haridusaste_liik <strong>ja</strong> Õppeaine_seisundi_liik.<br />

Nagu öeldud, võimaldab stereotüüp kasutada alternatiivset visuaalset<br />

tähistust. Joonis 10 esitatakse olemitüübid (Õppeaine_seisundi_liik <strong>ja</strong><br />

Õppeaine), kasutades stereotüübi poolt määratud alternatiivset<br />

visuaalset tähistust. Segaduse vältimiseks on oluline, et ühes mudelis ei<br />

kasutataks läbisegi erinevaid visuaalseid tähistusi.<br />

40


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Joonis 10 Olemi-suhte diagrammi näide.<br />

7.1.1.2 Seosetüüp<br />

Seos, suhe, side: Seos on tunnetatud ühendus olemite vahel. Üksikuid<br />

seoseid olemi-suhte diagrammil ei esitata. Olemi-suhte diagrammil esitatakse<br />

seoste üldistused – seosetüübid.<br />

Näiteks: Õppejõud "Andres Mets" õpetab õppeainet "Tuumafüüsika" alates<br />

kuupäevast 1. september 2008 kuni kuupäevani 1. veebruar 2009.<br />

Seosetüüp e. suhtetüüp: Kontseptuaalses andmemudelis esitatav<br />

seosetüüp on selliste seoste üldistus, mille kohta tuleb andmebaasis andmeid<br />

säilitada. Olemi-suhte diagrammil esitatakse seosetüübid joontena.<br />

Seosetüübid võivad olla erinevat liiki (assotsiatsioon, osa-terviku seos,<br />

üldistusseos) ning nendest liikidest tuleb juttu edaspidi. Iga seosetüübi kohta<br />

tuleb kindlaks teha ning dokumenteerida ka selle omadused.<br />

Mis on ühe modelleeri<strong>ja</strong> <strong>ja</strong>oks seosetüüp, see on teise <strong>ja</strong>oks olemitüüp <strong>ja</strong><br />

vastupidi. Näiteks süsteemi kirjeldava lause "Õppejõud õpetab õppeainet"<br />

põh<strong>ja</strong>l võib leida olemitüübid Õppejõud <strong>ja</strong> Õppeaine. Kuid Õpetamine on<br />

võimalik modelleerida nii seosetüübina Õppejõud <strong>ja</strong> Õppeaine vahel kui ka<br />

olemitüübina. Kui seosetüübil on nimelisi omadusi, millele vastavaid andmeid<br />

tuleb andmebaasis hoida, siis tuleb see seosetüüp modelleerida olemitüübina.<br />

Antud juhul tuleks õpetamise kohta registreerida ka õpetamise alguse aeg <strong>ja</strong><br />

lõpu aeg ning seetõttu on Joonis 9 esitatud ka olemitüüp Õpetamine.<br />

Roll: Roll kirjeldab olemitüübi tähendust seosetüübi kontekstis, milles ta<br />

osaleb. Rollid aitavad selgitada seosetüüpide tähendust. Olemi-suhte<br />

diagrammil esitatakse rollid seosetüüpide otstesse kirjutatud tekstina<br />

"+rollinimi". Eriti oluline on rollid määrata, kui kahe olemitüübi vahel on<br />

rohkem kui üks seosetüüp.<br />

Joonis 11 esitatud diagrammil on Tööta<strong>ja</strong> <strong>ja</strong> Erakorraline kursus vahel kolm<br />

seosetüüpi. Iga erakorralise kursuse idee on pakutud väl<strong>ja</strong> null või ühe tööta<strong>ja</strong><br />

poolt, kes on rollis "õppejõud". Iga erakorraline kursuse idee on kinnitatud null<br />

või ühe tööta<strong>ja</strong> poolt, kes on rollis "õppeosakonna tööta<strong>ja</strong>". Iga erakorraline<br />

kursus on kinnitatud null või ühe tööta<strong>ja</strong> poolt, kes on rollis "instituudi<br />

direktor".<br />

41


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

0..1 pakub idee väl<strong>ja</strong><br />

+õppejõud<br />

0..*<br />

<br />

Tööta<strong>ja</strong><br />

0..1<br />

+õppeosakonna<br />

tööta<strong>ja</strong><br />

0..1<br />

+instituudi direktor<br />

kinnitab<br />

kinnitab<br />

0..*<br />

<br />

Erakorraline kursus<br />

0..*<br />

Joonis 11 Mitu seosetüüpi kahe olemitüübi vahel.<br />

Hotell : Olemitüüp<br />

(hotelli nimi)<br />

Sisaldab :<br />

Seosetüüp<br />

Ruum : Olemitüüp<br />

(ruumi nr.)<br />

Viru r1<br />

1<br />

Olümpia<br />

r2<br />

r3<br />

2<br />

3<br />

Olem<br />

Seos<br />

Joonis 12 Seosetüübi semantika.<br />

Seosetüübi aste: Seosetüübi aste on seosetüübis osalevate olemitüüpide<br />

(osaliste) arv. Seega näiteks:<br />

• üheliikmelises e. unaarses seosetüübis osaleb üks olemitüüp<br />

(erinevates rollides) (vt. rekursiivne seosetüüp).<br />

• kaheliikmeliikmelises e. binaarses seosetüübis osaleb kaks olemitüüpi.<br />

• kolmeliikmelises e. ternaarses seosetüübis osaleb kolm olemitüüpi.<br />

Kõik Joonis 9 <strong>ja</strong> Joonis 11 esitatud seosetüübid on kaheliikmelised.<br />

Kaheliikmelised seosetüübid on olemi-suhte diagrammidel kõige levinumad.<br />

42


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Rekursiivne seosetüüp: Rekursiivne seosetüüp on seosetüüp, kus<br />

seosetüübi mõlemas otsas on osaliseks sama olemitüüp, kuid erinevates<br />

rollides. Rekursiivset seosetüüpi kutsutakse ka unaarseks seosetüübiks.<br />

Joonis 13 esitatud diagrammil on rekursiivne seosetüüp mille mõlemas otsas<br />

on sama olemitüüp (Tööta<strong>ja</strong>), kuid erinevates rollides (ülemus, alluv).<br />

Diagrammi kohaselt on igal tööta<strong>ja</strong>l null või üks otsene ülemus <strong>ja</strong> null või<br />

rohkem otsest alluvat.<br />

Joonis 13 Rekursiivse seosetüübi näide.<br />

Mida tähendab märkmelehele kirjutatud "{Acyclic}"? Tegemist on<br />

kitsendusega, mille kohaselt tööta<strong>ja</strong>te vahelistes seostes ei tohi leiduda<br />

"tsükleid" (Miliauskaite <strong>ja</strong> Nemuraite, 2005). See tähendab, et tööta<strong>ja</strong> ei tohi<br />

olla iseenda otsene ega kaudne ülemus (näiteks ülemuse ülemus) <strong>ja</strong> otsene<br />

ega kaudne alluv (näiteks alluva alluv). Taoliste kitsenduste leidmine <strong>ja</strong><br />

dokumenteerimine on va<strong>ja</strong>lik, sest tegemist on ärireeglitega millele vastavad<br />

kitsendused tuleb jõustada ka andmebaasis (andmebaasi kitsendustena).<br />

Kui joonistada olemi-suhte diagrammi UMLis, siis võib kitsenduste<br />

kir<strong>ja</strong>panemiseks kasutada UMLi formaalset objektikitsenduste keelt (Object<br />

Constraint Language e. OCL), aga seda võib kir<strong>ja</strong> panna ka vabas vormis<br />

tekstina. UML 2.0 ei nõua kitsenduste kirjeldamisel kindla keele kasutamist.<br />

Nõutud on vaid, et kitsendus tuleb panna looksulgudesse {}.<br />

Millist keelt oleks soovitav kitsenduste kirjeldamiseks kasutada? Esitame<br />

järgnevalt näite OCL kitsendusest, mille kohaselt identifitseerib atribuudi<br />

tellimuse_nr väärtus unikaalselt iga olemitüüpi Tellimus kuuluvat olemit.<br />

Täpsemalt, tellimused t1 <strong>ja</strong> t2 on erinevad tellimused, kui nende tellimuse<br />

numbrid on erinevad.<br />

[context Tellimus]<br />

Tellimus.allInstances -> forAll ( t1, t2 | t1t2 implies<br />

t1.tellimuse_nrt2.tellimuse_nr)<br />

Kui kitsenduse kirjeldamiseks kasutada formaalset keelt, siis saab panna<br />

kitsenduse kir<strong>ja</strong> täpselt <strong>ja</strong> üheselt arusaadavalt. Sellises keeles kitsenduste<br />

kirjeldusi suudab analüüsida <strong>ja</strong> interpreteerida ka tarkvarasüsteem. Samas,<br />

taolised kirjeldused pole ilma eriettevalmistuseta inimestele arusaadavad.<br />

Mudeleid peaksid üle vaatama <strong>ja</strong> nendest aru saama ka infosüsteemi<br />

tulevased kasuta<strong>ja</strong>d. Seega, kasulik oleks kitsendused dokumenteerida kahel<br />

viisil:<br />

• Täpne <strong>ja</strong> formaalne kirjeldus kasutades näiteks OCLi.<br />

43


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

• Laiemale kasuta<strong>ja</strong>te ringile arusaadav tavakeelne kirjeldus.<br />

© Erki Eessaar<br />

Vaatleme lauset: "Õppejõud õpetab õppeainet". Õppejõud <strong>ja</strong> Õppeaine on<br />

olemitüübid.<br />

Mis on ühe modelleeri<strong>ja</strong> <strong>ja</strong>oks seosetüüp, see on teise <strong>ja</strong>oks olemitüüp <strong>ja</strong><br />

vastupidi. Näiteks süsteemi kirjeldava lihtlause e. lausendi "Üliõpilane õpib<br />

õppeainet" põh<strong>ja</strong>l võib leida olemitüübid üliõpilane <strong>ja</strong> õppeaine. Kuid õppimine<br />

on võimalik modelleerida nii seosetüübina üliõpilane <strong>ja</strong> õppeaine vahel kui ka<br />

olemitüübina.<br />

Kui seosetüübil on atribuute, st. omadusi mille kohta tuleb andmebaasis<br />

andmeid hoida, siis tuleb see seosetüüp modelleerida olemitüübina.<br />

a)<br />

<br />

Õppejõud<br />

1<br />

0..*<br />

<br />

Õpetamine<br />

alguse_aeg : Date<br />

lõpu_aeg : Date<br />

0..*<br />

1<br />

<br />

Õppeaine<br />

b)<br />

Joonis 14 Seosetüübi modelleerimise võimalused UMLi joonistatud<br />

olemi-suhte diagrammil.<br />

Variandi b puhul kasutatakse seosetüübi esitamiseks UMLi sidemeklassi<br />

(inglise keeles association class). Fowler (2007) kirjutab: "Sidemeklass lisab<br />

ühe lisakitsenduse, mis seisneb selles, et iga kahe sidemes osaleva objekti<br />

vahel saab olla vaid üks sidemeklassi isend."<br />

Variandid a <strong>ja</strong> b ei ole samaväärsed. Variandi b korral kehtib täiendav reegel,<br />

et üks õppejõud ei saa õpetada ühte õppeainet rohkem kui üks kord.<br />

7.1.1.3 Atribuut<br />

Atribuut: Atribuut on "nimeline olemi omadus" (EVS-ISO/IEC 2382, 1998).<br />

Kontseptuaalses andmemudelis tuleb kirjeldada sellised atribuudid millele<br />

vastavaid andmeid soovitakse hakata andmebaasis hoidma.<br />

44


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Tüüp: Iga atribuut on mingit tüüpi. Atribuudi tüüp on võimalike väärtuste hulk<br />

mille hulgast saavad tulla atribuudi väärtused. Mitmel atribuudil võib olla<br />

ühesugune tüüp.<br />

Fakultatiivne atribuut: Fakultatiivne atribuut on atribuut, millel mõne olemi<br />

korral ei ole väärtust. Näiteks olemitüübi Isik atribuut võib olla neiupõlvenimi.<br />

Kuid atribuudil neiupõlvenimi saab olla väärtus vaid naissoost isikute korral.<br />

Kohustuslik atribuut: Kohustuslik atribuut on atribuut, millel iga olemi korral<br />

on vähemalt üks väärtus, mis on antud atribuudi tüüpi. Näiteks olemitüübi Isik<br />

atribuut võib olla sünniaeg. Igal isikul on sünniaeg.<br />

Üheväärtuseline atribuut: Üheväärtuseline atribuut on atribuut, millel on iga<br />

olemi kohta maksimaalselt üks väärtus, mis on antud atribuudi tüüpi. Näiteks<br />

igal isikul on vaid üks sünniaeg.<br />

Mitmeväärtuseline atribuut: Mitmeväärtuseline atribuut on atribuut, millel<br />

võib olla mõne olemi kohta rohkem kui üks väärtus, mis on antud atribuudi<br />

tüüpi.. Näiteks võib isikul olla üks või mitu telefoni või e-maili aadressi.<br />

Kuidas modelleerida mitmeväärtuselist atribuuti?<br />

• Modelleerida UMLis mitmeväärtuselise atribuudina.<br />

• Modelleerida eraldi olemitüübina.<br />

Halb lahendus<br />

<br />

Isik<br />

isikukood : String<br />

eesnimi : String<br />

perenimi : String<br />

sünniaeg : Date<br />

elukoht : String<br />

1<br />

omab<br />

0..*<br />

<br />

e_mail<br />

e_mail : String<br />

Parem lahendus<br />

Joonis 15 Mitmeväärtuselise atribuudi modelleerimine.<br />

Esimene lahendus on halb, sest ühel isikul võib olla rohkem või vähem kui<br />

kolm e-maili aadressi.<br />

Tuletisatribuut: Tuletisatribuut on atribuut, mille väärtus on mingi<br />

arvutusreegli alusel arvutatav muude väärtuste põh<strong>ja</strong>l (näiteks sama<br />

olemitüübi teiste atribuutide väärtustest).<br />

45


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Tuletisatribuudi nime ette tuleks UMLis joonistatud olemi-suhte diagrammil<br />

panna kaldkiips "/", et seda atribuuti tähistada. Samuti tuleb dokumenteerida<br />

arvutusreegel. Arvutusreegli võib panna kir<strong>ja</strong> diagrammile paigutatud<br />

märkmelehele.<br />

Näiteks hotellis ruumi üheks ööpäevaks reserveerimise hind on arvutatav<br />

reserveeritava ruumi ühe päeva hinna <strong>ja</strong> reserveeritud päevade arvu kaudu.<br />

Akna pindala on arvutatav akna kõrguse <strong>ja</strong> laiuse kaudu.<br />

<br />

Aken<br />

akna_nr : String<br />

laius : Integer<br />

kõrgus : Integer<br />

/ pindala : Double<br />

{pindala=laius*kõrgus}<br />

Joonis 16 Tuletisatribuudi näide.<br />

Tuletatud väärtuste andmebaasis hoidmise eelised:<br />

• Kiirendab päringuid.<br />

Tuletatud väärtuste andmebaasis hoidmise puudused:<br />

• Suureneb risk, et andmebaasi satuvad vastuolulised andmed<br />

1. kõrgus*laius pindala<br />

• Suurendab andmemahte<br />

Märgime, et vanuse esitamine tuletisatribuudina ei ole otstarbekas, sest<br />

vanus on pidevas muutumises ning seega tuleks selle atribuudi väärtust<br />

sagedasti muuta. Seetõttu oleks mõistlik hoida andmebaasis olemi<br />

sünni/loomise aega. Teades hetke kuupäeva <strong>ja</strong> kellaaega on selle põh<strong>ja</strong>l<br />

võimalik alati korrektne vanus väl<strong>ja</strong> arvutada (eeldusel, et süsteemis on<br />

loodud operaator, mis võimaldab leida kahe a<strong>ja</strong>hetke vahelise intervalli).<br />

7.1.1.4 Seosetüübi omadused<br />

• Järk e. võimsus<br />

• Osaluskohustus e. tugevus<br />

Need omadused tuleb määrata iga seosetüübis osaleva olemitüübi kohta.<br />

Tugevus<br />

Tugevus näitab vaadeldava seosetüübi ST <strong>ja</strong> selles osaleva olemitüübi OT<br />

kontekstis minimaalset (tüüpi ST kuuluvate) seoste arvu, milles peab<br />

osalema iga (tüüpi OT kuuluv) olem.<br />

Tugevuseks võib olla suvaline positiivne arv või 0.<br />

46


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Seosetüüp ST on olemitüübi OT <strong>ja</strong>oks kohustuslik, kui iga tüüpi OT kuuluv<br />

olem peab osalema vähemalt ühes tüüpi ST kuuluvas seoses (tugevus on<br />

suvaline positiivne arv).<br />

Seosetüüp ST on olemitüübi OT <strong>ja</strong>oks mittekohustuslik, kui on lubatud tüüpi<br />

OT kuuluvad olemid, mis ei osale üheski tüüpi ST kuuluvas seoses (tugevus<br />

on 0).<br />

Näiteks Joonis 17 on seosetüüp koostatakse olemitüübi Leping <strong>ja</strong>oks<br />

kohustuslik, sest iga leping peab olema seotud vähemalt ühe arvega. Samas<br />

on seosetüüp koostatakse olemitüübi Arve <strong>ja</strong>oks mittekohustuslik, sest võib<br />

leiduda arveid mis pole seotud ühegi lepinguga.<br />

<br />

Leping<br />

0..1<br />

koostatakse<br />

1..*<br />

<br />

Arve<br />

+koostamise alus<br />

+koostamise tulemus<br />

Joonis 17 Seosetüübi kohustuslikkus.<br />

Näide:<br />

• Hotell peab olema seotud ühe või mitme ruumiga. Seega seosetüüp<br />

Hotell <strong>ja</strong> Ruum vahel on Hotell <strong>ja</strong>oks kohustuslik.<br />

• Ruumiga peab olema seotud üks hotell. Seega seosetüüp Hotell <strong>ja</strong> Ruum<br />

vahel on Ruum <strong>ja</strong>oks kohustuslik.<br />

Võimsus e. järk<br />

Võimsus näitab vaadeldava seosetüübi ST <strong>ja</strong> selles osaleva olemitüübi OT<br />

kontekstis maksimaalset (tüüpi ST kuuluvate) seoste arvu, milles võib osaleda<br />

üks (tüüpi OT kuuluv) olem.<br />

Järguks võib olla suvaline positiivne arv või * (piiramatu arvu korral).<br />

Näide:<br />

• Hotell on seotud ühe või mitme ruumiga.<br />

• Ruumiga on seotud üks hotell.<br />

• Võimsus ruumi puhul on üks, ses konkreetne ruum osaleb ühes seoses<br />

hotelliga. Ruum on seotud ühe kindla hotelliga.<br />

• Võimsus hotelli puhul on *, sest konkreetne hotell osaleb ühes või<br />

rohkemas seoses ruumidega. Hotellis on üks või mitu ruumi.<br />

Joonis 17 näitel on seosetüübi koostatakse kontekstis olemitüübi Leping<br />

tugevus 1 <strong>ja</strong> võimsus *. Seosetüübi koostatakse kontekstis on olemitüübi Arve<br />

tugevus 0 <strong>ja</strong> võimsus on 1.<br />

Tugevus <strong>ja</strong> võimsus koos määravad ära võimsustiku (inglise keeles<br />

multiplicty). Võimsustikud määratakse ära alumise <strong>ja</strong> ülemise piiriga ning<br />

seega määrab tugevus ära alapiiri <strong>ja</strong> võimsus ülapiiri. Kui ala- <strong>ja</strong> ülapiir on<br />

47


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

sama võib kasutada ühte arvu. Järgnevalt esitame näiteid võimalikest<br />

võimsustikest.<br />

Tähistus Sõnaline selgitus<br />

0..1 Null või üks<br />

1..1 (või 1) Täpselt üks<br />

0..* Null või rohkem<br />

1..* Üks või rohkem<br />

5..10 Viis kuni kümme<br />

Võimsustikud esitavad kitsendusi mille põh<strong>ja</strong>l luuakse andmebaasis<br />

kitsendusi.<br />

Erinevates notatsioonides esitatakse võimsustikke erinevalt.<br />

Näide:<br />

Isik<br />

kuulub<br />

omab<br />

Auto<br />

Isik omab null või<br />

rohkem autot<br />

Isik<br />

kuulub<br />

omab<br />

Auto<br />

Isik omab üks või<br />

rohkem autot<br />

Isik<br />

Isik<br />

Isik<br />

kuulub<br />

kuulub<br />

kuulub<br />

omab<br />

omab<br />

omab<br />

Auto<br />

Auto<br />

Auto<br />

Isik omab täpselt<br />

ühte autot<br />

Isik omab täpselt<br />

kahte autot<br />

Isik omab null või<br />

üks autot<br />

Joonis 18 Erinevad seoste tüübid esitatuna varese<strong>ja</strong>lgade notatsioonis.<br />

Õppejõud peab õpetama ühte kuni nel<strong>ja</strong> õppeainet. (1..4)<br />

Õppeainet võib õpetada üks õppejõud. (0..1)<br />

Joonis 19 Võimsustike näide.<br />

Iga lepingu alusel võib koostada ühe <strong>ja</strong> ainult ühe arve. (0..1)<br />

Iga arve võib olla koostatud ühe <strong>ja</strong> ainult ühe lepingu alusel. (0..1)<br />

<br />

Leping<br />

koostatakse<br />

0..1 0..1<br />

<br />

Arve<br />

+koostamise alus<br />

+koostamise tulemus<br />

Joonis 20 Võimsustike näide.<br />

48


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Iga lepingu alusel võib koostada ühe <strong>ja</strong> ainult ühe arve. (0..1)<br />

Iga arve peab olema koostatud ühe <strong>ja</strong> ainult ühe lepingu alusel. (1)<br />

<br />

Leping<br />

koostatakse<br />

1 0..1<br />

<br />

Arve<br />

+koostamise alus<br />

+koostamise tulemus<br />

Joonis 21 Võimsustike näide.<br />

Iga lepingu alusel peab koostama ühe <strong>ja</strong> ainult ühe arve. (1)<br />

Iga arve peab olema koostatud ühe <strong>ja</strong> ainult ühe lepingu alusel. (1)<br />

<br />

Leping<br />

koostatakse<br />

1 1<br />

<br />

Arve<br />

+koostamise alus<br />

+koostamise tulemus<br />

Joonis 22 Võimsustike näide.<br />

Iga lepingu alusel võib koostada ühe või mitu arvet. (0..*)<br />

Iga arve peab olema koostatud ühe <strong>ja</strong> ainult ühe lepingu alusel. (1)<br />

<br />

Leping<br />

koostatakse<br />

1 0..*<br />

<br />

Arve<br />

+koostamise alus<br />

+koostamise tulemus<br />

Joonis 23 Võimsustike näide.<br />

Iga lepingu alusel peab koostama ühe või mitu arvet. (1..*)<br />

Iga arve peab olema koostatud ühe <strong>ja</strong> ainult ühe lepingu alusel. (1)<br />

<br />

Leping<br />

koostatakse<br />

1 1..*<br />

<br />

Arve<br />

+koostamise alus<br />

+koostamise tulemus<br />

Joonis 24 Võimsustike näide.<br />

Sõltuvalt võimsustikest võib kahte olemitüüpi siduv kaheliikmeline seosetüüp<br />

olla:<br />

• üks-ühele (1:1) seosetüüp (vt. Joonis 20, Joonis 21, Joonis 22);<br />

• üks-mitmele (1:M) seosetüüp (vt. Joonis 19, Joonis 23, Joonis 24);<br />

• mitu-mitmele (M:N) seosetüüp;<br />

49


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Olemi-suhte diagrammil võib esitada välistava kaare. Välistavat kaart saab<br />

kirjeldada, kui olemitüüp OT on seosetüüpide kaudu seotud kahe või rohkema<br />

olemitüübiga. Kaar esitab kitsenduse, et iga olemi puhul (mis on tüüpi OT)<br />

peavad eksisteerima täpselt ühte kaarega hõlmatud seosetüüpi kuuluvad<br />

seosed.<br />

Antud juhul peab iga lepingu rida olema seotud kas kauba või teenusega, aga<br />

mitte mõlemaga korraga. Teisisõnu, ei ole lubatud lepingu read, mis ei ole<br />

seotud ei kauba ega teenusega. Samuti ei ole lubatud lepingu read, mis on<br />

seotud nii kauba kui ka teenusega. Pange tähele, et seetõttu on iga lepingu<br />

rida seotud null või ühe teenusega <strong>ja</strong> null või ühe kaubaga, mitte täpselt ühe<br />

teenusega <strong>ja</strong> täpselt ühe kaubaga.<br />

Klient<br />

Leping<br />

Pakku<strong>ja</strong><br />

Lepingu<br />

rida<br />

Teenus<br />

Kaup<br />

Joonis 25 Kaare esitamine olemi-suhte diagrammil, kasutades<br />

varese<strong>ja</strong>lgade notatsiooni.<br />

Joonis 26Kaare esitamine UMLis joonistatud olemi-suhte diagrammil.<br />

Alamhulga kitsendus. UMLis saab esitada alamhulga kitsenduse (Halpin,<br />

2001). Näite kohaselt saab iga isik olla vaid sellise komitee esimees, mille<br />

liige ta on (komitee esimeeste hulk on komitee liikmete alamhulk). Pange<br />

50


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

tähele, et kuna igal komiteel on täpselt üks esimees, siis peab tänu alamhulga<br />

kitsendusele igal komiteel olema üks või rohkem liiget.<br />

Joonis 27Alamhulga kitsenduse esitamine UMLis joonistatud olemisuhte<br />

diagrammil.<br />

7.1.2 Laiendatud olemi-suhte diagramm<br />

7.1.2.1 Üldistusseos<br />

Ülatüüp on olemitüüp, millel on üks või rohkem alamtüüpi. Iga alamtüüpi olem<br />

on ühtlasi ka ülatüüpi olem, kuid vastupidine ei pruugi alati kehtida (st. iga<br />

ülatüüpi olem ei ole alati ka alamtüüpi olem). Alamtüüpi olem pärib kõik<br />

ülatüüpi olemi seosed <strong>ja</strong> atribuudid. Seetõttu nimetatakse üldistusseost ka<br />

pärimisseoseks. Alamtüübil võivad (aga ei pruugi olla) olla võrreldes<br />

ülatüübiga täiendavad omadused (atribuudid) <strong>ja</strong>/või ta osaleb täiendavates<br />

seosetüüpides. Ühel ülatüübil võib olla mitu alamtüüpi. Ühel alamtüübil võib<br />

olla mitu ülatüüpi (mitmene pärimine).<br />

Näiteks ülatüübi Isik atribuutideks võivad olla isikukood, eesnimi, perenimi<br />

sünniaeg <strong>ja</strong> elukoht. Ülatüübi Isik alamtüübid võivad olla Üliõpilane <strong>ja</strong> Tööta<strong>ja</strong>.<br />

Nii tööta<strong>ja</strong> kui ka üliõpilane on isikud. Alamtüüp Tööta<strong>ja</strong> osaleb seosetüübis<br />

olemitüübiga Amet. Alamtüübil Üliõpilane on atribuut üliõpilaskood.<br />

Üldistusseos ühendab omavahel ülatüübi <strong>ja</strong> selle alamtüübi. Diagrammil<br />

esitab seda ülatüüpi <strong>ja</strong> alamtüüpi ühendav joon. Selle joone ülatüübi poolses<br />

otsas on kolmnurk, mille tipp on suunatud ülatüübi poole.<br />

Kuidas sõnaliselt väljendada olemi-suhte diagrammil esitatud üldistusseost?<br />

Joonis 31 esitatud diagrammi kohaselt: Üliõpilane on isik. Tööta<strong>ja</strong> on isik.<br />

Ülatüübiks/alamtüübiks olemine on suhteline – olemitüüp, mis on ühe<br />

üldistusseose kontekstis ülatüüp võib olla teise üldistusseose kontekstis<br />

alamtüüp.<br />

Alamtüüp peab vastama järgmistele kriteeriumitele (Larman, 2002, lk. 399):<br />

• Ülatüübi definitsioon peab 100% kehtima ka selle alamtüübi suhtes.<br />

• Kõik alamtüüpi olemid on ka ülatüüpi.<br />

Üldistusseoste kaudu seotud olemitüübid moodustavad tüüpide hierarhia.<br />

Tüüpide hierarhiate leidmiseks võib kasutada spetsialiseerimise või<br />

üldistamise meetodit.<br />

51


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Spetsialiseerimine tähendab, et üritatakse leida olemitüüpe eristavaid<br />

omadusi. Näiteks leitakse olemitüüp Isik <strong>ja</strong> seejärel tehakse kindlaks, et isik<br />

võib olla nii füüsiline kui ka juriidiline isik.<br />

Üldistamine tähendab, et üritatakse minimeerida erinevusi olemitüüpide vahel<br />

<strong>ja</strong> leida nende ühiseid omadusi. Näiteks leitakse olemitüübid Ostutellimus <strong>ja</strong><br />

Müügitellimus <strong>ja</strong> tehakse üldistus, et tegemist on Tellimusega ning veel<br />

üldisemalt Lepinguga ost<strong>ja</strong>te <strong>ja</strong> müü<strong>ja</strong>te vahel.<br />

Praktikas tuleb neid meetodeid modelleerimisel kasutada üheskoos.<br />

Joonis 28 Üldistusseose näide.<br />

Isik on ülatüüp <strong>ja</strong> Toota<strong>ja</strong> on alamtüüp. Seost loetakse järgnevalt: "Tööta<strong>ja</strong> on<br />

Isik".<br />

Millal oleks kasulik leida <strong>ja</strong> mudelil esitada nii ülatüüp kui ka selle alamtüübid?<br />

• Osa atribuute on ühised kõikidele alamtüüpidele <strong>ja</strong> need tuleks esitada<br />

ülatüübis. Osa atribuute aga on spetsiifilised mingile kindlale alamtüübile.<br />

• Osa seosetüüpe on ühised kõikidele alamtüüpidele <strong>ja</strong> need tuleks esitada<br />

ülatüübi tasemel. Osa seosetüüpe aga on spetsiifilised mingile kindlale<br />

alamtüübile.<br />

Üldistuste hulk on kogum üldistusseoseid, mis üheskoos kirjeldavad, kuidas<br />

ülatüüpi mingil kindlal viisil alamtüüpideks <strong>ja</strong>gada. Järgneval diagrammil<br />

esitatakse kaks üldistuste hulka, mille nimed on roll <strong>ja</strong> sugu. Ühte hulka<br />

kuuluvad üldistusseosed on visuaalselt „kokku tõmmatud“. Üldistuste hulk<br />

sugu <strong>ja</strong>gab ülatüübi Isik alamtüüpideks vastavalt isiku soole. Üldistuste hulk<br />

roll <strong>ja</strong>gab ülatüübi Isik alamtüüpideks vastavalt isiku rollile. Mõlemasse<br />

üldistuste hulka kuuluvate üldistusseoste korral on Isik ülatüüp.<br />

52


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Joonis 29 Üldistuste hulgad.<br />

Üldistusseostega koos tuleks ära määrata ka nendega seotud kitsendused<br />

(Connolly <strong>ja</strong> Begg, 2002). Nende kitsenduste alusel luuakse hiljem jällegi<br />

andmebaasi kitsendusi.<br />

Osaluskohustus määrab, kas iga ülatüüpi kuuluv olem peab kuuluma ka<br />

mõnda alamtüüpi:<br />

• Kui iga ülatüüpi kuuluv olem peab kuuluma vähemalt ühte alamtüüpi, siis<br />

tähistatakse seda diagrammil {Mandatory}.<br />

• Kui iga ülatüüpi kuuluv olem ei pea kuuluma mõnda alamtüüpi (see<br />

tähendab, et võib leiduda ülatüüpi kuuluvaid olemeid, mis ei kuulu ühtegi<br />

alamtüüpi, siis tähistatakse seda diagrammil {Optional}.<br />

Kuuluvus määrab maksimaalse alamtüüpide arvu kuhu ülatüüpi olem võib<br />

kuuluda:<br />

• Kui iga ülatüüpi olem saab kuuluda maksimaalselt ühte alamtüüpi, siis<br />

tähistatakse seda diagrammil {Or}.<br />

• Kui iga ülatüüpi olem saab kuuluda rohkem kui ühte erinevasse alamtüüpi,<br />

siis tähistatakse seda diagrammil {And}.<br />

Kuuluvuse kitsendust pole va<strong>ja</strong> esitada, kui ülatüübil on ainult üks alamtüüp.<br />

Osaluskohustuse <strong>ja</strong> kuuluvuse kitsendused tuleb esitada eraldi iga üldistuste<br />

hulga kohta.<br />

53


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Joonis 30 Üldistuste hulgad koos kitsendustega.<br />

Vaatleme Joonis 31 esitatud kitsendust "{Otional, And}". "Optional" tähendab,<br />

et võib leiduda isikuid, kes ei ole ei üliõpilased ega tööta<strong>ja</strong>d. "And" tähendab,<br />

et võib leiduda isikuid, kes on korraga nii üliõpilased kui ka tööta<strong>ja</strong>d. Pange<br />

tähele, et diagrammil võib, aga ei pea kitsendust kirjutama märkmelehele.<br />

<br />

Isik<br />

isikukood : String<br />

eesnimi : String<br />

perenimi : String<br />

sünniaeg : Date<br />

elukoht : String<br />

{Optional, And}<br />

<br />

Üliõpilane<br />

üliõpilaskood : String<br />

<br />

Tööta<strong>ja</strong><br />

0..* 1<br />

<br />

Amet<br />

nimetus : String<br />

Joonis 31 Üldistusseose näide.<br />

Oletame, et Joonis 31 oleks esitatud üldistusseosega seotud kitsendus<br />

"{Mandatory, Or}". "{Mandatory}" tähendab, et iga isik peab olema ka mingit<br />

alamtüüpi (üliõpilane, tööta<strong>ja</strong>). "{Or}" tähendab, et isik saab olla kas üliõpilane<br />

või tööta<strong>ja</strong>, aga mitte mõlemat korraga.<br />

7.1.2.2 Osa-terviku seos<br />

Agregatsioon esitab osa-terviku seost olemitüüpide vahel kus üks<br />

olemitüüpidest esitab osa <strong>ja</strong> teine tervikut. Üks osa võib kuuluda mitmesse<br />

54


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

tervikusse ning osa võib eksisteerida ka ilma tervikuta. Näiteks iga meeskond<br />

kuulub nulli või rohkemasse liigasse <strong>ja</strong> igasse liigasse peab kuuluma<br />

vähemalt kolm meeskonda. Larman (2002) märgib, et selline seos eksisteerib<br />

valdavalt abstraktsete, mitte füüsiliste objektide vahel.<br />

Diagrammil esitatakse agregatsiooni seosetüüpi tähistava joone otsas<br />

paikneva seest tüh<strong>ja</strong> rombina (valge rombina), mis paikneb tervikut esitava<br />

olemitüübi poolel. Joonis 32 esitatud diagrammil on tervikuks Liiga <strong>ja</strong> osaks<br />

Meeskond.<br />

<br />

Liiga<br />

0..*<br />

3..*<br />

Joonis 32 Agregatsiooni näide.<br />

<br />

Meeskond<br />

Kompositsioon on osa-terviku seose erijuhus, mille puhul peab osa rollis olev<br />

olem kuuluma täpselt ühte terviku rollis olevasse olemisse. Näiteks sõrmed on<br />

osa täpselt ühest käest (kui just pole tegu siiami kaksikutega) <strong>ja</strong> tellimuse rida<br />

on osa täpselt ühest tellimusest (vt. Joonis 33). Joonis 34 kohaselt peab iga<br />

konkreetne pilet olema kas täpselt ühe broneeringu osa või täpselt ühe ostu<br />

osa. Konkreetne pilet ei tohi korraga kuuluda nii mingisse broneeringusse kui<br />

ka ostu.<br />

Lisaks kehtestab kompositsioon reegli, et terviku rollis oleva olemi<br />

kustutamisel tuleb kustutada ka kõik sellele kuuluvad osa rollis olevad olemid<br />

(Fowler, 2007).<br />

Diagrammil esitatakse kompositsiooni seosetüüpi tähistava joone otsas<br />

paikneva täidetud rombina (musta rombina), mis paikneb tervikut esitava<br />

olemitüübi poolel. Joonis 33 esitatud diagrammil on Tellimus tervik <strong>ja</strong><br />

Tellimuse rida selle osa.<br />

<br />

Tellimus<br />

1<br />

0..*<br />

<br />

Tellimuse_rida<br />

Joonis 33 Kompositsiooni näide.<br />

<br />

Ost<br />

<br />

Pilet<br />

0..1 0..* 0..*<br />

0..1<br />

Joonis 34 Kompositsiooni näide.<br />

<br />

Broneering<br />

Kui kahtlete, kas osa-tervikus seost esitada, siis Larman (2002) soovitab seda<br />

mitte teha. Millal osa-terviku seost kasutada (Larman, 2002)?<br />

• Loogilises mõttes on tegu osa <strong>ja</strong> tervikuga.<br />

• Osa <strong>ja</strong> tervik on seotud eluea kaudu. Osa ei saa eksisteerida ilma<br />

tervikuta. Sellisel juhul on tegu kompositsiooniga.<br />

• Mõned terviku omadused (nt. asukoht) või käitumised (nt. kustutamine)<br />

kanduvad üle ka osadele.<br />

55


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.1.3 Nimedest<br />

Kasutage olemitüüpide, atribuutide <strong>ja</strong> seosetüüpide nimetamisel sisulisi,<br />

infosüsteemi tulevastele kasuta<strong>ja</strong>tele arusaadavaid nimesid. Nii saavad ka<br />

nemad mudelite ülevaatamisel osaleda.<br />

Kasutage olemitüüpide nimedes ainsuse vorme, sest nii on hiljem lihtsam<br />

määrata seosetüüpidega seotud võimsustikke. Oletame, et süsteemi<br />

kirjeldavad lausendid: Iga õppejõud õpetab null või rohkem õppeainet. Iga<br />

õppeainet õpetab null või rohkem õppejõudu. Iga õppejõudu iseloomustab<br />

perenimi. Iga õppeainet iseloomustab nimi.<br />

Joonis 35 osas a) on ühe olemitüübi nimi mitmuses (Õppeained) <strong>ja</strong> sellest<br />

tulenevalt on võimsustiku määramisel langetatud vale otsus. Joonise osa b)<br />

esitab korrektse mudeli.<br />

a)<br />

<br />

Õppejõud<br />

perenimi : String<br />

õpetab<br />

0..1 0..1<br />

<br />

Õppeained<br />

nimi : String<br />

Ebaõige<br />

võimsustik<br />

b)<br />

<br />

Õppejõud<br />

perenimi : String<br />

õpetab<br />

0..*<br />

0..*<br />

<br />

Õppeaine<br />

nimi : String<br />

Joonis 35 Võimsustike määramine.<br />

Ärge lähtuge nimetamisel andmebaasisüsteemide tehnilistest piirangutest<br />

nagu: nimi ei tohi olla pikem kui 30 märki, ei tohi sisaldada täpitähti. Pidage<br />

meeles, et kontseptuaalne andmemudel on mittetehniline mudel, mille põh<strong>ja</strong>l<br />

võib luua tehnilise kavandi väga erinevate platvormide <strong>ja</strong>oks.<br />

7.1.4 Ei ole ühte ainuõiget mudelit<br />

Rõhutame, et kontseptuaalse andmemudeli koostamisel võivad erinevad<br />

modelleeri<strong>ja</strong>d koostada sama lähteinformatsiooni põh<strong>ja</strong>l erinevad mudelid,<br />

mis kõik annavad edasi va<strong>ja</strong>liku informatsiooni<br />

Oletame, et tuleb koostada kontseptuaalne andmemudel järgneva<br />

spetsifikatsiooni põh<strong>ja</strong>l: Iga klient esitab null või rohkem tellimust. Iga tellimus<br />

on esitatud täpselt ühe kliendi poolt. Iga tööta<strong>ja</strong> kinnitab null või rohkem<br />

tellimust. Iga tellimus kinnitatakse null või ühe tööta<strong>ja</strong> poolt. Klient on isik.<br />

Tööta<strong>ja</strong> on isik.<br />

Järgnev joonis esitab kaks võimalikku olemi-suhte diagrammi, mida sellise<br />

spetsifikatsiooni põh<strong>ja</strong>l võib koostada.<br />

56


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

a)<br />

b)<br />

<br />

Isik<br />

esitab<br />

+klient<br />

1 0..*<br />

+tööta<strong>ja</strong><br />

0..1 0..*<br />

kinnitab<br />

<br />

Tellimus<br />

<br />

Isik<br />

<br />

Tööta<strong>ja</strong><br />

<br />

Klient<br />

1<br />

esitab<br />

0..*<br />

<br />

Tellimus<br />

0..1<br />

kinnitab<br />

0..*<br />

Joonis 36 Alternatiivsete modelleerimisviiside näide.<br />

Variandis a on näidatud olemitüüpide rollid seosetüüpide kontekstis. Variandis<br />

b aga esitatakse rollid olemitüüpidena.<br />

Nagu näete, on variant a) kompaktsem. Variant b võiks olla eelistatum kui<br />

olemitüüpidel Tööta<strong>ja</strong> <strong>ja</strong>/või Klient on oma spetsiifilisi atribuute või seosetüüpe<br />

(mis ei käi kõigi isikute kohta). Samuti lihtsustab variant b) kitsenduste<br />

esitamist. Näiteks, kui kehtib reegel, et iga isik peab olema kas tööta<strong>ja</strong> või<br />

klient, aga ta ei tohi olla mõlemat korraga, siis saab üldistusseosele lisada<br />

kitsenduse {Mandatory; Or} (vt. peatükk 7.1.2.1).<br />

57


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.1.5 Olemitüüpide liigitus<br />

Olemitüüpe on võimalik liigitada selle järgi, kuidas identifitseeritakse<br />

nendesse tüüpidesse kuuluvaid olemeid.<br />

Nõrk olemitüüp on olemitüüp, millesse kuuluvate olemite eksistents sõltub<br />

mõnda teise olemitüüpi kuuluvate olemite eksistentsist (Connolly <strong>ja</strong> Begg,<br />

2002). Seda tüüpi olem ei saa eksisteerida ilma mõne teise olemita. Seda<br />

tüüpi olem ei saa eksisteerida ilma mõne teise olemita. Kui olemitüüp OT on<br />

nõrk, siis sellesse kuuluvate olemite identifitseerimiseks ei piisa OT<br />

atribuutide väärtustest. Sellise olemi identifitseerimiseks on va<strong>ja</strong> kasutada ka<br />

selle seoseid teiste olemitega.<br />

Näiteks on nõrgad olemitüübid:<br />

• Joonis 9 esitatud olemitüüp Õpetamine. Õpetamine seob õppejõu <strong>ja</strong><br />

õppeaine ning ei saa eksisteerida ilma, et eksisteeriksid õppejõud <strong>ja</strong><br />

õppeaine.<br />

• Joonis 31 esitatud olemitüübid Tööta<strong>ja</strong> <strong>ja</strong> Üliõpilane. Tööta<strong>ja</strong> <strong>ja</strong> üliõpilane<br />

on isikud.<br />

• Error: Reference source not found esitatud olemitüüp Tellimuse_rida.<br />

Tellimuse rida on tellimuse osa <strong>ja</strong> ei saa eksisteerida ilma tellimuseta.<br />

Tugev olemitüüp on olemitüüp, millesse kuuluvate olemite eksistents ei sõltu<br />

mõnda teise olemitüüpi kuuluvate olemite eksistentsist (Connolly <strong>ja</strong> Begg,<br />

2002). Näiteks Joonis 9 esitatud diagrammil on tugevad olemitüübid<br />

Haridusaste_liik, Õppejõud, Õppeaine <strong>ja</strong> Õppeaine_seisundi_liik.<br />

Kui olemitüüp OT on tugev, siis sellesse kuuluvate olemite identifitseerimiseks<br />

piisab OT atribuutide väärtustest. Näiteks konkreetse õppeaine<br />

identifitseerimiseks piisab atribuudi ainekood väärtusest.<br />

Codd (1979) esitab veel ühe võimaliku olemitüüpide liigituse:<br />

• Kernel. Olemitüübid, millesse kuuluvad olemid võivad eksisteerida<br />

sõltumata teiste olemite olemasolust. Joonis 9 esitatud diagrammil on<br />

kernelid Haridusaste_liik, Õppejõud, Õppeaine <strong>ja</strong> Õppeaine_seisundi_liik.<br />

• Kirjeldav olemitüüp. Seda tüüpi olemite peamine eesmärk on<br />

iseloomustada / kirjeldada teisi olemeid. Nende eksistents sõltub<br />

olemitest, mida nad iseloomustavad. Kirjeldava olemitüübi näiteks on<br />

Joonis 15 esitatud olemitüüp e_mail.<br />

• Assotsiatsioon. Olemitüüp, mis esitab mitu-mitu seoseid. Joonis 9 esitatud<br />

diagrammil on assotsiatsioon Õpetamine.<br />

58


viib läbi reserveerimise<br />

TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.1.6 Olemi-suhte diagrammi erinevad notatsioonid<br />

- Chen<br />

- Barker<br />

- IE (Information Engineering)<br />

- IDEF1X (Integration DEFinition for Information Modeling)<br />

- UML (Unified Modeling Language)<br />

7.1.6.1 Chen<br />

ma<strong>ja</strong> tänav linn postikood riik<br />

hotelli_<br />

nimi<br />

aadress<br />

hotelli_nr<br />

eesnimi<br />

perenimi<br />

alguse_<br />

aeg<br />

lopu_aeg<br />

kommentaar<br />

hind<br />

nimi<br />

sugu<br />

Hotell<br />

1<br />

Reserveerimine<br />

Isik<br />

isiku_nr<br />

Sisaldab<br />

M<br />

reserveeritakse<br />

reserveerib<br />

N<br />

o<br />

ruumi_nr<br />

Ruum<br />

M<br />

Külaline<br />

hind<br />

tüüp<br />

P<br />

sünni_<br />

aeg<br />

külalise_<br />

nr<br />

Amet<br />

1<br />

Töötab<br />

M<br />

Tööta<strong>ja</strong><br />

1 M<br />

tööta<strong>ja</strong>_<br />

nr<br />

nimetus<br />

ameti_nr<br />

Juhendab<br />

Joonis 37 Olemi-suhte diagrammi esitus Chen’i notatsioonis.<br />

59


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.1.6.2 Barker<br />

Hotell<br />

# hotelli_nr<br />

*hotelli_nimi<br />

*aadress<br />

Amet<br />

#ameti_nr<br />

*nimetus<br />

töötab<br />

juhatab<br />

Isik<br />

#isiku_nr<br />

*eesnimi<br />

*perenimi<br />

¤ sugu<br />

Tööta<strong>ja</strong><br />

#tööta<strong>ja</strong>_nr<br />

¤ juhata<strong>ja</strong><br />

Külaline<br />

#külalise_nr<br />

*sünni_aeg<br />

sisaldab<br />

viib läbi<br />

reserveerimise<br />

Ruum<br />

#hotelli_nr<br />

#ruumi_nr<br />

*tüüp<br />

*hind<br />

reserveeritakse<br />

Reserveerimine<br />

#külalise_nr<br />

#hotelli_nr<br />

#ruumi_nr<br />

#tööta<strong>ja</strong>_nr<br />

*alguse_aeg<br />

¤ lopu_aeg<br />

¤ kommentaar<br />

¤ hind<br />

reserveerib<br />

Joonis 38 Olemi-suhte diagrammi esitus Barkeri notatsioonis.<br />

60


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.1.6.3 IE (Information Engineering)<br />

Amet<br />

ameti_nr<br />

nimetus<br />

ametis töötab /<br />

omab ametit<br />

Isik<br />

isiku_nr<br />

eesnimi<br />

perenimi<br />

sugu<br />

Hotell<br />

hotelli_nr<br />

hotelli_nimi<br />

aadress<br />

Tööta<strong>ja</strong><br />

tööta<strong>ja</strong>_nr (FK)<br />

ameti_nr (FK)<br />

juhata<strong>ja</strong> (FK)<br />

sisaldab /<br />

sisaldub<br />

viib läbi<br />

reserveerimise<br />

juhendab /<br />

juhendatakse<br />

Ruum<br />

hotelli_nr (FK)<br />

ruumi_nr<br />

tüüp<br />

hind<br />

reserveeritakse<br />

Reserveerimine<br />

külalise_nr (FK)<br />

hotelli_nr (FK)<br />

ruumi_nr (FK)<br />

tööta<strong>ja</strong>_nr (FK)<br />

alguse_aeg<br />

lopu_aeg<br />

kommentaar<br />

/hind<br />

reserveerib<br />

Külaline<br />

külalise_nr (FK)<br />

sünni_aeg<br />

Joonis 39 Olemi-suhte diagrammi esitus IE notatsioonis.<br />

7.1.6.4 IDEF1X (Integration DEFinition for Information Modeling)<br />

Amet<br />

ameti_nr<br />

nimetus<br />

ametis töötab /<br />

omab ametit<br />

Isik<br />

isiku_nr<br />

eesnimi<br />

perenimi<br />

sugu<br />

Hotell<br />

hotelli_nr<br />

hotelli_nimi<br />

aadress<br />

Tööta<strong>ja</strong><br />

tööta<strong>ja</strong>_nr (FK)<br />

juhata<strong>ja</strong> (FK)<br />

ameti_nr (FK)<br />

sisaldab /<br />

sisaldub<br />

viib läbi<br />

reserveerimise<br />

juhendab /<br />

juhendatakse<br />

Ruum<br />

hotelli_nr (FK)<br />

ruumi_nr<br />

tüüp<br />

hind<br />

reserveeritakse<br />

Reserveerimine<br />

külalise_nr (FK)<br />

hotelli_nr (FK)<br />

ruumi_nr (FK)<br />

tööta<strong>ja</strong>_nr (FK)<br />

alguse_aeg<br />

lopu_aeg<br />

kommentaar<br />

/hind<br />

reserveerib<br />

Külaline<br />

külalise_nr (FK)<br />

sünni_aeg<br />

Joonis 40 Olemi-suhte diagrammi esitus IDEF1X notatsioonis.<br />

61


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Isik<br />

PK<br />

isiku_nr<br />

Hotell<br />

Amet<br />

eesnimi<br />

perenimi<br />

sugu<br />

PK<br />

hotelli_nr<br />

PK<br />

ameti_nr<br />

nimi<br />

ma<strong>ja</strong><br />

tänav<br />

linn<br />

postikood<br />

riik<br />

nimetus<br />

Tööta<strong>ja</strong><br />

PK,FK1<br />

tööta<strong>ja</strong> _nr<br />

FK2<br />

ameti_nr<br />

Ruum<br />

Reserveerimine<br />

PK<br />

PK,FK1<br />

FK2<br />

ruumi_nr<br />

hotell_id<br />

hind<br />

tüübi_nr<br />

PK,FK1<br />

PK,FK1<br />

PK,FK2<br />

PK<br />

FK3<br />

ruumi_nr<br />

hotell_id<br />

külalise_nr<br />

alguse_aeg<br />

lõpu_aeg<br />

kommentaar<br />

tööta<strong>ja</strong>_nr<br />

Külaline<br />

PK,FK1 külalise_nr<br />

sünni_aeg<br />

Tüüp<br />

PK<br />

tüübi_nr<br />

nimetus<br />

Joonis 41 Olemi-suhte diagrammi esitus IDEF1X notatsioonis.<br />

62


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.1.6.5 UML (Unified Modeling Language)<br />

Joonis 42 Olemi-suhte diagrammi esitus UML notatsioonis.<br />

Joonisel 42 olev diagramm on joonistatud CASE vahendiga Rational-Rose.<br />

7.1.7 Olemi-suhte diagrammi puudused <strong>ja</strong> probleemid<br />

• Diagrammi elementide (olemitüüpide, seosetüüpide, atribuut) tähenduses<br />

<strong>ja</strong> definitsioonides pole siiani täpselt kokku lepitud. Mis ühe <strong>ja</strong>oks on<br />

olemitüüp, see on teise <strong>ja</strong>oks atribuut või seosetüüp.<br />

• Aegade jooksul on kasutusel olnud (<strong>ja</strong> on siiani) palju erinevaid notatsioone<br />

(märgisüsteeme), mida olemi-suhte diagrammide koostamiseks on<br />

kasutatud. Erinevates notatsioonides on diagrammidel lubatud erinevat<br />

tüüpi elemendid – näiteks IE <strong>ja</strong> IDEF1X notatsioonis diagrammidel<br />

näidatakse välisvõtmeid.<br />

• Pole piisavalt väljendusrikas. Palju informatsiooni (nt. andmetega seotud<br />

kitsenduste kohta) on võimalik esitada ainult diagrammiga kaasa tulevate<br />

tekstiliste kirjeldustega.<br />

63


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.2 Kontseptuaalse andmemudeli koostamise meetodeid<br />

Kontseptuaalse andmemudeli võib esitada olemi-suhte diagrammi <strong>ja</strong><br />

olemitüüpide ning atribuutide dokumentatsiooni abil.<br />

Millised on kontseptuaalse andmemudeli loomise sammud, kui kasutatakse<br />

olemi-suhte diagramme? Connolly <strong>ja</strong> Begg (2002) nimetavad samme.<br />

• Täpsustatakse olemitüübid.<br />

• Täpsustatakse seosetüübid.<br />

• Määratakse kõik teadaolevad atribuudid <strong>ja</strong> seostatakse need<br />

olemitüüpidega.<br />

• Määratakse atribuutide tüübid.<br />

• Leitakse unikaalsed identifikaatorid.<br />

• Eemaldatakse mudelist liiasused.<br />

• Kontrollitakse mudeli kvaliteeti.<br />

7.2.1 Olemitüüpide <strong>ja</strong> seosetüüpide leidmine<br />

Olemitüüpide <strong>ja</strong> seosetüüpide leidmiseks võib kasutada järgmiseid meetodeid<br />

<strong>ja</strong> nende kombinatsioone.<br />

• Lausendite meetod.<br />

• Olemitüüpide suhestamise meetod.<br />

• Mustrite otsimise meetod.<br />

Vaatleme järgnevalt neid meetodeid lähemalt.<br />

7.2.1.1 Lausendite meetod<br />

Lausend on lihtlause, mis kirjeldab loodavat süsteemi. Lausend on abivahend,<br />

mis aitab süsteemi kergemini analüüsida. Lausend on üldistatud väide reaalse<br />

maailma olemite kohta.<br />

Täpsemalt nimetatakse lausendiks "alusest, öeldisest <strong>ja</strong> sihitisest või<br />

määrusest koosnevat lihtlauset juhtumil, kus on võimalik iga selle lause liiget<br />

käsitleda iseseisva omavahel suhestatud hulgana (elementide arv on suurem<br />

kui 2)." (Mikli, 1999)<br />

Kuidas kasutada lausendeid andmebaasi projekteerimiseks? Nimisõnadest<br />

tulenevad olemitüübid või atribuudid <strong>ja</strong> tegusõnades e. verbidest seosetüübid.<br />

Vaatleme näitena lausendeid dokumentide haldamise süsteemi kohta.<br />

Vaatleme näitena lausendeid dokumentide haldamise süsteemi kohta.<br />

• Dokument on mingit tüüpi.<br />

• Joonistus on dokument.<br />

• Aruanne on dokument.<br />

• Dokumendist on mitmeid koopiaid.<br />

• Dokument asub asukohas.<br />

• Riiul on asukoht.<br />

• Dokument on mingil teemal.<br />

• Isik on osapool.<br />

64


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• Organisatsioon on osapool.<br />

• Osapool on dokumendi autor.<br />

• Osapool saab dokumendi koopia.<br />

• Isik töötab ametikohtadel.<br />

• Teatud tüüpi dokument tuleb saata teatud tüüpi ametikohal tööta<strong>ja</strong>le.<br />

Lausenditele vastav olemi-suhte diagramm, kus on täpsustatud ka<br />

seosetüüpide omadused.<br />

<br />

Asukoht<br />

<br />

Riiul<br />

<br />

Teema<br />

<br />

1 0..*<br />

Koopia<br />

0..*<br />

0..*<br />

0..* <br />

Autor<br />

1..*<br />

0..*<br />

<br />

Joonistus<br />

1<br />

1..*<br />

1..*<br />

<br />

Dokument<br />

0..*<br />

<br />

Aruanne<br />

1<br />

<br />

Dokumendi tüüp<br />

<br />

Organisatsioon<br />

0..*<br />

<br />

Osapool<br />

<br />

Isik<br />

0..*<br />

1..*<br />

<br />

Ametikoht<br />

0..*<br />

Joonis 43 Olemi-suhte diagrammi näide.<br />

Kontseptuaalse andmemudeli (sealhulgas olemi-suhte diagrammi)<br />

koostamisel võiks lähtuda järgnevatest põhimõtetest (Larman, 2002).<br />

• Kasutage olemitüüpide/atribuutide/seosetüüpide nimedena termineid, mis<br />

on kasutusel organisatsioonis millele andmebaasi luuakse.<br />

• Jätke vaatluse alt väl<strong>ja</strong> ebaoluline. Pidage meeles, et kontseptuaalses<br />

andmemudelis tuleb ka<strong>ja</strong>stada sellised <strong>ja</strong> ainult sellised olemitüübid /<br />

atribuudid / seosetüübid, millele vastavaid andmeid on va<strong>ja</strong> hoida<br />

andmebaasis.<br />

7.2.1.2 Olemitüüpide suhestamise meetod<br />

Olemitüüpide <strong>ja</strong> seosetüüpide leidmiseks võib kasutada ka olemitüüpide<br />

suhestamise meetodit. Olemitüüpide suhestamise meetodi kohaselt viiakse<br />

läbi olemitüüpide <strong>ja</strong> seosetüüpide nimistuline süntees. "Üheks mõtlemisviisiks<br />

modelleerimisel <strong>ja</strong> diagrammide koostamisel on objektide (andmeobjektide)<br />

nimistuline süntees <strong>ja</strong> nende hilisem suhestamine. Otsime <strong>ja</strong> kaardistame<br />

süsteemi mõisted, mis võiksid vastata olulistele andmeobjektidele." (Mikli,<br />

1999)<br />

Võib leiduda kategooriaid millele ei leita uuritava süsteemi korral ühtegi<br />

vastavat olemitüüpi või seosetüüpi. Iga seosetüüp või olemitüüp võib kuuluda<br />

mitmesse kategooriasse.<br />

65


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Olemitüüpide suhestamise meetodi kasutamisel võib võtta aluseks<br />

olemitüüpide <strong>ja</strong> seosetüüpide kategooriate nimekir<strong>ja</strong>d. Larman (2002)<br />

kirjeldab selliste nimekir<strong>ja</strong>de kasutamist kui ühte domeenimudel koostamise<br />

meetodit. Domeenimudel on aluseks objekt-orienteeritud tarkvara disaini<br />

korral tarkvaraklasside leidmisele. Kuid selline meetod on edukalt rakendatav<br />

ka kontseptuaalse andmemudeli koostamisel.<br />

Kuidas leida kategooriatesse kuuluvaid olemitüüpe <strong>ja</strong> seosetüüpe? Tuleb<br />

uurida süsteemi kirjeldusi nagu organisatsiooniga seotud dokumendid,<br />

kasuta<strong>ja</strong>te intervjuude protokollid, lausendid, kasutusjuhtude tekstikirjeldused,<br />

domeenimudel, kasuta<strong>ja</strong>te infova<strong>ja</strong>duste (päringute) kirjeldused. Samuti tuleb<br />

kasutada oma teadmisi maailma <strong>ja</strong> reaalsete süsteemide toimimise kohta.<br />

Tabel 9 Olemitüüpide kategooriad.<br />

Olemitüübi<br />

kategooria (Larman,<br />

2002)<br />

füüsilised objektid<br />

spetsifikatsioonid,<br />

as<strong>ja</strong>de kirjeldused<br />

asukohad<br />

rollid<br />

konteinerid, mis<br />

sisaldavad teisi<br />

objekte<br />

as<strong>ja</strong>d konteineris<br />

teised arvuti või<br />

elektromehhaanilised<br />

süsteemid, mis on<br />

väl<strong>ja</strong>spool<br />

vaadeldavat<br />

süsteemi<br />

abstraktsed<br />

nimisõnad<br />

organisatsioonid (<strong>ja</strong><br />

nende alamosad)<br />

sündmused<br />

Näited lennunduse (Larman, 2002), ülikooli <strong>ja</strong><br />

dokumendihalduse süsteemi põh<strong>ja</strong>l<br />

Lennundus: lennuk<br />

Ülikool: õpik, õppevahend, auditoorium<br />

Dokument: koopia (füüsiliselt paberkand<strong>ja</strong>l), isik<br />

Lennundus: lennu kirjeldus<br />

Ülikool: õppeaine kirjeldus e. ainekaart<br />

Dokument: teema, dokumendi tüüp, ametikoht.<br />

Lennundus: lennu<strong>ja</strong>am<br />

Ülikool: auditoorium, õppeklass<br />

Dokument: asukoht, riiul<br />

Lennundus: piloot, reisi<strong>ja</strong><br />

Ülikool: õppejõud, õppetooli juhata<strong>ja</strong>, üliõpilane<br />

Dokument: autor<br />

Lennundus: lennuk<br />

Ülikool: auditoorium<br />

Dokument: riiul<br />

Lennundus: reisi<strong>ja</strong> (on lennukis)<br />

Ülikool: õppejõud, üliõpilane (on auditooriumis)<br />

Dokument: koopia (on riiulis)<br />

Lennundus: lennukontrolli keskus<br />

Lennundus: akrofoobia (kõrguse kartus)<br />

Dokument: osapool<br />

Lennundus: lennukompanii<br />

Ülikool: õppetool<br />

Dokument: organisatsioon<br />

Lennundus: õhku tõusmine, allakukkumine,<br />

hädamaandumine, korraline maandumine<br />

66


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

Olemitüübi<br />

kategooria (Larman,<br />

2002)<br />

protsessid<br />

reeglid <strong>ja</strong> poliitikad<br />

kataloogid<br />

juhendid,<br />

dokumendid,<br />

raamatud<br />

finantsinstrumendid<br />

<strong>ja</strong> teenused<br />

© Erki Eessaar<br />

Näited lennunduse (Larman, 2002), ülikooli <strong>ja</strong><br />

dokumendihalduse süsteemi põh<strong>ja</strong>l<br />

Lennundus: lennule koha kinni panemine<br />

Ülikool: õppimine, teadmiste kontrolli läbiviimine,<br />

aine õpetamine<br />

Dokument: dokumendi koopia saatmine<br />

Lennundus: lennu tühistamise reeglid, lennule kinni<br />

pandud kohast loobumise reeglid<br />

Ülikool: eksmatrikuleerimise reeglid, hindamisreeglid<br />

Lennundus: lennuki osade kataloog<br />

Lennundus: lennuki parandamise juhend<br />

Ülikool: eksami läbiviimise juhend<br />

Dokument: dokument, joonistus, aruanne<br />

Olemitüüpide vaheliste seosetüüpide leidmiseks tuleb koostada seosetüüpide<br />

nimekiri, mõeldes erinevatele seosetüüpide kategooriatele. Seosetüübis<br />

osalevad olemitüübid valitakse olemitüüpide nimekir<strong>ja</strong>st. Seosetüüpide<br />

otsimise käigus on võimalik leida ka uusi olemitüüpe.<br />

Tabel 10 Seosetüüpide kategooriad.<br />

Seosetüübi kategooria Näited lennunduse (Larman, 2002), ülikooli <strong>ja</strong><br />

(Larman, 2002)<br />

dokumendihalduse süsteemi põh<strong>ja</strong>l<br />

A on B füüsiline osa Lennundus: tiib – lennuk<br />

A on B loogiline osa Lennundus: õhkutõusmine – lennureis<br />

A sisaldub füüsiliselt B-s Lennundus: reisikirjelduse dokument –<br />

reisikirjelduste kaust<br />

lennuki reisi<strong>ja</strong> – lennuk (lennuk on nagu<br />

konteiner, mis sisaldab reisi<strong>ja</strong>t)<br />

Dokument: koopia – asukoht<br />

A sisaldub loogiliselt B-s Lennundus: lend – lennuplaan<br />

A on B kirjeldus<br />

Lennundus: lennu kirjeldus (lennu<br />

spetsifikatsioon) – lend mingil konkreetsel<br />

päeval<br />

Dokument: dokument – koopia<br />

dokumendi tüüp – dokument<br />

A salvestatakse B-s Lennundus: reserveerimine – reisikirjeldus<br />

A on B liige<br />

Lennundus: piloot – lennufirma<br />

A on B<br />

Lennundus: lennukite hoolduse allüksus –<br />

organisatsiooniline lennufirma<br />

allüksus<br />

A kasutab või haldab B-d Lennundus: piloot – lennuk<br />

Dokument: autor – koopia<br />

osapool – koopia<br />

ametikoht – dokumendi tüüp<br />

A suhtleb B-ga<br />

A on seotud protsessiga<br />

B<br />

Lennundus: klienditeeninda<strong>ja</strong> – reisi<strong>ja</strong><br />

Lennundus: reisi<strong>ja</strong> – pileti ostmine<br />

67


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

Seosetüübi kategooria<br />

(Larman, 2002)<br />

protsessid A <strong>ja</strong> B on<br />

seotud<br />

A järgneb B-le<br />

A on B omanik<br />

A on B üldistus<br />

© Erki Eessaar<br />

Näited lennunduse (Larman, 2002), ülikooli <strong>ja</strong><br />

dokumendihalduse süsteemi põh<strong>ja</strong>l<br />

Lennundus: pileti reserveerimine – pileti<br />

reserveerimise tühistamine, pileti reserveerimine<br />

– maksmine<br />

Lennundus: linn – linn (lennuk lendab linnast<br />

linna)<br />

Lennundus: lennufirma – lennuk<br />

Lennundus: transpordifirma – lennufirma<br />

Dokument: osapool – isik<br />

osapool – organisatsioon<br />

osapool – autor<br />

asukoht – riiul<br />

Kontseptuaalse andmemudeli koostamise käigus tuleb ka kindlaks määrata <strong>ja</strong><br />

kirjeldada seosetüüpide omadused.<br />

7.2.2 Seosetüüpide probleemid<br />

Millised on võimalikud olemi-suhte diagrammil seosetüüpidega tekkivad<br />

probleemid (inglise keeles connection trap problems)? Nende probleemide<br />

ühine tunnus on, et probleemse mudeli järgi kavandatud andmebaasis jääksid<br />

seosed teatud olemite vahel ebaselgeks.<br />

Tutvume kõigepealt lehviku probleemiga (inglise keeles fan-trap problem).<br />

Vaatleme näitena andmebaasi kus hoitavaid andmeid iseloomustavad<br />

lausendid: Tööta<strong>ja</strong> töötab harukontoris. Harukontor sisaldab osakondi<br />

(Connolly <strong>ja</strong> Begg, 2002). Joonis 44 esitatud olemi-suhte diagrammi põh<strong>ja</strong>l<br />

loodud andmebaasist ei saaks me teada, millises osakonnas tööta<strong>ja</strong> töötab.<br />

Tööta<strong>ja</strong> töötab küll ühes kindlas harukontoris, kuid harukontor sisaldab samal<br />

a<strong>ja</strong>l ka üks või rohkem osakonda.<br />

Joonis 44 "Lehviku probleemi" näide.<br />

Probleemi lahendamiseks tuleks luua andmebaas Joonis 45 esitatud olemisuhte<br />

diagrammi põh<strong>ja</strong>l. Pange tähele, et sellisel viisil loodud andmebaasist<br />

on võimalik endiselt üheselt teada saada millises harukontoris tööta<strong>ja</strong> töötab,<br />

sest iga tööta<strong>ja</strong> on seotud täpselt ühe osakonnaga <strong>ja</strong> iga osakond on seotud<br />

täpselt ühe harukontoriga.<br />

Joonis 45 "Lehviku probleemi" lahendus.<br />

68


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Joonis 45 esitatud lahenduse eelduseks on, et iga tööta<strong>ja</strong> peab töötama<br />

täpselt ühes osakonnas. Kui leidub tööta<strong>ja</strong>id, kes töötavad küll harukontoris,<br />

kuid ei ole tööta ühegi osakonna alluvuses, siis tekib kuristiku probleem.<br />

Tutvume järgnevalt kuristiku probleemiga (inglise keeles chasm-trap<br />

problem). Vaatleme näitena andmebaasi kus hoitavaid andmeid<br />

iseloomustavad lausendid: Tööta<strong>ja</strong> töötab osakonnas. Tööta<strong>ja</strong> kasutab<br />

ametiautosid.<br />

Kui ametiautot pole veel tööta<strong>ja</strong> käsutusse antud, siis Joonis 46 esitatud<br />

olemi-suhte diagrammi põh<strong>ja</strong>l loodud andmebaasist ei saa teada, millisele<br />

osakonnale see auto kuulub.<br />

<br />

Osakond<br />

töötab<br />

1<br />

0..*<br />

<br />

Tööta<strong>ja</strong><br />

kasutab<br />

0..1<br />

+kasuta<strong>ja</strong><br />

Joonis 46 Kuristiku probleemi näide.<br />

0..*<br />

<br />

Ametiauto<br />

Probleemi lahendamiseks tuleks luua andmebaas Joonis 47 esitatud olemisuhte<br />

diagrammi põh<strong>ja</strong>l. Erinevalt Joonis 46 on ette nähtud täiendav<br />

seosetüüp olemitüüpide Osakond <strong>ja</strong> Ametiauto vahel. Ametiauto on seotud<br />

täpselt ühe osakonnaga <strong>ja</strong> seetõttu on teada milline osakond on selle omanik<br />

isegi siis, kui seda pole tööta<strong>ja</strong>ga seostatud.<br />

<br />

Osakond<br />

töötab<br />

1 0..*<br />

<br />

Tööta<strong>ja</strong><br />

+kasuta<strong>ja</strong><br />

0..1 kasutab<br />

0..*<br />

<br />

Ametiauto<br />

1<br />

+omanik<br />

omab<br />

Joonis 47 Kuristiku probleemi lahenduse näide.<br />

0..*<br />

Pange tähele, et võib kehtida ärireegel: Tööta<strong>ja</strong> võib kasutada ainult selle<br />

osakonna ametiautosid kus ta töötab. Kui selline reegel kehtib, siis tuleb see<br />

dokumenteerida <strong>ja</strong> andmebaasis kitsendusena jõustada.<br />

7.2.2.1 Mustrite otsimise meetod<br />

Otsitakse sama valdkonna kohta varem koostatud mudeleid, mida saaks uues<br />

projektis ära kasutada. Selliste mudelite kohta on olemas spetsiaalsed<br />

kataloogid (vt. teema 8).<br />

7.2.3 Atribuutide määramine <strong>ja</strong> olemitüüpidega seostamine<br />

Iga leitud olemitüübi kohta tuleb määrata kindlaks millistele selle olemitüübi<br />

omadustele vastavaid andmeid hakatakse andmebaasis säilitatama. Need<br />

omadused tuleb esitada atribuutidena. Olemitüübil on potentsiaalselt väga<br />

palju erinevaid omadusi. Seega iga atribuudi korral tuleb kaaluda, kas leitud<br />

atribuudi väärtuseid on va<strong>ja</strong> andmebaasis hoida. Näiteks kas andmebaasis on<br />

69


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

va<strong>ja</strong> hoida tööta<strong>ja</strong> perenime? Aga silmade värvi <strong>ja</strong> kinganumbrit? Kui tegemist<br />

on modelliagentuuriga, siis see võib olla täitsa va<strong>ja</strong>lik.<br />

Iga leitud atribuudi korral tuleb ka mõelda, kas leitud atribuut on seotud õige<br />

olemitüübiga. Näiteks loengu toimumise aeg ei ole õppejõu atribuut, sest<br />

õppejõud võib pidada loenguid erinevatel aegadel <strong>ja</strong> erinevates õppeainetes.<br />

Tellitud kauba kogus ei ole kauba atribuut, sest ühte kaupa võivad tellida<br />

paljud erinevad kliendid <strong>ja</strong> nendes tellimustes võib olla erinev kauba kogus.<br />

Iga leitud atribuudi korral tuleb ka mõelda, kas selle taga ei peitu iseseisev<br />

olemitüüp. Kui leitud "atribuudile" leiduvad veel omakorda atribuudid või<br />

soovitakse seda seosetüüpide kaudu siduda mõne teise olemitüübiga, siis<br />

mõistlik oleks see modelleerida eraldiseisva olemitüübina. Näiteks õppeainet<br />

õpetav õppejõud ei ole pigem õppeaine atribuut vaid eraldiseisev olemitüüp<br />

mille atribuudid on näiteks eesnimi, perenimi <strong>ja</strong> sünniaeg.<br />

Füüsilistele <strong>ja</strong> abstraktsetele objektidele vastavatel olemitüüpidel on sageli<br />

atribuudiks aeg. Näiteks üliõpilase on sünniaeg, õppekaval on loomise aeg <strong>ja</strong><br />

kinnitamise aeg.<br />

Sündmustele <strong>ja</strong> protsessidele vastavatel olemitüüpidel on kindlasti atribuudiks<br />

aeg. Sündmusel on toimumise aeg, protsessil on alguse aeg <strong>ja</strong> lõpu aeg.<br />

Kontseptuaalses andmemudelis kirjeldatakse kasuta<strong>ja</strong>le sisulist tähendust<br />

omavad atribuudid. See tähendab, et kontseptuaalses andmemudelis ei<br />

näidata surrogaatvõtmetele vastavaid atribuute.<br />

Oluline on rõhutada, et kontseptuaalses andmemudelis ei leita välisvõtme<br />

atribuute, sest välisvõtmed on seotud relatsioonilise mudeliga.<br />

Kontseptuaalse andmemudeli koostamisel aga ei peeta silmas ühtegi<br />

konkreetset andmemudelit. Kontseptuaalse andmemudeli põh<strong>ja</strong>l on võimalik<br />

koostada erinevaid andmebaasi tehnilisi kirjeldusi, mis põhinevad erinevatel<br />

andmemudelite. Näiteks objekt-orienteeritud andmebaasides luuakse seosed<br />

kasutades viitade kollektsioone <strong>ja</strong> mitte välisvõtmeid.<br />

Joonis 48 <strong>ja</strong> Joonis 49 esitavad ebakorrektseid olemi-suhte diagramme.<br />

Joonis 48 kohaselt on olemitüübis Tellimus nn. välisvõtme atribuut isikukood.<br />

Joonis 49 kohaselt on modelleeritud Isiku <strong>ja</strong> Tellimuse vaheline seosetüüp<br />

kasutades ainult atribuuti (isikukood). Joonis 50 esitab korrektse olemi-suhte<br />

diagrammi.<br />

Joonis 48 Ebakorrektse olemi-suhte diagrammi näide.<br />

70


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

Joonis 49 Ebakorrektse olemi-suhte diagrammi näide.<br />

Joonis 50 Seosetüüpide korrektne esitamine olemi-suhte diagrammil.<br />

Mitmeväärtuselise atribuudi puhul tuleb otsustada, kas modelleerida see:<br />

- atribuudina,<br />

- eraldi olemitüübina.<br />

Atribuutide otsimise käigus leitakse ka võimalikud tuletisatribuudid. Näiteks<br />

igal tellimusel on null või rohkem tellimuse rida. Olemitüübil Tellimus võib olla<br />

tuletisatribuut ridade_arv, mille väärtus näitab tellimusega seotud tellimuse<br />

ridade arvu.<br />

Connolly <strong>ja</strong> Begg (2002) soovitavad kõigepealt leida kasuta<strong>ja</strong>te nõuete põh<strong>ja</strong>l<br />

atribuutide nimekir<strong>ja</strong>. Seejärel tuleb hakata atribuute olemitüüpide juurde<br />

määrama. Kui üks atribuut kuulub mitme olemitüübi juurde, siis selle põhjus<br />

võib olla üks järgnevatest.<br />

• Oleme leidnud mitu olemitüüpi, mida saab üldistada. Näiteks nii olemitüübi<br />

Tööta<strong>ja</strong> kui ka Üliõpilane atribuut võib olla isikukood. Nende olemitüüpide<br />

üldistus on Isik ning isikukood peaks olema olemitüübi Isik atribuut.<br />

• Oleme leidnud olemitüüpide vahelise seosetüübi. Sellisel juhul tuleks<br />

atribuut seostada vaid ühe olemitüübiga ning tagada, et on loodud ka<br />

vastav seosetüüp. Näiteks nii olemitüübi Klient kui ka Tellimus atribuut<br />

võiks olla kliendi_perenimi. Sellisel juhul tuleks määrata kliendi_perenimi<br />

olemitüübi Klient atribuudiks ning lisada mudelisse seosetüüp, mis<br />

ühendab olemitüüpe Klient <strong>ja</strong> Tellimus.<br />

Sageli on raske otsustada kas modelleerida midagi olemitüübi, seosetüübi või<br />

atribuudina. Seetõttu võivad erinevad projekteeri<strong>ja</strong>d luua erinevaid mudeleid.<br />

Kogemused aitavad luua häid mudeleid. Teiste arenda<strong>ja</strong>te kogemustega<br />

tutvumiseks on kasulik uurida mustreid.<br />

Larman (2002) märgib domeenimudelite koostamisest kirjutades, et kui<br />

kahtled kas modelleerida midagi atribuudi või klassina, siis parem modelleeri<br />

see klassina. Sama nõuanne kehtib ka olemi-suhte diagrammi korral – kui<br />

kahtled kas modelleerida midagi olemitüübi või atribuudina, siis modelleeri<br />

see olemitüübina.<br />

71


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

7.2.4 Atribuutide tüüpide määramine<br />

Igale leitud atribuudile tuleb määrata tüüp. Tüüp on väärtuste hulk <strong>ja</strong> seeläbi<br />

kirjeldatakse võimalikud väärtused, mida atribuut võib omandada. Larman<br />

(2002) soovitab, et atribuutide tüübid võiksid põhiliselt olla lihtsad tüübid nagu<br />

stringitüüp, kuupäevatüüp või tõeväärtustüüp. Atribuudi dokumenteerimise<br />

juures on väga kasulik esitada üks või mitu selle atribuudi näidisväärtust.<br />

Näidisväärtused aitavad atribuudi tähendust paremini mõista.<br />

7.2.5 Unikaalsete identifikaatorite leidmine<br />

Iga leitud tugeva olemitüübi puhul tuleb määrata kindlaks üks või mitu<br />

unikaalset identifikaatorit. Unikaalne identifikaator hõlmab üks või mitu<br />

atribuuti nii, et nende atribuutide väärtused identifitseerivad unikaalselt iga<br />

vastavat tüüpi olemi.<br />

Kui olemitüüpi OT kuuluva olemi eksistents sõltub mõnest teisest olemist, siis<br />

on tegemist nõrga olemitüübiga. Sellise olemitüübi <strong>ja</strong>oks leitakse unikaalsed<br />

identifikaatorid alles andmebaasi loogilise disaini käigus.<br />

NB! Märkus. Harjutustundides kasutatakse CASE vahendit Rational Rose. Selle puuduseks<br />

on, et klassidiagrammi abil joonistatavas kontseptuaalses andmemudelis ei saa määrata<br />

unikaalseid identifikaatoreid nii, et neid arvestataks hiljem tabelite kirjelduste genereerimisel.<br />

Tabeli kirjelduse loomisel lisatakse igasse tabelisse automaatselt surrogaatvõtme veerg<br />

(selles veerus on unikaalsed, monotoonselt kasvavad arvulised väärtused). Seega tuleks<br />

kontseptuaalse andmemudeli juures dokumenteerida ainult sisulisi atribuute hõlmavad<br />

unikaalsed identifikaatorid <strong>ja</strong> pärast tabelite disaini juures asendada surrogaatvõtmed sisuliste<br />

võtmetega.<br />

Ideaalis peaks saama CASE vahendi abil kontseptuaalses andmemudelis kirjeldada iga<br />

olemitüübi kohta üks või mitu unikaalset identifikaatorit. Tabelite spetsifikatsiooni<br />

genereerimisel peaks saama määrata, millise unikaalse identifikaatori põh<strong>ja</strong>l luuakse<br />

primaarvõti.<br />

7.2.6 Mudelis olevate liiasuste eemaldamine<br />

Liiasuse kontrolli käigus vaadatakse üle üks-ühele (1:1) seosetüübiga seotud<br />

olemitüübid (vt. Joonis 51) <strong>ja</strong> otsustatakse, kas nende asemel ei võiks luua<br />

ühe olemitüübi (st. kas üks olemitüüp <strong>ja</strong> seosetüüp on üleliigsed) (Connolly <strong>ja</strong><br />

Begg, 2002). Uues olemitüübis oleksid kõik algsete olemitüüpide atribuudid.<br />

Antud juhul tuleks kaaluda, kas ei piisaks olemitüübist Kaup, millel on<br />

atribuudid nimetus <strong>ja</strong> kirjeldus.<br />

<br />

Kaup<br />

nimetus : String<br />

1<br />

1<br />

<br />

Kauba kirjeldus<br />

kirjeldus : String<br />

Joonis 51 1:1 seose näide.<br />

Liiasuste kontrolli käigus tuleb eemaldada ka üleliigsed seosetüübid.<br />

Seosetüüp on üleliigne, kui selle poolt kirjeldatavad andmed võib leida teiste<br />

seosetüüpide abil kirjeldatavate andmete põh<strong>ja</strong>l. Näiteks Joonis 52 esitatud<br />

seosetüüp osaleb olemitüüpide Üliõpilane <strong>ja</strong> Teadmiste kontroll vahel on<br />

72


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

üleliigne, sest seos konkreetse üliõpilase <strong>ja</strong> teadmiste kontrolli vahel tekib<br />

juba läbi õppimise. Üliõpilane ei tohi saata teadmiste kontrollile enda asemel<br />

kedagi teist.<br />

<br />

Üliõpilane<br />

1<br />

+kontrollitav 1 osaleb<br />

1<br />

0..*<br />

<br />

Õppimine<br />

1<br />

0..*<br />

1<br />

<br />

Õppeaine<br />

0..*<br />

0..*<br />

<br />

Teadmiste kontroll<br />

Joonis 52 Üleliigne seosetüüp.<br />

Kui säilitaksime seosetüübi osaleb, siis selle olemi-suhte diagrammi alusel<br />

loodud andmebaasis tuleb jõustada kitsendus, et iga teadmiste kontroll peab<br />

olema otse <strong>ja</strong> läbi õppimise seotud ühe <strong>ja</strong> sama üliõpilasega. Teisalt on<br />

mõningad päringud sellise mudeli alusel loodud andmebaasis lihtsamad.<br />

Näiteks kui soovime päringu tulemuses ühendada üliõpilase <strong>ja</strong> teadmiste<br />

kontrolli andmed, siis ei ole va<strong>ja</strong> päringu avaldises viidata relatsioonilisele<br />

muutu<strong>ja</strong>le/tabelile Oppimine.<br />

Kui taolisi liiasusi sisaldavate mudelite alusel luua andmebaas, siis esineb<br />

selles andmebaasis andmete liiasus. Näiteks oleks Joonis 84 alusel loodud<br />

andmebaasis võimalik tuletada väide üliõpilase teadmiste kontrollis osalemise<br />

kohta kahel erineval viisil.<br />

7.2.7 Mudeli kontroll<br />

Mudel peab olema kvaliteetne. Kuidas kontseptuaalse andmemudeli kvaliteeti<br />

kontrollida? Mudelit peab kontrollima nii sisulisest kui ka kasutatavuse<br />

aspektist.<br />

Kontseptuaalse andmemudeli koostamisega paralleelselt võidakse kirjeldada<br />

kasutusjuhte <strong>ja</strong> andmebaasioperatsioone. Kontseptuaalse andmemudeli<br />

kontrollimiseks tuleb selgitada, kas iga kasutusjuhu <strong>ja</strong><br />

andmebaasioperatsiooni läbiviimiseks on olemas va<strong>ja</strong>likud andmed. Selle<br />

kontrolli läbiviimiseks saab kasutada CRUD maatriksit.<br />

Samuti tuleb loodud mudel vaadata üle koos süsteemi tulevaste kasuta<strong>ja</strong>tega.<br />

Kui kontrollimise tulemusena ilmnevad probleemid, tuleb mudelit täiendada <strong>ja</strong><br />

kontrolli korrata.<br />

Kontseptuaalse andmemudeli sisuliseks kontrollimiseks võib vastata<br />

järgmistele küsimustele (vastus kõigile küsimustele peaks korrektse mudeli<br />

puhul olema "Jah").<br />

• Kas teadmine, mida mudel loob on süsteemi eesmärkide saavutamiseks<br />

piisav?<br />

73


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• Kas iga olemitüübi/atribuudi/seosetüübi poolt loodav teadmine on<br />

süsteemi <strong>ja</strong>oks oluline?<br />

• Kas semantika dokumendis on kirjeldatud kõigi olemi-suhte diagrammidel<br />

olevate olemitüüpide <strong>ja</strong> atribuutide semantika?<br />

• Kas kõigile semantika dokumendis kirjeldatud olemitüüpidele/atribuutidele<br />

leidub vastav olemitüüp/atribuut olemi-suhte diagrammis?<br />

• Kas olemitüübi/atribuudi definitsioon aitab olemitüübi/atribuudi poolt<br />

esitatavast mõistest paremini aru saada – kas Te olete peale selle<br />

definitsiooni läbilugemist targem kui enne lugemist?<br />

• Iga atribuudi puhul küsige endalt järgmisi küsimusi.<br />

• Kas see atribuut on selle olemitüübi atribuut?<br />

• Kas on leitud väärtused mida atribuut võib omada – määratud atribuudi<br />

tüüp?<br />

• Kas olete kindel, et atribuuti ei pea esitama iseseisva olemitüübina?<br />

• Kas tuletisatribuudid on diagrammil selgelt väl<strong>ja</strong> toodud?<br />

• Kas olemitüüpides ei eksisteeri atribuutide gruppe? (Nt. aadress1,<br />

aadress2 <strong>ja</strong> aadress3 olemitüübis Isik. Nende põh<strong>ja</strong>l saab luua uue<br />

olemitüübi Aadress <strong>ja</strong> seostada see olemitüübiga Isik.)<br />

• Kas puuduvad välisvõtme atribuudid?<br />

• Iga seosetüübi puhul küsige endalt järgmisi küsimusi.<br />

• Kas iga seosetüübi (v.a üldistusseosed) puhul on määratud tugevus <strong>ja</strong><br />

võimsus?<br />

• Kas igale seosetüübile on antud arusaadav <strong>ja</strong> seosetüüpi kirjeldav nimi<br />

igal pool kus seda on va<strong>ja</strong>?<br />

• Kas olemitüüpide rollid seosetüübi kontekstis on määratud igal pool kus<br />

seda on va<strong>ja</strong>?<br />

• Kui kahe olemitüübi vahel on mitu seosetüüpi, kas siis iga sellise<br />

seosetüübi juures on näidatud vähemalt ühe olemitüübi roll?<br />

• Kas seosetüübi juures määratud olemitüüpide rollid aitavad paremini<br />

mudelit mõista?<br />

• Kas iga üldistusseose puhul on määratud osaluskohustus <strong>ja</strong> kuuluvus?<br />

• Kas seosetüübid on diagrammil seotud välistava kaarega, seal kus seda<br />

on va<strong>ja</strong>?<br />

• Kas mudelist ei eksisteeri lehviku <strong>ja</strong> kuristiku probleeme?<br />

• Kas mudelist on eemaldatud liiasused?<br />

Mudelite koostamisel tuleb pöörata tähelepanu ka nende kasutatavusele.<br />

Mudel on kommunikatsioonivahend, mis aitab süsteemiarenduses osale<strong>ja</strong>tel<br />

oma ideid arusaadavaks muuta. Kui mudel on halvasti loetav, siis ta ei täida<br />

oma eesmärki. Millele tuleks pöörata tähelepanu olemi-suhte diagrammi<br />

koostamisel?<br />

• Pange ühele diagrammile 7+/-2 elementi (olemitüüpi).<br />

• Suurem diagramm <strong>ja</strong>otage väiksemateks (ülekattega) diagrammideks.<br />

Ülekate tähendab, et mõni olemitüüp/seosetüüp võib olla mitmel<br />

diagrammil. See aitab luge<strong>ja</strong>l neid diagramme seostada.<br />

• Olemitüüp võib olla esitatud mitmel diagrammil, kuid näidake<br />

olemitüübi atribuute ainult ühel diagrammil.<br />

• Tõstke kõige kesksematele <strong>ja</strong> olulisematele mõistetele vastavad<br />

olemitüübid esile teise värviga <strong>ja</strong>/või suurema fondiga kui ülejäänud<br />

olemitüübid. Va<strong>ja</strong>dusel kasutage esiletõstmiseks rasvast teksti või<br />

74


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

rasvaseid jooni. Samas ärge muutke diagrammi kirjuks nagu<br />

pühademuna.<br />

• Kasutage projekti piires ühesuguseid kujundeid (nt. ristkülik olemitüübi<br />

esitamiseks).<br />

• Olemitüüpide nimed võiksid olla ainult ainsuses.<br />

• Mudeli koostamisel kasutage ühte keelt (näiteks eesti või inglise), aga<br />

mitte mitut keelt läbisegi.<br />

• Üldistusseose kolmnurk (mis on suunatud üldisema mõiste poole)<br />

peaks olema alati suunaga üles. See tagab, et ülatüüp on diagrammil<br />

esitatud ülalpool kui selle alamtüübid.<br />

• Hoiduge väga pikkadest joontest <strong>ja</strong> diagonaaljoontest.<br />

• Hoiduge joonte ristumisest.<br />

• Vältige olukorda, kus seosetüüpi tähistav joon ristub olemitüübi<br />

tähisega nii, et jääb mulje nagu oleksid vastav seosetüüp <strong>ja</strong> olemitüüp<br />

seotud (kuigi nad tegelikult ei ole).<br />

7.3 Objekti-rolli modelleerimine<br />

Nagu eelnevalt öeldud, pole olemi-suhte diagramm sugugi mitte ainuke<br />

võimalik diagrammi tüüp andmebaasi kontseptuaalse struktuuri kirjelduse<br />

esitamiseks.<br />

Ruum<br />

sisaldub/sisaldab<br />

Hotell<br />

(hotelli_nr)<br />

U<br />

Omab / Iseloomustab<br />

identifitseeritakse/identifitseerib<br />

Ruumi nr.<br />

Nimi<br />

Joonis 53 ORM diagrammi näide.<br />

• Tuntakse ka faktidel põhineva modelleerimisena. Projekteeri<strong>ja</strong> paneb kir<strong>ja</strong><br />

elementaarfakte, st. fakte mida ei saa enam <strong>ja</strong>gada väiksemateks<br />

faktideks. Ta võib selleks kasutada diagrammi või teksti. Iga selline fakt on<br />

tegelikult ärireegel.<br />

Faktitüüpide näited.<br />

• Hotell sisaldab ruumi.<br />

• Ruum omab ruumi numbrit<br />

75


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

• Hotelli identifitseerib nimi.<br />

• Mitmes hotellis võib olla ühesugune ruumi number.<br />

Faktitüüp on tegelikult lausend.<br />

• Võimaldab diagrammil visuaalselt esitada rohkem infot kui olemi-suhte<br />

diagramm.<br />

• Ei kasutata atribuudi mõistet. See on tegelikult eelis, sest sageli tekib<br />

modelleeri<strong>ja</strong>l küsimus kas modelleerida mõni reaalse maailma üldistus<br />

olemitüübi või atribuudina. See muudab mudeli ebastabiilseks, sest mingil<br />

hetkel võidakse otsustada modelleerida olem atribuudina või vastupidi.<br />

• Lisaks diagrammil esitatavatele faktitüüpidele esitatakse ka antud tüüpide<br />

faktide näited. See võimaldab kasuta<strong>ja</strong>tel mudelit paremini hinnata <strong>ja</strong><br />

sellest aru saada. Näidisfakt tähendab seda et fakti esitatav väide<br />

esitatakse koos näidisväärtustega. Näiteks: "Nii hotellis Viru kui ka Olümpia<br />

võib olla ruum number 212".<br />

• Modelleerimisvahendite poole pealt, mis seda kasutada võimaldavad võiks<br />

mainida MS Visiot.<br />

• Täpsemalt võib lugeda: http://www.orm.net või Terry Halpini raamatust:<br />

Halpin, T., 2001. Information Modeling and Relational Databases. From<br />

Conceptual Analysis to Logical Design. Morgan Kaufman Publishers, San<br />

Francisco.<br />

8. Mõisted<br />

Eesti keeles<br />

Andmebaasi arendamise metoodika<br />

Ainevaldkonna analüüs<br />

Strateegiline analüüs<br />

Detailanalüüs<br />

Kontseptuaalne andmebaasi disain<br />

Süsteemi tükeldamine<br />

(dekomponeerimine)<br />

Pädevusala allsüsteem<br />

Funktsionaalne allsüsteem<br />

Register<br />

Kasutusjuhtude mudel<br />

Olemi-suhte diagramm<br />

Andmebaasioperatsiooni leping<br />

Eeltingimus<br />

Järeltingimus<br />

Seisundidiagramm<br />

Olekudiagramm<br />

Lehviku probleem<br />

Kuristiku probleem<br />

Inglise keeles<br />

Database development methodology<br />

Subject area analysis<br />

Strategical analysis<br />

Detailed analysis<br />

Conceptual database design<br />

Decomposition<br />

Area of competence<br />

Functional subsystem<br />

Data subsystem, register<br />

Use-Case model<br />

Entity-relationship diagram<br />

Contract of database operation<br />

Precondition<br />

Postcondition<br />

State-transition diagram<br />

Connection trap<br />

Fan-trap<br />

Chasm-trap<br />

76


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

9. Kasutatud mater<strong>ja</strong>lid<br />

© Erki Eessaar<br />

1. Andmekogude seadus [WWW]<br />

https://www.riigiteata<strong>ja</strong>.ee/ert/act.jsp?id=745339 (03.04.2007)<br />

2. Barker, R., 1990. CASE Method: Entity Relationship Modelling. Addison-<br />

Wesley Professional.<br />

3. Baskerville, R. & Pries-Heje, J., 2001. Racing the e-bomb: how the internet<br />

is redefining information systems development methodology // Realigning<br />

research and practice in information systems development The social and<br />

organizational perspective. IFIP TC8/WG8.2 Working Conference / N.L.<br />

Russo, B. Fitzgerald, J.I. DeGross. Boston : Kluwer Academic Publishers,<br />

2001. p. 49 – 68.<br />

4. Cockburn, A., 1997. The Methodology Space. Human and Technology.<br />

(WWW)<br />

http://members.aol.com/acockburn/papers/methyspace/methyspace.htm<br />

(14.03.2001)<br />

5. Codd, E. F. 1979. Extending the Database Relational Model to Capture<br />

More Meaning. ACM TODS 4, No. 4 (December 1979)<br />

6. Connolly, T. M. & Begg, C. E., 2002. Database systems. A Practical<br />

Approach to Design, Implementation and Management. Third Edition.<br />

Pearson Education. 1236 p.<br />

7. Chisholm, M., 2000. Managing Reference Data in Enterprise Databases:<br />

Binding Corporate Data to the Wider World. Morgan Kaufmann. 387 p.<br />

8. Date, C. J., 2003. An Introduction to Database Systems. Eighth Edition.<br />

Addison Wesley. 983 p.<br />

9. Eesti standard EVS-ISO/IEC 2382. Infotehnoloogia. Sõnastik. Lõppkavand<br />

(WWW) http://www.keeleveeb.ee (26.03.2008)<br />

10.Eriksson, H.-E. & Penker, M., 2000. Business Modeling with UML. Johhn<br />

Wiley & Sons, Inc. 459 p.<br />

11.Eriksson, H.-E., Penker, M., Lyons, B. & Fado, D., 2004. UML 2 Toolkit.<br />

Wiley Publishing. 511 p.<br />

12.Evitts, P., 2000. A UML Pattern Language. Macmillan Technical<br />

Publishing.<br />

13.Fowler, M., 2007. UMLi kontsentraat. Objektmodelleerimise standardkeele<br />

UML 2.0 lühijuhend. 3. redaktsioon. Cybernetica.<br />

14.Halpin, T., 2001. Information Modeling and Relational Databases. From<br />

Conceptual Analysis to Logical Design. Morgan Kaufman Publishers, San<br />

Francisco.<br />

15.Hoberman, S., 2002. Data Modeler's Workbench: tools and techniques for<br />

analysis and design. Wiley Computer Publishing. 472 p.<br />

16.Kuusik, R., 2000. Infosüsteemi isearendamise toimimismudel<br />

infoühiskonnas // A & A (2000) nr. 3, lk. 14-22.<br />

17.Larman, C., 1997. Applying UML and patterns : an introduction to objectoriented<br />

analysis and design. Upper Saddle River (N.J.) : Prentice Hall<br />

PTR. 507 lk.<br />

18.Larman, C., 2002. Applying UML and patterns : an introduction to objectoriented<br />

analysis and design, Second Edition, Prentice Hall, Upper Saddle<br />

River (N.J.). 627 lk.<br />

19.Leis, P., 2001. Agiilmetoodikad // A & A (2001) nr. 4.<br />

20.Mikli, T., 1999. Sissejuhatus infosüsteemidesse. Tallinna Tehnikaülikool.<br />

77


TTÜ: Andmebaaside projekteerimine.<br />

Strateegiline analüüs <strong>ja</strong> detailanalüüs (2012)<br />

© Erki Eessaar<br />

21.Miliauskaite, E. & Nemuraite, L. 2005. Representation of integrity<br />

constraints in conceptual models. Information Technology And Control,<br />

Kaunas, Technologi<strong>ja</strong>, 2005, Vol.34, No.4, pp. 355 – 365.<br />

22.Modeling Methodologies (WWW) http://www.aisintl.com/index.html<br />

(21.02.2002)<br />

23.Moriarty, T., 2001. Universal Acceptance. Look beyond unfamiliar words to<br />

see a better description of your business. Intelligent Enterprise Magazine,<br />

September 18, 2001.<br />

24.Muller, R. J., 1999. Database Design for Smarties. Using UML for Data<br />

Modeling. Morgan Kaufmann Publishers. 442 p.<br />

25.Robertson, S. & Robertson, J., 1999. Mastering the Requirements<br />

Process. Addison-Wesley.<br />

26.Silverston, L., 2001a. The Data Model Resource Book: A Library of<br />

Universal Data Models for All Enterprises. Revised Edition. Vol. 1. Wiley<br />

Computer Publishing.<br />

27.Silverston, L., 2001b. The Data Model Resource Book: A Library of<br />

Universal Data Models by Industry Types. Revised Edition. Vol. 2, Wiley<br />

Computer Publishing.<br />

28.Simsion, G. 2007. Data Modeling Theory and Practice. Technics<br />

Publications, LLC, New Jersey.<br />

29.Sowa, J. F. & Zachman, J. A., 1992. Extending and formalizing the<br />

framework for information systems architecture. IBM Systems Journal Vol.<br />

31, No. 3 (Jun. 1992), pp. 590-616.<br />

30.Teorey, T. J., Yang, D. & Fry, J. P., 1986. A logical design methodology for<br />

relational databases using the extended entity-relationship model. ACM<br />

Comput. Surv. Vol. 18, No. 2 (Jun. 1986), pp. 197 – 222.<br />

31.Vendelin, J., 2003. Rakenduste loomine andmebaasiga MS Access.<br />

Tallinna Tehnikaülikool, Informaatikainstituut. 60 lk.<br />

32.Wikipedia [WWW] http://en.wikipedia.org/wiki/Code_and_fix (21.03.2004)<br />

78

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

Saved successfully!

Ooh no, something went wrong!