- Tämän ensimmäisen demokerran aiheena on tietokantojen suunnittelu.
Demon pääpaino on ER-kaavion piirtämisellä. Ensimmäiseksi käydään
vaiheittain läpi pienen opiskelijatietokannan suunnittelu.
Vaatimusmäärittely
Tietokannaltamme vaaditaan seuraavanlaisia asioita:
- Opiskelijoista on tallennettava oleellisimmat tiedot eli ainakin sotu, 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.
-
Kohdetyypit
Poimitaan ensin tietokannan vaatimusmäärittelyn perusteella
kaikki selkeät kohdetyypit. Kohdetyyppejä ovat:
- Opiskelija
- Laitos
- Tiedekunta
- Kurssi
- Käynnistä Microsoft Excel. Aloitetaan ER-kaavion piirtäminen excelin piirtotyökaluilla.
- Varmista, että piirtotyökalut ovat näkyvissä (View|Toolbars|Drawing)
- Valitse näytön alareunassa sijaitsevista piirtotyökaluista AutoShapes|Flowchart.
Piirrä työkirjaan pieni suorakulmio.
- Piirtämisen nopeuttamiseksi voit luoda oman työkalupalkin valinnalla
View|Toolbars|Customize.
- Valitse Toolbars-välilehdeltä New. Anna
työkalupalkille nimeksi vaikka Omat.
- Valitse Commands-välilehti.
- Valitse Categories-laatikosta AutoShapes
- Raahaa Commands-laatikosta seuraavat työkalut
omaan työkalupalkkiisi:
- Rectangle
- Oval
- Straight Connector
- Diamond
- sulje Customize-dialogi.
- Nyt voit piirtää ER-kaavion vaatimat kuviot helposti oman työkalupalkkisi
avustuksella
- Kirjoita suorakulmion sisään teksti Opiskelija. Keskitä teksti suorakulmion sisään.
Keskittäminen onnistuu klikkaamalla hiiren oikealla napilla valittuna olevan tekstilaatikon harmaata reunusta ja valitsemalla Format AutoShape
- Kopioi piirtämäsi suorakulmio leikepöydälle ja liitä se exceliin kolme kertaa. Kirjoita
uusien suorakulmioiden sisään tekstit Laitos,Tiedekunta,Kurssi
-
Suhteet
Seuraavaksi mietitään mitä suhteita kohteiden välillä esiintyy.
- Opiskelijat tekevät kurssiin liittyviä tenttejä
- Jokainen opiskelija kuuluu johonkin laitokseen
- Jokainen laitos kuuluu johonkin tiedekuntaan
- Jokaisen kurssin järjestää jokin tietty laitos
- Piirrä exceliin yksi timanttikuvio kuvaamaan yhtä suhdetta. Kirjoita suhdekuvion sisään teksti tenttii.
Keskitä teksti suhdekuvion sisälle. Tee jokaiselle suhteelle kopio valmiiksi muotoillusta kuviosta.
- Sijoita Tenttii-suhde Opiskelija- ja Kurssi-kohteiden
väliin. Yhdistä suhde kohteisiin Autoshapes|Connectors-valikon alta löytyvällä viivalla
- Yhdistä vastaavalla tavalla muut suhteet niihin liittyviin kohteisiin
Kardinaalisuudet
Kardinaalisuus kertoo, kuinka moneen suhteeseen kohde voi tai tulee osallistumaan. Vaihtoehdot ovat:
- Yhden suhde yhteen (1-to-1) esim. avioliitto (henkilö ja henkilö)
- Yhden suhde moneen (1-to-M) / Monen suhde yhteen (M-to-1) esim. kuntalaiset (kunta ja henkilö)
- Monen suhde moneen (M-to-M) esim. kirjastokirjan lainaaminen (kirja ja henkilö)
Tietokantamme kardinaalisuudet muodostuvat seuraavasti:
- Monta Opiskelijaa voivat tenttiä yhtä tai useampaa kurssia.
Kyseessä on siis selkeä M-to-M-suhde.
- Jokainen opiskelija kuuluu yhteen laitokseen (pääaine). Yhdellä laitoksella voi olla useita
opiskelijoita. Kyseessä on siis M-to-1-suhde (Opiskelija, Laitos)
- Jokainen laitos kuuluu yhteen tiedekuntaan. Yhdessä tiedekunnassa voi olla useita
laitoksia. Kyseessä on siis M-to-1-suhde (Laitos, Tiedekunta)
- Laitoksella järjestetään useita kursseja. Jokainen kurssi on yhden tietyn laitoksen
alaista opetusta. Kyseessä on siis 1-to-M-suhde (Laitos, Kurssi)
Piirrä kardinaalisuudet ER-kaavioon merkitsemällä jokaisen suhteen ja kohteen väliin
1 tai M suhteen kardinaalisuudesta riippuen.
Käytä Excelin piirtotyökaluista löytyvää TextBox-työkalua.
-
Ominaisuudet
Seuraavaksi liitetään jokaiseen kohteeseen ja suhteeseen niihin liittyvät ominaisuudet (attribuutit).
- Opiskelija
- Sotu
- Sähköpostiosoite
- Nimi (etunimi ja sukunimi)
- Osoite (lähiosoite, postinumero, postitoimipaikka)
- Puhelinnumerot
- Aloitusvuosi
- Kurssi
- Laitos
- Tiedekunta
- Tenttii
- Ominaisuudet esitetään ellipsien sisällä, jotka liitetään viivalla kohteeseen tai suhteeseen.
Koostetut ominaisuudet esitetään kukin omana ellipsinään, joka liitetään varsinaiseen koostettuun
ominaisuuteen. Moniarvoisten ominaisuuksien ellipsin reunaviiva on kaksinkertainen.
Lisää kaikki ominaisuudet kaavioosi.
Ominaisuus yhdistettynä kohteeseen
Koostettu ominaisuus
Moniarvoinen ominaisuus
Excelissä onnistuu kuvion reunuksen kaksinkertaistaminen helpoiten muuttamalla kuvion
ominaisuuksia valitsemalla Format AutoShape|Colors and Lines|Style|3 pt.
-
Avaimet
Ominaisuuksien joukosta pitää valita avainehdokkaat eli ne ominaisuudet, jotka yksilöivät kunkin kohteen.
Heikkojen kohteiden tai ominaisuuksia sisältävien suhteiden yksilöimiseen eivät
aina välttämättä riitä niiden omat ominaisuudet vaan mukaan on otettava niihin liittyviä
kohteita.
- Opiskelija
- Kurssi
- Laitos
- Tiedekunta
- Tenttii
- Opiskelija, Kurssi ja päivämäärä yhdistettynä
Avainehdokkaiden joukosta valitaan parhaiten sopiva yksilöiväksi avaimeksi.
Paras avain on yleensä kooltaan pienin ja varmimmin uniikkina pysyvä. Joskus
kannattaa tietokannan toiminnan tehostamiseksi luoda uusi ominaisuus, joka
toimii pelkästään avaimena.
- Opiskelija
- Sotu, koska kiinteämittaisena (aina 11 merkkiä) on mitä todennäköisimmin
aina lyhyempi kuin sähköpostiosoite. Kiinteämittaisen kentän käsittely on
usein myös hieman tehokkaampaa kuin vaihtuvamittaisen. Sotu on myös aina
varmasti uniikki.
- Kurssi
- Kurssikoodi, koska se on lyhyempi kuin nimi ja myös varmasti uniikki.
- Laitos
-
Nimi-ominaisuus vie turhan paljon tilaa ollakseen
hyvä perusavain. Luodaan uusi kenttä,
LaitosID, pelkästään avaimeksi.
- Tiedekunta
-
Nimi-ominaisuus on turhan pitkä
hyväksi perusavaimeksi. Luodaan uusi kenttä,
TiedekuntaID, pelkästään avaimeksi.
- Tenttii
- Muodostetaan yhdistetty avain 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ää, kun alleviivaa pelkän
päivämäärä-ominaisuuden. Varsinainen yhdistetyn avaimen luominen
tehdään vasta, kun muunnetaan ER-kaavio tietokannan relaatioiksi.
Merkitse avaimet ER-kaavioon alleviivattuina.
-
Tietotyypit
Jokaiselle ominaisuudelle pitää määrittää tietotyyppi. Tietotyyppiä valittaessa
pitää usein määritellä myös tietoa varten varattava tila. Tilanvarausta miettiessä
pitää olla erityisen tarkka, koska mikään ei ole ärsyttävämpää, kuin esim.
sukunimi-kenttä johon ei mahdu kirjoittamaan pitkää sukunimeään.
Tietotyyppi voi olla:
- Numeerinen
- Kokonaisluku
- Reaaliluku
NUMERIC(pituus, desimaalit)
- tarkka reaaliluku
DOUBLE PRECISION
- tarkkuus riippuu käytettävästä ohjelmistosta / käyttöjärjestelmästä / prosessorista
- Merkkijono
- Kiinteämittainen merkkijono
CHAR(pituus)
esim. henkilötunnus, joka on aina 11 merkkiä pitkä
- Vaihtuvamittainen merkkijono
VARCHAR(pituus)
esim. sukunimi
- Aika
- Päivämäärä (vuosi, kuukausi ja päivä)
- Kellonaika (tunti, minuutti ja sekunti)
- Aikaleima (vuosi, kuukausi, päivä, tunti, minuutti ja sekunti)
TIMESTAMP
esim. 2002-03-14 18:30:25
- Totuusarvo
BOOLEAN
esim. tosi tai epätosi
Kirjoita jokaiseen kohteeseen liittyvät ominaisuudet pieniin taulukoihin
joiden otsikkona on aina kohteen nimi. Kirjoita taulukkoon kohteen
tietotyyppi, pakollisuus, mahdollinen oletusarvo ja mahdolliset rajoitteet ja muut huomautukset.
Kohteen avaimena toimivan ominaisuuden tai ominaisuudet voi alleviivata tai merkitä
muuten korostettuna.
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. sotu tai viitenumero
Kurssi
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
Kurssikoodi | CHAR(6) | Kyllä | | Kolme ensimmäistä merkkiä ovat kirjaimia ja kolme viimeistä ovat numeroita tai kirjaimia. |
Nimi | VARCHAR(64) | Kyllä | | |
Laajuus | DOUBLE PRECISION | Kyllä | 1 | Kelpuutetaan vain kokonaislukuarvot ja puolikkaat. |
Tallenna ER-kaaviosi U:-asemalle
tietokannat-hakemistoon nimellä demo1.xls.
-
Pieni yritys
Piirrä seuraavaksi ER-kaavio pienen yrityksen käyttöön.
Vaatimusmäärittely
- Sinulla on yritys, jonka henkilöstöstä kullakin on tietty tehtävänimike.
Joitakin tehtävänimekkeitä ovat esim. projektipäällikkö, ohjelmoija ja
toimitusjohtaja.
- Yrityksen henkilöt joutuvat tekemään projekteja.
- Jokaisella projektilla on aina projektin toimeksiantaja, tekijä tai tekijät ja
yksi tai useampi valvoja.
- Projekteihin liittyy myös projektin
nimi, aloituspäivämäärä ja päättymispäivämäärä.
- Projektin tekijöitä
halutaan edelleen luokitella tarkemmin sen mukaan mikä heidän tarkka
tehtävänsä kussakin projektissa on (ohjelmointi, suunnittelu, testaus
jne).
- Tietokantaan halutaan tallentaa myös kaikkien yrityksen henkilöiden
nimet, puhelinnumerot ja sähköpostiosoitteet.
Suunnittele ja piirrä yrityksen käyttöön tuleva tietokanta
ER-mallinnuksella. Voit piirtää kaavion samaan excel-tiedostoon, kuin
edellisenkin, mutta uudelle välilehdelle.
- Etsi ja piirrä kohteet
- Piirrä kohteiden väliset suhteet
- Määrittele kardinaalisuudet
- Lisää kohteisiin ja suhteisiin niihin liittyvät ominaisuudet
- Valitse avaimet
- Määrittele ominaisuuksien tietotyypit, pakollisuudet, oletusarvot ja rajoitteet
Pyydä demo-ohjaajaa tarkistamaan kaaviosi. Tee mahdolliset korjaukset. Muista tallentaa kaaviosi.
Lisätehtävä
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.
Tehtävien mallivastaukset julkaistaan seuraavalla viikolla.