Loogiline mudel
Mis on loogiline mudel?
Andmebaasi implementeerimiseks luuakse see esialgu kavandina diagrammi kujul. Andmebaasi loomise protsessi käigus tekib kaks mudelit- loogiline mudel ja relatsiooniline mudel. Mõlemad mudelid kujutavad graafina loodava andmebaasi struktuuri, aga neil on siiski oluline erinevus. Loogiline mudel on abstraktne mudel päriselt loodavast andmebaasist. See mudel kirjeldab ära vajalikud olemid, nende tunnused, nende vahelised seosed ja ei rohkemat muud. Neid tutvustatakse selles peatükis.
Päris andmebaasis on veel tunnuste tüübid, primaarvõtmed, välisvõtmed, vahetabelid jne. Algoritmi järgides saab teisendada loogilise mudeli relatsiooniliseks mudeliks, mis kirjeldab ka selle ära. Relatsiooniline mudel on juba palju detailsem ja see kujutab andmebaasi täpselt sellisena nagu ta päriselt on. Sellest mudelist räägib lähemalt aga järgmises peatükis.
Skeemil on näha näidet loogilisest mudelist. Selles peatükis uurime, kuidas sellist mudelit koostada ja mida tähendavad erinevad märgistused antud mudelis.
Olem ja selle tunnused
Enne mudeli koostamist, peab teostama nõuete analüüsi. Analüüsi läbi viimiseks peab enne teadma, millest loogiline mudel üldse koosneb. Mudel koosneb olemitest, olemi tunnustest ja olemi vahelistest seostest. Olem on mingi asi, isik, koht, objekt või ükskõik mingi muu ese, mille kohta soovitakse infot salvestada. Näiteks võib olla olemiks "Raamatud", kui me tahaks salvestada infot raamatute kohta ja "Tudengid", kui soovida salvestada infot tudengite kohta. Olemid võivad ka lõikuda omavahel. Näiteks kui on kaks olemit "Raamatukogu töötajad" ja "Laenutajad", siis on tõenäoline, et mõni töötajatest on ka laenutaja. Olemitel on ka tunnused. Tunnused on need asjad, mida soovitakse mingi olemi kohta salvestada. Näiteks võib olla tudengi tunnusteks nimi, matriklinumber, keskmine hinne jne. Olemite vahelised seosed on selleks, et saaks lisada ühe olemi nii-öelda tunnuseks teist olemit. Näiteks, kui on kaks olemit "Tudengid" ja "Kursused". Tudeng osaleb mingitel kursustel ja selleks luuakse kahe olemi vahel seos. Seostest räägib lähemalt selles peatükis hiljem ja seoste implementeerimist tutvustatakse relatsioonilise mudeli peatükis.
Andmebaasis kujutatakse olemeid tavaliselt tabelitena, kus tulpadeks on olemi tunnused. Seda tehakse ka SQL Anywhere-is. Tabeli igat rida kutsutakse olemi eksemplariks. Alloleval pildil on näha, milline näeks välja olem "Lauljad" tabeli kujul. Sellel olemil on kolm olemi eksemplari. Kusjuures, ükski olemi eksemplar ei tohi olla identne mõne teise olemi eksemplariga.
Seega meenutavad olemid andmebaasis Exceli tabeleid. Samas ei tohi neid kindlasti samaväärseks pidada. Näiteks andmebaasis saab tunnuse juurde salvestada ainult seda tüüpi andmeid nagu tunnus lubab. Seega ei saa tekkida tulpa, kus on salvestatud nii tekstilisi väärtusi kui ka arvulisi väärtusi.
Tihti aetakse segamini kaks terminit "tunnus" ja "andmed". Tunnus on olemit iseloomustav näitaja, mida saab mõõta ja vaadelda. Ülaltoodud näite puhul on tunnusteks nimi, sünniaeg, sugu ja ansambel. Andmeteks on aga konkreetsed väärtused nagu "Juhan Maasikas", "Anu Mustikas", "25.05.1990" jne.
Tunnuste nimetused peaksid olema võimalikult täpsed ja neid lugedes peaks saama koheselt aru, mis tunnusega tegu on. See lihtsustab palju tulevikus andmebaasiga seotud tegevusi, st et andmebaasi haldav inimene ei pea minema alatasa dokumentatsiooni lugema ja vaatama, mida tähendab näiteks tunnus "a" või "b".
AVA TEST
Nõuete analüüs
Mudeli koostamiseks on vaja läbi viia nõuete analüüs. Analüüsi käigus tuleb selgelt ära sõnastada probleem, mida loodav andmebaas lahendama hakkab. Seda on kõige lihtsam teha, kui vestelda alguses tulevaste kasutajatega ja uurida neilt, mida nemad loodavalt süsteemilt saada tahaks. Vestluse käigus peaksid selguma detailsed nõuded, mida loodav andmebaas peab teha võimaldama. See tähendab, et kui kasutaja ütleb, et ta tahab näha statistikat, siis tuleks kindlasti uurida täpselt välja, millist statistikat ta näha tahab.
Kui lahendatav probleem on selgelt ära sõnastatud ja tulevaste kasutajate nõuded on kaardistatud, siis saab teha ka ülevaate, mida andmebaas sisaldama peab. Nii saab teada mis olemid on, mis on nende tunnused ja kuidas nad omavahel seotud on.
Näiteks, kui luuakse andmebaas lauluvõistluste jaoks, siis tõenäoliselt soovitakse seal hoida infot laulude, esinejate ja võistluste kohta. Ühegi lahendatava probleemi korral ei ole see loetelu üheselt määratud ja salvestama peaks sellist infot, mis on kohane just konkreetsele ülesandele. Tihti muutub see loetelu ka peale seda, kui andmebaas juba valmis on. Lihtsam on aga teha alguses korralik analüüs, et hiljem ei peaks olulisi muudatusi tegema. Seega on tähtis uurida ülesande tausta, siinkohal, kuidas lauluvõistlused täpselt toimuvad? Kas on võimalik, et riiki esindab mitu laulu? Kas võistlus saab korraga toimuda mitmes riigis? Kas riiki saab esindada mitu lauljat?
Olemite tunnusteks saavad mingid andmeväljad, mida on vaja, et rahuldada kasutajate soove. Näiteks lauljatel võivad olla tunnusteks: nimi, sünniaeg, sugu, ansambel ja sünniriik. Lauludel aga pealkiri, keel, kestus jne. Nende tunnuste abil saab pakkuda kasutajatele infot laulude ja lauljate kohta. Tunnuseid tuleks valida sellepõhjal, mida tulevased kasutajad nõudnud on. Näiteks võib lauljate puhul lisada tunnuse "juuksevärv", aga kui ükski kasutaja selle info nägemist nõudnud pole, siis ei ole mõtet seda tunnust ka andmebaasi lisada.
Kui analüüsi tulemusena on leitud sobivad olemid, siis tuleks neid omavahel võrrelda ja järgida järgmisi soovitusi:
- Olemeid tuleks omavahel võrrelda ja otsustada, kas mõned olemid saaks muuta üldisemaks, et ei tekiks andmete dubleerimist. Võib juhtuda, et mitmel olemil on palju kattuvaid tunnuseid. Näiteks, kui sooviks salvestada andmebaasi lauljaid ja laule ning lauludel on üheks tunnuseks "autor". Sellises olukorras võiks luua lauljatele ja autoritele ühise olemi, sest tõenäoliselt paljud tunnused neil kattuks. Selle kas konkreetne olemi eksemplar on laulule autoriks või esitajaks määrab ära nende vaheline seos. Võib olla ka mõlemat korraga.
- Kui mõnel olemil on üksikuid kattuvaid tunnuseid, siis tuleks need tunnused esitada eraldi olemitena. Näiteks, olgu olukord, kus olemil "Laulud" on tunnus nimega "riik", mis näitab, millist riiki antud laul esindab ja olemil "Võistlused" on tunnus "riik", mis ütleks, mis riigis võistlus toimub. Sellises olukorras oleks mõistlik luua eraldi olem "Riigid" ja luua seosed antud olemite vahel.
- Kui mingi tunnus on selline, mis koosneb mitmest alamtunnusest, siis peaks samuti sellele eraldi olemi looma. Näiteks tunnus "aadress" koosneb mitmest väiksemast tunnusest nagu "riik", "maakond", "asula", "tänav", "majanumber" jne. Seega oleks mõistlik luua uus olem "Aadress" ja selle olemi tunnusteks on need samad alamtunnused. Seda on mõistlik teha olukorras, kus alamtunnuseid on rohkem ja see tunnus esineb mitmes olemis. Näiteks võib ka tunnus "aadress" esineda nii isikute olemis kui ka ettevõtete olemis.
Võtmed
Andmebaasis peaks olema iga olemi eksemplar identifitseeritav. See tähendab, et olemil peab olema selline tunnus või tunnuste komplekt, mille väärtused on kindlasti unikaalsed igal olemi eksemplaril. Seda kutsutakse võtmeks. Näiteks võib olla selleks matriklinumber, isikukood, auto registreerimisnumber. Võib ka luua uue tunnuse ja lasta andmebaasil endal genereerida sellele tunnusele väärtused. Võtmeks ei saa aga olla inimese nimi, sünnikuupäev või keel, sest need ei ole unikaalsed väärtused, st et mitu olemi eksemplari võib omada sama väärtust selle tunnuse puhul. Võtmeid on vaja ka selleks, et andmebaasis saaks tekitada seoseid olemite vahel. Selles peatükis tutvustatakse seoseid, aga seda, kuidas võtmete abil andmetes reaalselt seoseid luua, käsitletatakse relatsioonilise mudeli peatükis.
AVA TEST
Seosed
Kui olemid on loodud, siis peab olema võimalik nende vahel ka seoseid luua. Seosed, nagu nimigi ütleb, seob olemeid omavahel mingi tegevusega. Näiteks laulud esindavad riiki ja laule esitavad lauljad. Kusjuures tasub ära märkida, et olem võib olla ka seoses iseendaga. Seda kutsutakse rekursiivseks seoseks. Näiteks võib osakond olla seotud osakonnaga (osakonna sees on väiksemad osakonnad).
Seoseid on kolme liiki:
- 1:1 seos
- 1:N seos
- N:M seos
Seoseid on lihtsam määrata, kui need lausetena kirja panna. Näiteks:
- Ühel riigil on üks lipp ja üks lipp kuulub ühele riigile. 1:1 seos
- Ühes riigis võib olla sündinud mitu lauljat ja iga laulja saab olla sündinud ühes riigis. 1:N seos
- Üks laulja võib esitada mitut laulu ja ühel laulul võib olla mitu esitajat. N:M seos
<< Sissejuhatus andmebaasidesse | Loogilise mudeli loomise läbimäng >> |
Relatsiooniline mudel >> |