Loogilise mudeli loomise läbimäng
Andmebaasi vajadus
Tuletame meelde, et andmebaasi loomine algab ideest. Oletame, et meil on tulnud idee luua uus veebikeskkond Eurovisiooni lauluvõistluste jaoks. Veebikeskkonda hakkavad inimesed kasutama mitmesugustel põhjustel. Näiteks on kasutajad, kes tahavad lihtsalt uudishimust vaadelda Eurovisiooni tulemusi ja osalenud riike, laule jne. Teisalt on ka kasutajaid, kes sooviksid veebikeskkonnast saada olulist infot, et ennustada ette järgmiste võistluste tulemusi.
Kasutajate soovid
Eeldame, et on läbi viidud vestlus eelmainitud kasutaja gruppide esindajatega ja kogutud kokku küsimused, millele nad sooviks vastust leida uues Eurovisiooni veebikeskkonnas:
- Mis riikides, mis linnades (kas pealinnas) ja millal on lauluvõistlusi peetud?
- Mis riigid on osalenud Eurovisioonil ja saanud ka finaali?
- Millise koha on mis aastal mingi riigi laul saanud ja palju on antud punkte finaalis?
- Kuidas on laulu kohal seos riigi suuruse ja majandusega (SPKga)?
- Mis keeles laule on esitatud eri riikide poolt?
- Kes on esitanud laule, mis riiki esindades (kas sünniriiki) ja kes on käinud korduvalt Eurovisioonil solistina?
- Kui pikad on olnud laulud?
- Millise järjekorranumbri all on esitatud võidu toonud laulud või millised jäänud viimaseks?
- Kuidas on seotud laulu saavutatud koht esitaja soo ja vanusega?
- Millised on sellise andmebaasi nõuded?
Taust
- Peetakse aastast 1956.
- Eurovisioon toimub kord aastas.
- Iga riik esitab ühe laulu.
- Alates 1999 pole keelenõuet. On esitatud laulu ka väljamõeldud keeles (näiteks Belgia 2003. aasta laul "Sanomi"), 2016 Ukraina laul on inglise ja tatari keeles.
- Võitjaks üks riik (v.a. 1969, mil viigi korral kuulutati neli riiki võitjateks). Alates 2003. aastast täpsed reeglid viigi korral toimimiseks.
- Esitaja solist, duett, trio või ansambel. Esitajad ei pea olema samast riigist.
Eurovisiooni kohta saab lugeda veel siit.
Millised olemid leiduvad?
Kui eelnevalt on läbi viidud intervjuud tulevaste kasutajatega ja nende soovid on hästi kaardistatud, siis on olemite tuvastamine võrdlemisi lihtne. Tuleks vaadelda neid samu soove ja märkida ära seal potentsiaalsed olemid. Olemeid tuvastades tuleks mõelda ka sellele, kas tegu on ikka olemi või hoopiski selle tunnusega. See ei ole aga alati väga lihtne ning on tavaline, et erinevad inimesed leiavad erinevad olemid.
Märgime ära tulevaste kasutajate soovides olemid:
- Mis riikides, mis linnades (kas pealinnas) ja millal on lauluvõistlusi peetud?
- Mis riigid on osalenud Eurovisioonil ja saanud ka finaali?
- Millise koha on mis aastal mingi riigi laul saanud ja palju on antud punkte finaalis?
- Kuidas on laulu kohal seos riigi suuruse ja majandusega (SPKga)?
- Mis keeles laule on esitatud eri riikide poolt?
- Kes on esitanud laule, mis riiki esindades (kas sünniriiki) ja kes on käinud korduvalt Eurovisioonil solistina?
- Kui pikad on olnud laulud?
- Millise järjekorra numbri all on esitatud võidu toonud laulud või millised jäänud viimaseks?
- Kuidas on seotud laulu saavutatud koht esitaja soo ja vanusega?
Seega tuvastatud olemid on järgmised:
- Laulud
- Lauljad
- Võistlused
- Riigid
Tihti võib hiljem ilmneda, et mõnda olemit ei suudetud tuvastada, aga kuni andmebaas pole reaalselt veel valmis tehtud, siis on lihtne tagasi tulla ja see lisada.
Mis oleks nende olemite tunnused?
Tunnuseid kirja pannes tuleks mõelda sellele, et mida on vaja kasutajale näidata iga olemi kohta ja mis andmeid selleks vaja on, et seda infot saaks kuvada. Seega jällegi tulevad kasuks kasutajatelt kokku kogutud soovid.
Riigid
Kui uurida eelnevalt välja toodud küsimusi, millele kasutajad sooviksid veebirakendusest vastuseid leida, siis on näha, et olem "Riigid" esineb neis lausetes kuues kohas. Neid kohti tuleks nüüd vaadata sellise pilguga, et mida peaks teadma nende riikide kohta. Näiteks vaatleme järgnevat küsimust:
Mis riikides, mis linnades (kas pealinnas) ja millal on lauluvõistlusi peetud?
Sellest kasutaja soovist saab teada, et peab teadma riigi pealinna , sest vastasel korral ei oskaks öelda, kas võistlus toimus pealinnas või mitte. Ja loomulikult peaks teadma ka riigi enda nime. Seega kaks tunnust leitud! Vaatame edasi...
Kuidas on laulu kohal seos riigi suuruse ja majandusega (SPKga)?
Siit saab teada, et riikide kohta peaks teadma riigi suurust ja SKP-d. Tunnus "suurus" on aga mitmeti mõistetav termin. Kas on mõeldud pindala? Või hoopis rahvaarvu? Seda, mida täpsemalt mõeldud on, tuleks küsida kasutajatelt. Selle võimaluse puudumisel võib lisada ka mõlemad, nii pindala kui ka rahvaarvu. Valib hetkel selle viimase variandi ja lisab mõlemad.
Kui aga kasutajatelt sai siiski täpsustusi ja tuli välja, et mõeldud oli rahvaarvu, siis ei tohiks seda ikkagi lisada tunnusena "suurus", vaid tunnusena "rahvaarv". Nagu enne mainitud, siis tunnuse nimetused peaksid olema võimalikult täpsed.
Leidub veel kohti, kus mainitakse riiki, näiteks "...mis aastal mingi riigi laul..." ja "Kes on esitanud laule, mis riiki esindades...", aga nendes kohtades ei kirjeldata riigi enda tunnuseid, vaid juba seoseid varasemalt leitud teiste olemitega ja neid eraldi tunnustena olemisse "Riigid" ei lisa. Seega rohkem tunnuseid ei esine ja sellega on riikide tunnuste tuvastamine lõppenud.
Võistlused
Võistluste tunnused leiab kõik ühest lausest.
Mis riikides, mis linnades (kas pealinnas) ja millal on lauluvõistlusi peetud?
Siit saab teada, et võistluste kohta peab teadma riiki ja linna, kus võistlus toimub ning ka seda, et millal võistlus toimub. Kuna "riik" on meil juba eraldi olemina, siis seda hetkel tunnuseks ei lisa. Selle, et kus riigis võistlus toimub saab teada, kui loob "riigi" ja "võistluse" vahel seose, sellest juttu allpool. Seega leidsime kaks tunnust: linn ja toimumisaeg.
Lauljad
Lauljaid mainiti kahes lauses:
- Kes on esitanud laule, mis riiki esindades (kas sünniriiki) ja kes on käinud korduvalt Eurovisioonil solistina?
- Kuidas on seotud laulu saavutatud koht esitaja soo ja vanusega?
On ilmne, et üheks tunnuseks on laulja nimi. Peale selle peaks teadma, kas laulja on solistina esineja või mitte. Selle jaoks võiks võtta kasutusele tunnuse "ansambel", mille väärtusteks oleks siis hiljem BIT andmetüüp, ehk 0 või 1 (false/true). Esimesest lausest tuleb välja ka veel "sünniriik", et teaks, kus on laulja sündinud. Seda hetkel aga tunnusena ära ei märgi, sest jällegi saab selle teada, kui loob olemi "Lauljad" ja "Riigid" vahel seose. Kui teist lauset vaadelda, siis sealt leiab kaks tunnust, mida peaks laulja kohta teadma. Laulja soo võib jätta meelde tunnusena "sugu", aga vanust ei tohiks salvestada lihtsalt tunnusena "vanus". Vanuse asemel peaks lisama hoopiski tunnuse "sünniaeg". Seda sellepärast, et kui on teada, millal võistlused toimusid, siis saab selle kaudu alati arvutada, kui vana keegi oli, kui ta mingil võistlusel osales. Nii tehes ei pea iga võistluse juures salvestama mingit lauljat andmebaasi topelt lihtsalt sellepärast, et kui ta teist korda Eurovisioonil osales, oli ta juba vanem.
Oleme leidnud laulja kohta kokku nüüd neli tunnust: nimi, sünniaeg, sugu ja ansambel.
Laulud
Laule mainitakse järgmistes lausetes:
- Millise koha on mis aastal mingi riigi laul saanud ja palju on antud punkte finaalis?
- Kuidas on laulu kohal seos riigi suuruse ja majandusega (SPKga)?
- Mis keeles laule on esitatud eri riikide poolt?
- Kui pikad on olnud laulud?
- Millise järjekorra numbri all on esitatud võidu toonud laulud või millised jäänud viimaseks?
- Kuidas on seotud laulu saavutatud koht esitaja soo ja vanusega?
Laulude puhul peab läbi vaatama rohkem lauseid. Kohe paistavad välja kolmandast ja neljandast lausest lihtsad tunnused nagu keel, kestus ja kindlasti ka laulu pealkiri.
Esimese lause põhjal peaks lisama tunnused nagu "koht", "punkte" ja "finaalis". "Finaalis" tunnus oleks BIT andmetüübiga tunnus, kus siis salvestatakse väärtust 0 ja 1 (esines finaalis/ei esinenud finaalis). Kui teab saavutatud punkte ja seda, kas esines finaalis, siis saab ka kasutaja antud küsimusele vastuse leida.
Kui vaadelda nüüd järgmist lauset, siis tahetakse teada, mis seos on riigi suurusel ja majandusel sellega, et mitmenda koha laul saavutab. Laulu koha jaoks on meil juba tunnus olemas ning riik on meil esindatud juba eraldi olemina, ehk siit tunnuseid juurde ei tule.
Eelviimasest lausest saab teada, et on vaja ka tunnust "esinemis_jrk", et teada, mitmendana laul esines. Seda, kas laul võitis või jäi viimaseks, saab juba teada tunnuse "koht" kaudu. Esikoha väljaselgitamine on lihtne, aga kui tahame teada, kas laul jäi viimaseks, siis peab teadma osalenud laulude koguarvu. Andmebaasis on aga olemi eksemplare lihtne kokku loendada ja seega seda ei pea eraldi tunnusena kuskile lisama.
Eraldi selle tunnuse lisamine oleks ka äärmiselt ebaefektiivne, sest iga kord, kui võistlusele lisatakse laule juurde, siis peab käima ka uuendamas selle tunnuse väärtust.
Viimasest lausest ei selgu ühtegi uut tunnust ja seega oleme tuvastanud kokku 7 tunnust: keel, kestus, pealkiri, koht, punkte, finaalis, esinemis_jrk.
Vahekokkuvõte
Oleme nüüd teinud juba suure töö ära ja tuvastanud olemid ja nende tunnused. Viimaseks on jäänud nende omavaheliste seoste loomine.
Millised olemite seosed meil on?
Olemi tunnuste tuvastamise käigus avastasime nii mõnegi "tunnuse", mida ei olnud mõtet tunnuseks lisada, sest selle jaoks oli meil juba eraldi olem. Selline olukord esines järgmiste olemite vahel:
- Laulud-Võistlused
- Laulud-Riigid
- Laulud-Lauljad
- Võistlused-Riigid
- Riigid-Lauljad
Seega kokku on meil viis seost, aga oleks vaja veel kindlaks teha, mis tüüpi seostega tegu on. Seda saab lihtsalt teha, kui kirjutada seosed sõnadega lahti.
- Iga laul astub üles ühel võistlusel ja ühel võistlusel võib üles astuda mitu laulu. N:1 seos
- Iga laul esindab ühte riiki ja ühte riiki saab esindada (erinevatel aastatel) mitu laulu. N:1 seos
- Igal laulul võib olla mitu lauljat ja iga laulja võib esitada (erinevatel aastatel) mitut laulu. N:M seos
- Iga võistlus toimub ühes riigis ja ühes riigis (erinevatel aastatel) võib toimuda mitu võistlust. N:1 seos
- Iga laulja on sündinud ühes riigis ja ühes riigis võib olla sündinud mitu lauljat. N:1 seos
Nüüd on lausete abil seosed ja seoste tüübid tuvastatud ning on jäänud üle veel ainult olemid nende abil siduda. Seoste lisamisel olemitele saab tulemuseks sellise mudeli, loogilise mudeli:
<< Loogiline mudel | Relatsiooniline mudel >> |