Tietokannan suunnittelu - Demo 1
Tämän ensimmäisen demokerran aiheena on tietokantojen suunnittelu. Demon pääpaino on ER-kaavion piirtämisellä. Ensimmäiseksi käydään esimerkkinä vaiheittain läpi pienen opiskelijatietokannan suunnittelu. Perehdy esimerkkiin ajatuksen kanssa ja kiinnitä esimerkkiä läpi käydessäsi huomiota seuraaviin seikkoihin:
- Kuinka kohdetyypit löydetään vaatimusmäärittelystä?
- Millaisia suhteita on olemassa vaatimusmäärittelystä löytyvien kokonaisuuksien (kohteet) välillä?
Pieni opiskelijatietokanta
Lyhyt vaatimusmäärittely
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. Tiedekunnathan jakautuvat ainelaitoksiin.
- 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.
Kohdetyypit
Poimitaan ensin tietokannan vaatimusmäärittelyn perusteella kaikki selkeät kohdetyypit. Kohdetyypit löytyvät etsimällä tekstissä mainittuja suurempia kokonaisuuksia, joihin liittyy/sisältyy joitakin ominaisuuksia. Esimerkiksi opiskelijalla on aina nimi jne. Löydettyjä kohdetyyppejä ovat tekstissäkin korostetut:
- Opiskelija
- Laitos
- Tiedekunta
- Kurssi
Tehtäviä
Käynnistä Erkka--ohjelma (Start|Programs|Erkka). Avaa käyttöösi uusi "kaaviopohja" eli konfitiedosto konfitiedosto.erkka valikkokomennolla File | New. Konfitiedoston löydät hakemistosta C:\Program Files\Erkka\. Kotikoneelleen Erkan voi noutaa osoitteesta http://appro.mit.jyu.fi/tiedonhallinta/harkka/erkka.zip
Piirrä edellämainitut kohteet (Entity) Erkalla seuraavan kuvan mukaisesti. Nimet saat muutettua kohteen ollessa aktiivisena ikkunan vasemmasta reunasta.

Suhteet
Seuraavaksi mietitään mitä suhteita kohteiden välillä esiintyy. Kaikki suhteet eivät lue vaatimusmäärittelyssä sellaisenaan, vaan niiden määrittämiseen tarvitaan tulkintaa. Tarvittavat suhteet löytää ajattelemalla mitä asioita tarvitaan yhdistää vaatimusmäärittelyssä olevien tarpeiden täyttämiseksi. Esimerkiksi opiskelijan laitos on pystyttävä selvittämään, joten opiskelijan ja laitoksen välille tulee jonkinlainen suhde. Seuraavassa vaatimusmäärittelystä pääteltyjä suhteita:
- Opiskelijat tekevät kurssiin liittyviä tenttejä (suorituksia)
- Jokainen opiskelija kuuluu johonkin laitokseen
- Jokainen laitos kuuluu johonkin tiedekuntaan
- Jokaisen kurssin järjestää jokin tietty laitos
Tehtäviä
Piirrä Erkalla edellämainitut suhteet (Relationship) eli pelkät "salmiakit".
Yhdistä kohteet toisiinsa edellä piirtämiesi suhteiden avulla käyttäen Erkan Line-piirtotyökalua. line-työkalu toimii valitsemalla hiiren vasemmalla napilla ensin kohde ja sen jälkeen vasemmalla napilla suhde johon kohde yhdistetään. Älä pidä hiiren nappia pohjassa. Viivojen piirtämisen voit keskeyttää hiiren oikeaa painiketta painamalla.
Ominaisuudet
Seuraavaksi liitetään jokaiseen kohteeseen ja suhteeseen niihin liittyvät ominaisuudet (attribuutit). Kohteisiin liittyvät ominaisuudet löytyvät helposti vaatimusmäärittelystä. Myös jokainen suhde kannattaa käydä ajatuksella läpi ja miettiä mitä ominaisuuksia tarvitaan suhteen yhteyteen. Kun ominaisuus ei liity kunnolla suhteen ympärillä oleviin kohteisiin, niin se on lisättävä suhteen yhteyteen. Esimerkiksi tenttimisestä on olennaista tietää päivämäärä ja arvosana, mutta tietoja ei ole järkevä laittaa opiskelija- tai kurssikohteeseen, koska opiskelijan tenttien lukumäärää kurssilla tai kaikilla kursseilla ei pystytä mitenkään ennakoimaan.
- Opiskelija
- Hetu
- Sähköpostiosoite
- Etunimi
- Sukunimi
- Lähiosoite
- Postinumero
- Postitoimipaikka
- Puhelinnumero
- Aloitusvuosi
- Kurssi
- Nimi
- Kurssikoodi
- Laajuus
- Laitos
- Nimi
- Tiedekunta
- Nimi
- Tenttii
- Päivämäärä
- Arvosana
Tehtäviä
Piirrä Erkalla edellämainitut ominaisuudet kaavioon.
-
Ominaisuudet esitetään ellipsien sisällä, jotka liitetään viivalla joko kohteeseen tai suoraan suhteeseen.

Ominaisuuksien rajoitteet
Ominaisuuksien rajoitteet tulevat myös vaatimusmäärittelyn kautta, mutta tässä yhteydessä niitä ei ole kirjattu esimerkin pitämiseksi suppeana. Voit siis käyttää omaa harkintaasi tietojen rajoitteista seuraavissa tehtävissä.
Rajoitteita voivat olla esimerkiksi:
- Vain tietyt määrätyt syötteet kelpaavat. Esim. jonkin tehtävän suoritusmerkintä saa olla vain "Hyväksytty" tai "Hylätty".
- Syötetty tieto saa olla vain tietyltä väliltä esim. numeerinen arvo pitäisi olla 1 - 100.
- Erikoisrajoitteet: Esim. Kurssin luennoija ei voi osallistua omalle kurssilleen.
- Arvolla on jokin alaraja tai yläraja
- Arvon oikeellisuuden määrää jokin kaava tai funktio. Esim. hetu tai viitenumero
Kurssi - esimerkki
| Ominaisuus | Pakollinen | Oletusarvo | Rajoitteet |
|---|---|---|---|
| Kurssikoodi | Kyllä | Kolme ensimmäistä merkkiä ovat kirjaimia ja kolme viimeistä ovat numeroita tai kirjaimia. | |
| Nimi | Kyllä | ||
| Laajuus | Kyllä | 1 | Kelpuutetaan vain kokonaislukuarvot ja puolikkaat. |
Tehtäviä
- Käynnistä Excel.
- Kirjoita jokaiseen kohteeseen liittyvät ominaisuudet pieniin taulukoihin joiden otsikkona on aina kohteen nimi. Kirjoita taulukkoon kohteen pakollisuus, mahdollinen oletusarvo ja mahdolliset rajoitteet ja muut huomautukset.
- Tallenna Erkalla piirtämäsi ER-kaavio U:-asemalle tiedonhallinta-hakemistoon nimellä opiskelijarekisteri.erkka. Tallenna myös tekemäsi excel-tiedosto samaan hakemistoon nimellä opiskelijarekisteri.xls
Reseptitietokanta
Suunnittele seuraavaksi reseptitietokanta edellisten esimerkkien mukaisesti. Piirrä ER-kaavio reseptitietokannasta Erkka-ohjelmalla ja määritä ominaisuuksien rajoitteet Excel-taulukkoon.
Lyhyt vaatimusmäärittely
- Sinulla on reseptejä, jotka on luokiteltu sen mukaan ovatko ne jälkiruokia, pääruokia, leivonnaisia jne. (ruokalajeja)
- Reseptiin liittyy aina valmistusaineita (maitoa, kananmunia, jauhoja jne.). Jokaista valmistusainetta käytetään tietty määrä, joka ilmaistaan sopivissa yksiköissä (litroja, desilitroja, grammoja, lukumäärä jne.)
- Reseptiin liittyy myös tietty määrä valmistusvaiheita.
- Reseptistä pitää aina tietää kuinka monen henkilön annos kyseisellä reseptillä syntyy.
Vinkki: Yritä keksiä yleistykset kaikille eri osasille mitä tavanomaisesta reseptistä löytyy. Näiden yleistyksien pohjalta voit määritellä kohteet ja niiden ominaisuudet. Tutki seuraavaa reseptiä ja mieti mitä vakio-osia siitä löytyy. Kuvittele että et osaisi ollenkaan lukea mitä ohjeessa tai aineksina lukee. Pyri hahmottamaan yleiset piirteet joilla voit kuvata kaikki mahdolliset aineet yms.
Banaanicurry - esimerkki reseptistä
- 2 kypsää banaania
- 1-2 rkl tulista currya
- 1 sipuli
- 1-3 valkosipulinkynsi
- 2 dl ruuanvalmistusjugurttia tai 2 dl kermaa
- 3 rkl mango- tai hedelmachutneyta
- ripaus suolaa
- öljyä
- Silppua sipuli ja murskaa valkosipulinkynsi
- Kuumenna pannussa oljya ja kuullota sipulisilppu
- Lisaa curryjauhe, valkosipuli, mangochutney ja suola
- Kiehuta miedolla lammolla viisi minuuttia, lisaa kerma ja kiehuta viela viisi minuuttia
- jos kaytat ruuanvalmistusjugurttia niin ala keitä sitä, juoksettuu helposti.
- Lohko banaanit viipaleiksi ja sekoita joukkoon.
- Tarjoaa persiljariisin kera... alkuperaisen ohjeen mukaan pitaisi syoda kylmänä mutta maistuu erinomaiselta myös lämpimänä :)
Tehtävät
- Etsi ja piirrä kohteet
- Piirrä kohteiden väliset suhteet
- Lisää kohteisiin ja suhteisiin niihin liittyvät ominaisuudet
- Määrittele ominaisuuksien pakollisuudet, oletusarvot ja rajoitteet
- Pyydä demo-ohjaajaa tarkistamaan kaaviosi. Tee mahdolliset korjaukset. Muista tallentaa kaaviosi.
piirrettyäsi kaaviota voit vilkaista vaihtoehtoista reseptiä. Jos kaaviosi soveltuu ilman muutoksia tämänkin reseptin tallentamiseen niin hyvä!
Tallenna Erkalla piirtämäsi kaavio U:-asemalle tiedonhallinta-kansioon resepti.erkka-nimellä.
Jalkapalloturnaus
Jos sinulle vielä jäi aikaa niin voit suunnitella myös jalkapalloturnausta varten tietokannan.
- Olet järjestämässä jalkapalloturnausta. Mieti millaisen tietokantajärjestelmän tarvitset turnauksen järjestämiseen.
- Kirjoita tietokannan vaatimusmäärittely, jossa mainitset mitä ominaisuuksia tietokantasovellukselta tarvitaan ja mitä tietoja tietokantaan pitää tallettaa.
- Kirjoita vaatimusmäärittely excelissä uudelle välilehdelle.
- Tarkistuta vaatimusmäärittelysi järkevyys demo-ohjaajalla.
- Piirrä vaatimusmäärittelysi pohjalta järjestelmää kuvaava ER-kaavio. Tarkistuta kaaviosi demo-ohjaajalla.
Tallenna Erkalla piirtämäsi kaavio U:-asemalle tiedonhallinta-kansioon futis.erkka-nimellä.
Mallivastaukset
Tehtävien mallivastaukset julkaistaan seuraavalla viikolla.

Käyttäjien kommentit