31
Kontseptuaalne andmemudel Olem-seos mudel Cheni tähistus

Kontseptuaalne andmemudel Olem-seos mudel Cheni tähistus

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Kontseptuaalne andmemudelOlem-seos mudel

Cheni tähistus

Andmemudel

Praktikas nimetatakse andmemudeliks konkreetse andmebaasi struktuuri kirjeldust.

Ingliskeelseks mõisteks on schema: andmebaasi skeem.

Andmebaasi struktuuri loomisel lähtutakse andmebaasihaldussüsteemi poolt toetatavast andmemudelist (meie kasutame relatsioonilist mudelit).

Kontseptuaalne andmemudelKontseptuaalne andmemudel (conceptual data model), ka infoloogiline mudel, on mittetehniline mudel, mis illustreerib säilitatavaid põhiandmeid ja nende vahelisi seoseid kasutajate (klientide) vaatepunktist.

Kontseptuaalse andmemudeli osad on olemid (entity), seosed (relationships) ja kitsendused (constraints).

Olem: miski, mis on (reaalselt, mõtteliselt) olemas, ilma täpsustamata selle laadi või liiki (nt asi, tegevus, suhe) (https://sonaveeb.ee/search/unif/dlall/dsall/olem/1)

Kontseptuaalset mudelit võib kasutada klientidega suhtlemiseks.

Soovitavalt esitatakse mudel joonisena ja selleks on erinevaid võimalusi.

Olem-seos mudelOlem-seos mudel (entity-relationship model) – on üldmõiste mudelite jaoks, millega kirjeldada omavahel seotud asju (nn olemeid), asjade (olulisi) omadusi ja seoseid asjade vahel. Kirjeldatakse valdkonna (minimaailma) andmeid.

Olem (entity) – üldmõiste olemas olevatele asjadele, objektidele, mõistetele, nähtustele.

Olemil on atribuudid (attributes) ehk omadused, mis kirjeldavad olemit täpsemalt ja minimaailma piirides.

Seos (relationship) – side (association) kahe või enama olemi vahel.

Olemite ja seoste modelleerimisest kirjutab Peter Chen 1976. a artiklis "The Entity-Relationship Model - Toward a Unified View of Data" (https://doi.org/10.1145/320434.320440)

Olem-seos mudelOlem-seos mudelit kasutatakse nii kontseptuaalse andmemudeli kui ka loogilise andmemudeli esitamiseks.

Olem-seos mudelit saab joonistada erinevaid tähistusi ehk notatsioone (notation) kasutades.

Kasutame edaspidi Cheni tähistust kontseptuaalse mudeli jaoks ja varesejalatähistust (Crow’s Foot notation) loogilise andmemudeli esitamiseks.

Nimetatud andmemudelite koostamiseks saab kasutada ka näiteks UMLi (Unified Modelling Language) klassiskeemi (class diagram), erinevaid notatsioone on veelgi (vt järgmist slaidi).

Veel tähistusi: https://commons.wikimedia.org/w/index.php?curid=5218252

Olemid ja olemitüübidEristada tuleks (ideaalis) mõisteid olem ja olemitüüp.

Olemitüüp (entity type) on andmemudelisse lisatav sarnaste olemite üldine kirjeldus. Nt üliõpilane (andmetüüp).

Olem (entity) on reaalsuses eksisteeriv objekt, mõiste vms, mis vastab olemitüübile. Nt „üliõpilasetüüpi” Maali Maasikas (konkreetne muutuja).

Olemihulk on kõik ühele olemitüübile vastavad olemid. Nt kõik üliõpilased ÕISis.

Alternatiivselt on kasutusel mõisted: olem (üldine kirjeldus) ja olemi eksemplar / olemi isend (konkreetne objekt vms). Kuna me kavandamisel räägime pigem üldisemast pildist, siis kasutan edaspidi mõistet olem.

Hakkame lahendama ülesannet, mille tulemus peab vormuma kunagi andmebaasiks.

Selle käigus vaatame üle, kuidas Chen’i notatsioonis olem-seos mudelit kujutada.

Ülesanne: filmimaailmOn vajadus tarkvara järele, mis aitaks talletada ja leida infot filmide, näitlejate, lavastajate jms sellise kohta (nt efis.ee).

Igal filmil on pealkiri, tootmise aasta ja tootja firma (filmistuudio). Filmi esitamiseks ja reklaamimiseks on hea teada kestust minutites, žanri (mõnikord kvalifitseerub film ka mitme žanri alla), ühikokkuvõtet. Igal filmil on režissöör, vahest ka mitu (ja mitmeid teisi tegijaid, keda me küll esialgu ei lisa). Filmis mängivad näitlejad, esitades oma rolle. Näitlejal on loomulikult nimi, hea oleks ka teada vanust ning tore näha pilti. Samuti on režissööril isiklikud andmed. Ei ole välistatud, et ta ka mängib mõnes filmis. Või siis teistpidi – näitleja proovib kätt režissöörina. On filme, milles öeldud tsitaadid elavad oma elu rahva hulgas edasi ("Ütle talle, et me oleme Tallinnast. Ütle talle, et me maksame!", „I’ll be back!”).

Filmid on valminud mõnes filmistuudios, millel on nimi ja aadress (ei pea olema väga täpne).

Mida teada tahetakse? Näiteks tahetakse teada, millistes filmides üks näitleja on mänginud ning ka vastupidi – kes mängivad ühes filmis. Samad küsimused režissööride kohta. Filmi tsitaatide leidmine. Jne.

Milliseid olemeid kirjeldatakse ülesandes?Kirjutame nad üles.

AtribuudidOlemile lisatakse atribuudid (attributes) ehk omadused. Atribuudil on väärtus. Näiteks olemil üliõpilane on atribuut nimi, selle väärtuseks võib olla "Juhan Juurikas".

Atribuudi väärtustele kehtestatakse kitsendused – määratakse sobilikud väärtuste hulgad. Nt atribuut on täisarv. Sisuliselt on tegemist andmetüübiga.

Atribuudid võib jaotada erinevatesse kategooriatesse:– lihtatribuudid (simple) või liitatribuudid (composite attributes);– üheväärtuselised (single-valued) või mitmeväärtuselised (multi-valued)

atribuudid;– salvestatud (stored) või tuletatud (derived) atribuudid.

Olem, atribuudid, isendid: näide

Olem (olemitüüp) üliõpilane, atribuudid nimi, üliõpilaskood, õppekava, keskmine hinne

Isendid (olemid):– Juhan Juurikas; 216666IFIFB.DT; informaatika; 5.0

– Maali Maasikas; 207777INITB.DT; infoteadus; 5.0

– Kaarel Kaalikas; 208888MLMB.DT; matemaatika, majandusmatemaatika ja andmeanalüüs; 5.0

Millised atribuudid saab lisada filmimaailmast leitud olemitele?

Kirjutame üles.

Liht- ja liitatribuudidLihtatribuudil saab olla üks, jagamatu väärtus: näiteks olemil õppeaine on atribuut nimetus.

nimetus = "Andmebaaside projekteerimine"

Liitatribuudi väärtus koosneb mitmest osast, kus iga osa väljendab mingit väiksemat tähendusega omadust. Näiteks atribuut aadress on üpris keerukas nähtus, koosnedes postiindeksist, maakonnast, linnast / alevikust / ..., tänavast, majanumbrist ja korterinumbrist. Atribuut nimi koosneb (vähemalt!) ees- ja perekonnanimest.

Liitatribuute kasutatakse siis, kui on vaja vastavat atribuuti kasutada mõnikord terviklikult, teine kord aga vaid mingit osa (nt maakond).

Liitatribuudi jaoks tuleb otsustada, kuidas seda mõistlikult salvestada (alati ei pea aadressi või nime mitmes tükkis salvestama).

Ühe- ja mitmeväärtuselised atribuudid

Enamasti on atribuudid üheväärtuselised. (nt olemi õppeaine atribuut nimetus: õppeainel on üks nimetus).

Mõnel atribuudil võib olla (kuid ei pruugi) mitu väärtust, sel juhul on tegemist mitmeväärtuselise atribuudiga (nt võib inimesel olla üks hobi või mitu hobi ... või pole üldse).

Mitmeväärtuselise atribuudi väärtuste hulgale võivad olla kehtestatud piirarvud (nt salvestatakse maksimaalselt kolm hobi).

Taas on probleem, kuidas salvestada mitmeväärtuselise atribuudi kõiki väärtuseid nii, et nende kohta ka mõistlikult päringuid teha saaks.

Salvestatud ja tuletatud atribuudidEnamus atribuute on salvestatud atribuudid.

Mõne atribuudi väärtus on võimalik tuletada või arvutada teise atribuudi väärtuse kaudu. Need ongi tuletatud atribuudid.

Näiteks vanus, mida saab leida sünnikuupäeva (salvestatud atribuut) ja tänase kuupäeva järgi.

Tuletatud atribuudi väärtuse võivad määrata ka teised olemid – näiteks kursusele registreerunud üliõpilaste arv.

Tuletatud atribuut võib olla salvestatud andmebaasi, kui tema igakordne väljaarvutamine võib liigselt aega võtta.

VõtmeatribuudidOsa atribuute on erilised – need on võtmeatribuudid ehk võtmed (key attributes)

Võtmeteks nimetatakse selliseid atribuute, millel on kõigi antud tüüpi olemieksemplaride hulgas unikaalne (kordumatu, ainuline) väärtus.

Öeldakse ka nii, et ühes olemihulgas olevatele olemieksemplaridele kehtib võtme unikaalsuse kitsendus, st peab olema mingi atribuut, mida saab kasutada iga olemi üheseks identifitseerimiseks.

Ka mitu tavalist atribuuti koos võivad moodustada unikaalse võtme.

Nõrgal olemil (weak entity type) puudub võtmeks sobiv atribuut, tema eksemplarid tuvastatakse üheselt mõne teise olemi kaudu.

Kas leiame filmimaailma atribuutide hulgas liitatribuute, mitmeväärtuselisi atribuute või

tuletatud atribuute?Kas on atribuute, mis sobivad võtmeteks?

Mudelite esitamineKontseptuaalse ja loogilise mudeli (tehnilise mudeli) esitamiseks olem-seos mudelina saab kasutada erinevaid vahendeid (notatsioone).

Võimalikud variandid relatsioonandmebaasi jaoks:– UML klassiskeem (UML class diagram) sobib mõlema mudeli jaoks, erinevus on mudeli

detailides.– Varesejala tähistus (Crow's foot notation) sobib samuti mõlemale mudelile, erinevus on

detailsuse astmes. – Cheni tähistus sobib kontseptuaalseks mudeliks. Loogilise mudeli jaoks on vaja teistsugust

skeemitüüpi.

E-R diagrammiks või skeemiks (kui vahendiks) nimetatakse enamasti kahte viimast – st varesejala tähistust ja Cheni tähistust (samuti selle vahendiga tehtud mudelit).

Näide olem-seos skeemistAndmed: laulja ja laul. Hetkel ei ole täpsustatud, mida rakendus teha laseb

– Laulja andmed on näiteks: artistinimi, pärisnimi, esineja tüüp (üksi, bändiga), muusikastiil, mänedžeri nimi, esinemistasu, …

– Laulu andmed on näiteks: pealkiri, muusika autor, sõnade autor, pikkus, stiil, loomise aasta, esitaja, …

Järgnevatel slaididel näited nendest kahest olemist erinevaid tähistusi kasutades.

Chen’i tähistus

Varesejala tähistus

Laulja ja laul

Lauljaartisti nimi:VARCHARnimi:VARCHAResineja tüüp:VARCHARmuusika stiil:VARCHARmänedþeri nimi:VARCHAResinemistasu:INTEGER

Laulpealkiri:VARCHARloomise aasta:INTEGERmuusika autor:VARCHARsõnade autor:VARCHARpikkus:TIMEstiil:VARCHAResitaja:VARCHAR

SeosedOlemid on omavahel seotud, viidates teineteisele (laulul on esitaja). ER mudelis ei tohiks viiteid ühest olemitüübist teisele teha atribuutide abil (olemitüübis laul on atribuut esitaja / laulja), vaid selleks kasutatakse seoseid (relationship).

Seosetüüp (relationship type) kirjeldab sidemete hulga (set of associations) erinevate olemite vahel. Seosed on erinevatesse olemitesse kuuluvate eksemplaride vahel. Seosed võivad olla ka sama olemi eksemplaride vahel.

Näiteks laulja esitab laulu.

Seosed

LauljaLaulEsitab

Seoste struktuursed kitsendusedSeostel on nn struktuursed kitsendused (structural constraints), mis määravad võimalikud kombinatsioonid, kuidas olemi eksemplarid võivad osaleda vastavas seoses.

Binaarse seose (seos kahe olemi vahel) võimsustik (cardinality ratio, multiplicity) määrab maksimaalse seoste arvu, milles üks olemieksemplar olla saab.

Lubatud võimsustikud on: üks-ühele (1:1), üks-mitmele (1:N), mitu-ühele (N:1) ja mitu-mitmele (M:N). 1:N ja N:1 tegelikult ei eristata, küsimus on vaatenurgas.

Näited (lahtiloetuna mõlemas suunas):– M:N - M lauljat esitavad N laulu (üks laulja võib esitada mitut (N) laulu ja sama laulu võivad

esitada erinevad (M) lauljad).– 1:N - Ühes majas on mitu (N) korterit; üks korter paikneb ühes majas– 1:1 - Üks üliõpilane saab ühe diplomi. Üks diplom antakse ühele üliõpilasele. Üks-ühele seos

on pigem erand.

Seoste struktuursed kitsendusedOsalemise kitsendus (participation constraint) määrab minimaalse arvu seoseid, milles vastav olem osalema peab. Eristatakse täielikku (total) ja osalist (partial) osalemist.

– Täieliku osalemise korral olem eksisteerib vaid siis, kui ta osaleb seoses. Näiteks iga üliõpilane on kindlasti seotud mõne õppekavaga.

– Osaline osalemine ei nõua kõigi olemite osalust vastavas seoses. Näiteks mõnel laulul ei pruugi olla esitajat.

Seoste atribuudidSeostel võivad sarnaselt olemitele, olla ka atribuudid.

Atribuudid kirjeldavad seost, näiteks olemite vahelise suhte tekkimise algust ja lõppu, täpsemat suhte tüüpi jne.

Seoste atribuutide abil määratakse, millised olemieksemplarid selles seoses osalevad ning võivad olla atribuudid, mis on kuidagi mõlema olemiga seotud. Nt kuupäev, millal laulja konkreetset laulu esitas.

Seostel võivad olla rollinimed, mida saab kasutada seose tähenduse täpsustamiseks.

Olem võib läbi seose olla seotud iseendaga. Sel juhul tegemist on rekursiivse seosega.

Nimedest ja nimetamisestMudeli mõistetavuse huvides tuleb anda kõigile mudelis olevatele "osadele" läbimõeldud nimi.

Nimed peavad olema kooskõlas valdkonnaga.

Olemite nimed on nimisõnad ja on ainsuses.

Seoste nimed on enamasti seotud tegevusega ja tulenevad tegusõnadest, kuid võivad tuleneda ka seotavatest olemitest.

Olemite ja seoste nimed kirjutatakse tihti läbivalt suurtähtedega, kuid see ei tõsta mudeli inimloetavust.

Analüüsi käigus pannakse nõuete kirjelduses esinevad nimisõnad tavaliselt olemiteks ja tegusõnadest tuletatakse seosed. Atribuudid on nimisõnad, mis kirjeldavad olemeid.

Inglise keeles on soovitavalt olemite ja seoste nimedest võimalik moodustada lauseid: Singer (olem) performs / performed_by (seos) song (olem). Eesti keeles on see raskendatud.

Cheni tähistus

Cheni tähistus

Varesejala tähistus

Laulja

artistinimi:VARCHAR

nimi:VARCHAR

esineja tüüp:VARCHAR

muusika stii l :VARCHAR

mänedþeri nimi:VARCHAR

esinemistasu:INTEGER

Laul

pealkiri:VARCHAR

loomise aasta:INTEGER

muusika autor:VARCHAR

sõnade autor:VARCHAR

pikkus:TIME

sti il :VARCHAR

esitaja:VARCHAR

esitamine