Tehtävä: ER-kaavioiden piirtäminen

Tämä on ohjattu tehtävä, jossa opitaan suunnittelemaan tietokantoja. Tehtävässä käydään läpi pienen tietokannan suunnittelu ja ER-kaavion piirtämistä. Samalla tutustutaan opintojaksolla käytössä olevaan ERDPlus-kaavioeditoriin.

Tehtävässä on useita osatehtäviä. Pääset tehtävässä eteenpäin suorittamalla jokainen osatehtävä kerrallaan.

Jos huomaat virheitä tai sinulla on kysyttävää tehtävistä, ota yhteyttä kurssin opettajiin

ER-kaavioeditori

ER-kaavioilla voidaan visuaalisesti kuvata tietokannan käsitteellinen malli. Käsitteellisessä mallissa tietokannan rakenne kuvataan abstraktilla tasolla käyttäen kohdealueen käsitteitä ja niiden välisiä suhteita.

Käydään lyhyesti läpi ER-kaavioeditorin ulkoasu ja yleisimmät toiminnot:

  1. Muokkausvalinnat
    • Valitse: Valintatila, jossa voi valita jotain objektia
    • Yhdistä: Yhdistämistila, jolla eri objektit voi yhdistää toisiinsa viivalla
    • Kumoa, Toista: Kumoaa tai toistaa viimeisen toiminnon
    • Poista: Poistaa valitun objektin
  2. Objektien piirto
    • Kohde: Lisää uusi kohdetyypi klikkaamalla muokkausalueesta
    • Attribuutti: Lisää uusi attribuutti klikkaamalla muokkausalueesta
    • Suhde: Lisää uusi suhde klikkaamalla muokkausalueesta
    • Teksti: Lisää kommentti muokkausalueeseen
  3. Piirtoalue
  4. Ominaisuusalue: kun jokin objekti on valitty, näyttää sen ominaisuudet

Editorin yläpalkin muuttavat editorin tilaa. Esimerkiksi, kun klikkaa Valitse, editori menee valintatilaan. Valintatilassa voit valita tai siirtää objekteja. Eri tiloista kerrotaan myöhemmin tässä tehtävässä.

Kaavioeditorin muutokset voi tallentaa editorin alapuolella olevalla Tallenna-painikkeella. Jos editorin haluaa täysin tyhjentää sen alkutilaan, voi käyttää Alusta-linkkiä.

Vaatimusmäärittely

Käydään tässä tehtävässä läpi pienen opiskelijatietokannan suunnittelu.

Tietokannaltamme vaaditaan seuraavanlaisia asioita:

  • Opiskelijoista on tallennettava oleellisimmat tiedot eli ainakin hetu, sähköpostiosoite, nimi, osoite, puhelinnumerot ja aloitusvuosi.
  • Tietokannasta on löydyttävä yliopiston laitosten ja tiedekuntien nimet sekä tieto siitä minkä laitoksen opiskelija kukakin opiskelija on.
  • Tietokantaan halutaan myös tiedot kursseista, niiden laajuudesta (opintoviikkomäärä), kurssikoodit, minkä laitoksen kurssi on kyseessä ja mitä kursseja kukakin opiskelija on suorittanut, milloin ja millä arvosanalla.

Käsitteellisessä mallintamisessa on yleensä helpointa edetä seuraavasti:

  1. Tunnistetaan selkeät kohdetyypit ja piirretään ne
  2. Tunnistetaan kohdetyyppien väliset suhteet ja piirretään ne
  3. Mietitään ja merkitään suhteiden kardinaalisuudet, eli kuinka monta kohdetta on mukana suhteessa
  4. Liitetään lopuksi kohteiden ja suhteiden attribuutit eli ominaisuudet paikalleen

Kohdetyypit

# openKohteet

Poimitaan ensin tietokannan vaatimusmäärittelyn perusteella kaikki selkeät kohdetyypit. Kohdetyyppien etsimiselle ei ole tarkkoja sääntöjä, joten ei ole myöskään aina selkeää yksittäistä oikeaa ratkaisua.

Kohdetyypit voi etsiä vaatimusmäärittelystä tunnistamalla toistuvia käsitteitä, ja konkreettisia reaalimaailman asioita. Pyri valitsemaan kohdetyypit niin, että ne mallintavat kohdealuetta. Esimerkiksi opiskelijatietokannassa järkevä kohdetyyppi voisi olla "opiskelija", mutta "nimi" on jo liian yleinen omaksi kohdetyypiksi.

Vaatimusmäärittelyn perusteella poimitaan seuraavat selkeät kohdetyypit:

  • Opiskelija
  • Laitos
  • Tiedekunta
  • Kurssi

Piirretään seuraavaksi kohdetyypit alla olevaan ER-kaavioeditoriin:

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse yläpalkin objektin piirtotyökaluista Kohde.
  3. Klikkaa piirtoalueessa jokin kohta, johon kohde tulee. Uusi kohdetyyppi ilmestyy piirtoalueelle ja editori menee takaisin valintatilaan.
  4. Klikkaa lisättyä kohdetta kerran.
  5. Aseta kohteen nimeksi Opiskelija ominaisuusalueelta.
  6. Toista sama jokaiselle kohdetyypille.
Esimerkki: kohteen lisääminen ER-kaavioeditoriin

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# er-kohteet

Tallenna lopuksi kaaviosi

Suhteet

# openSuhteet

Mietitään seuraavaksi, mitä suhteita kohteiden välillä esiintyy. Kuten kohdetyyppien tapauksessa, myöskään suhteiden etsimiselle ole tarkkoja saantöjä.

Yritä etsiä suhteet, jotka ovat tietokannan mallintamisen kannalta oleellisia, eli onko niitä syytä edes tallentaa tietokantaan. Suhteet voivat liittyä esimerkiksi kohteiden olemassaoloon, kohteiden välisiin tapahtumiin tai kohteiden toimintaan.

Vaatimusmäärittelyn perusteella löydämme seuraavia suhteita:

  • Opiskelijat tenttivät kursseja
  • Jokainen opiskelija opiskelee jossain laitoksesa
  • Jokainen laitos kuuluu johonkin tiedekuntaan
  • Jokaisen kurssin järjestää jokin tietty laitos

Piirretään nyt suhteita vastaavia suhdetyyppejä ja yhdistetään ne kohdetyyppeihin. Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse yläpalkin muokkausvalinnoista Yhdistä.
  3. Klikkaa Opiskelija-kohdetyypistä ja pidä hiiren painike pohjassa.
  4. Siirrä kursori Kurssi-kohdetyypin luo. Näet, kuinka viiva ilmestyy kummankin kohdetyypin kohdalle.
  5. Päästä irti hiiren painikkeesta. Opiskelija ja Kurssi -kohdetyypit yhdistettiin toisiinsa suhteella. Editori samalla siirtyi takaisin valintatilaan.
  6. Klikkaa suhteesta kerran, jollon ominaisuusalueeseen ilmestyvät suhteeseen liittyvät ominaisuudet.
  7. Aseta suhteen nimeksi Tenttii.
  8. Toista vaiheet 2-7 kaikille neljälle suhteelle. Anna suhteille järkevät nimet.
  9. Lopuksi siirrä kohde- ja suhdetyypit hieman erilleen toisistaan niin, että kuvio näyttää helposti luettavalta.
Esimerkki: suhteiden lisääminen ER-kaavioeditoriin

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# er-suhteet

Tallenna lopuksi kaaviosi

Kardinaalisuudet

# openKardinaliteetti

Kardinaalisuus kertoo, kuinka moneen suhteeseen kohde voi tai tulee osallistumaan. Kardinaalisuuksia on kahdenlaista: minimikardinaalisuus kertoo pienimmän tarvittavan kohteiden määrä suhteeseen, kun taas maksimikardinaalisuus kertoo suurimman sallitun kohteiden määrän. Esimerkiksi avioliittossa maksimi- ja minikardinaalisuudet ovat ns. yksi suhteen yksi (1-1), sillä avioliitossa osapuolina on kaksi eri henkilöä. Toisena esimerkkinä kirjastossa henkilön kirjan lainaaminen on minimissään nollasuhde (0-0, kenenkään ei tarvitse lainata kirjaa, henkilö voi olla lainaamatta mitään) ja maksimissaan moni suhteen moni (M-M, kirjan voi lainata usea henkilö, henkilöllä voi olla monta kirjaa lainassa).

Kardinaalisuuksia joutuu usein miettimään itse, sillä niitä usein ei mainita vaatimuksissa erikseen. Kardinaalisuudet kuitenkin tulee pohtia tarkasti, sillä niillä voi olla vaikutusta varsinaista tietokantaa toteuttaessa.

Ottaen huomioon kohdealueen (korkeakoulun opiskelijarekisteri), päättelemme seuraavat kardinaalisuudet:

  • Monta opiskelijaa voivat tenttiä yhtä tai useampaa kurssia. Toisaalta kurssilla ei ole pakko olla tenttiä, ja opiskelija voi olla osallisumatta tenttiin.
    • Minimikardinaalisuus on siis 0-0, ja maksimikardinaalisuus on selkeästi M-M (Opiskelija, Kurssi).
  • Jokainen opiskelija kuuluu yhteen laitokseen (pääaine). Yhdellä laitoksella voi olla useita opiskelijoita. Sovitaan, että laitos saa olla ilman opiskelijoitakin.
    • Minimikardinaalisuus on täten 0-1 ja maksimi on puolestaan M-1-suhde (Opiskelija, Laitos)
  • Jokainen laitos kuuluu yhteen tiedekuntaan. Yhdessä tiedekunnassa voi olla useita laitoksia. Vastaavasti sovitaan, että tiedekunta voi olla ilman laitoksia.
    • Kyseessä on siis 0-1-suhde minimissään M-1-suhde maksimissaan (Laitos, Tiedekunta)
  • Laitoksella järjestetään useita kursseja. Jokainen kurssi on yhden tietyn laitoksen alaista opetusta. Laitos kuitenkin voisi olla ilman kursseja.
    • Minikardinaalisuus on 1-0 ja maksimikardinaalisuus 1-M (Laitos, Kurssi)

Piirretään kardinaalisuudet ER-kaavioon. ER-kaavioissa kardinaalisuuksille on olemassa useita eri merkintätapoja (ks. osa 2 luku 2.2).

Kurssimonisteesta poiketen ER-kaavioeditorissa on toistaiseksi käytössä ns. Hoffer–Prescott–McFadden-merkintä kardinaalisuuksien merkitsemiseksi.

Merkintätavassa kardinaalisuudet kuvataan viivoilla ja haarukoilla. Viivat kannattaa ajatella kuvaavan, kuinka monta viivaa eri tietueiden välille voidaan piirtää. Alla on koostava esimerkki kardinaalisuusmerkinnöistä.

Esimerkki Hoffer–Prescott–McFadden-merkinnästä. Esimerkissä henkilöllä voi olla useita autoja, mutta autolla voi olla korkeintaan yksi omistaja.
Esimerkki Hoffer–Prescott–McFadden-merkinnästä. Esimerkissä henkilöllä voi olla useita autoja, mutta autolla voi olla korkeintaan yksi omistaja.

Piirretään kardinaalisuudet meidän suhteille. Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse suhde Opiskelee.
  3. Aseta muokkausalueessa minimikardinaalisuus 0-1.
    • Valitse MIN-sarakkeesta Opiskelija-riviltä kardinaaliteetiksi 1 (Opiskelija Opiskelee vähintään yhdessä laitoksessa)
    • Valitse MIN-sarakkeesta Laitos-riviltä kardinaaliteetiksi 0 (Laitoksessa Opiskelee vähintään nolla opiskelijaa)
  4. Aseta vastaavasti maksimikardinaalisuus M-1.
    • Valitse MAX-sarakkeesta Opiskelija-riviltä kardinaaliteetiksi 1 (Opiskelija Opiskelee korkeintaan yhdessä laitoksessa)
    • Valitse MAX-sarakkeesta Laitos-riviltä kardinaaliteetiksi N (Laitoksessa Opiskelee korkeintaan N eli monta opiskelijaa)
  5. Toista vaiheet 2-4 kaikille muille suhteille. Ole tarkkana kardinaalisuuden suunnan kanssa. Mieti asia esimerkiksi selkokielellä (esim. "Opiskelija Tenttii vähintään" -> Opiskelija-rivin MIN-sarake).
Esimerkki: kardinaalisuuden merkitseminen ER-kaavioeditorissa

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# er-kardinaalisuus

Tallenna lopuksi kaaviosi

Ominaisuudet

# openOminaisuudet

Liitetään seuraavaksi jokaiseen kohteeseen ja suhteeseen niihin liittyvät ominaisuudet (attribuutit). Attribuuttien etsinnässä on syytä pohtia, mitä asioita jokaisesta kohteesta halutaan tallentaa tietokantaan. Kaikki tieto ei välttämättä ole oleellisia, vaikka se vaatimuksessa onkin mainittu. Mieti samalla, onko jokin attribuutti erityinen (moniarvoinen, johdettu, koottu). Tässä vaiheessa ei vielä avainattribuutteja kannata miettiä, vaan tärkeämpää on saada kaikki tarvittavat attribuutit määriteltyä.

Meidän opiskelijarekisterin vaatimuksista tunnistamme seuraavat attribuutit:

  • Opiskelija
    • Hetu
    • Sähköpostiosoite
    • Nimi, joka koostuu etunimestä ja sukunimestä
    • Osoite
    • Puhelinnumerot
    • Aloitusvuosi
  • Kurssi
    • Nimi
    • Kurssikoodi
    • Laajuus
  • Laitos
    • Nimi
  • Tiedekunta
    • Nimi
  • Tenttii
    • Päivämäärä
    • Arvosana

Huomaa, että kuvauksen perusteella löysimme suhteelle Tenttii myös pari oleellista attribuuttia. Tenttimiseen liittyy aina päivämäärä sekä arvosana, joka tentistä on saatu.

Piirretään seuraavaksi attribuutit näkyviin. Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse kohde Opiskelija.
  3. Klikkaa ominaisuusalueessa olevaa Lisää attribuutti-painike. Tämä lisää uuden attribuutin kohteeseen Opiskelija ja valitsee sen aktiiviseksi.
  4. Aseta lisätyn attribuutin nimeksi sähköpostiosoite.
  5. Siirrä attribuutti piirtoalueella hieman sivulla parempaan sijaintiin.
  6. Valitse taas kohde Opiskelija ja lisää uusi attribuutti Lisää attribuutti-painikkeella.
  7. Aseta attribuutin nimeksi nimi.
  8. Merkitse attribuutti kootuksi, kuten vaatimuksessa on määritelty.
    • Valitse ominaisuusalueesta ruksi Koottu
    • Paina viereen ilmestynyt Lisää osa-attribuutti ja aseta sen nimeksi etunimi
    • Valitse nimi-attribuutti piirtoalueella ja lisää sille vielä osa-attribuutiksi sukunimi
  9. Asettele piirtoalueelle attribuutit järkeväksi.
  10. Lisää loput attribuutit. Aseta attribuuteille oikea tyyppi (koottu, moniarvoinen) yllä olevan kuvauksen perusteella.
  11. Siisti lopuksi kuviosi.
Esimerkki: attribuuttien piirto ER-kaavioeditorilla

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# er-attribuutit

Tallenna lopuksi kaaviosi

Avainattribuutit

# openAvainattribuutit

Lopuksi attribuuttien joukosta tulee valita ne ominaisuudet, jotka yksilöivät kunkin kohteen (ja tarvittaessa suhteen). Alkuun kannattaa valita yksi tai muutama avainehdokas, eli kaikki ne attribuutit, joilla periaatteessa voisi yksilöidä kohteen.

Meidän esimerkin tapauksessa löydämme seuraavia avainehdokkaita:

  • Opiskelija: Hetu tai Sähköpostiosoite
  • Kurssi: Nimi tai Kurssikoodi
  • Laitos: Nimi
  • Tiedekunta: Nimi
  • Tenttii: Opiskelija, Kurssi ja päivämäärä yhdistettynä

Avainehdokkaista on syytä valita sitten yksi paras avainattribuutiksi. Hyvä avainattribuutti on yleensä kooltaan pienin ja varmimmin yksilöllisenä pysyvä. Jatkon kannalta tässä vaiheessa saattaa olla järkevää myös keksiä uusia attribuutteja, jotka toimisivat pelkästään avaimena.

Yllä olevien avainehdokkaiden perusteella voimme päätellä:

  • Opiskelijalla hetu on varmasti lyhyt (11 merkkiä), mutta se voi jossain tapauksissa vaihtua. Tästä syystä parempi on luoda uusi avainattribuutti id, jolla opiskelija voi yksilöidä.

  • Kurssilla kurssikoodi on varmasti yksilöllinen ja lyhyt.

  • Laitoksella nimi-attribuutti vie turhaan tilaa ollakseen hyvä avainattribuutti. Sen sijaan luodaan uusi attribuutti id, joka yksilöi laitoksen.

  • Vastaavasti tiedekkunnalla nimi-attribuutti voi olla liian pitkä ollakseen hyvä avainattribuutti. Luodaan sillekin oma id-attribuutti ja asetetaan se perusavaimeksi.

  • Tenttii-suhteelle sopivin avain on Opiskelija, Kurssi ja päivämäärä yhdistettynä. Pelkkä päivämäärä ei riitä yksilöintiin, koska samana päivänä voi olla useita tenttejä. Myöskään päivämäärä + kurssi eivät riitä koska samana päivänä voi samaa kurssi tenttiä useampi opiskelija. Kaikki kolme yhdessä riittävät yksilöintiin, koska sama opiskelija ei voi samana päivänä tenttiä samaa kurssia useampaan kertaan. ER-kaavioon riittää, että merkitään ainoastaan päivämäärä avainattribuutiksi, sillä suhteen avain varsinaisesti valitaan transformoinnin yhteydessä.

Merkitään nyt avainattribuutit ja luodaan muutama uusi attribuutti avuksi. Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse kurssikoodi-attribuutti, joka kuuluu Kurssi-kohteeseen
  3. Ominaisuusalueessa valitse Avainattribuutti. Tämä tekee kurssikoodi-attribuutista avainattribuutin.
  4. Lisää Opiskelija-kohteelle uuden id-attribuutti ja merkitse se avainattribuutiksi samalla tavalla.
  5. Käy läpi yllä mainitut kohteet sekä suhteet ja merkitse niihin avainattribuutit. Tee uudet attribuutit tarpeen mukaan.
  6. Siisti lopuksi kaavio hieman.
Esimerkki: avainattribuutin merkitseminen ER-kaavioeditorissa
# er-avainattribuutit

Tallenna lopuksi kaaviosi

Lopuksi

Kun olet valmis, arvioi lyhyesti käsitteellisen mallintamisen ymmärryksesi ja anna lyhyt palaute tehtävästä.

# palaute

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.