Avaimet, tietotyypit, kardinaalisuudet - Demo 2
Tällä demokerralla jatketaan edellisellä kerralla aloitettujen ER-kaavioiden parissa. Nyt merkitään kaavioihin perusavaimet, kenttien tietotyypit ja määritellään kohteiden väliset kardinaalisuudet.
Tee kuitenkin ensin edellisiä demoja siten, että saat reseptitietokannan ER-kaavion ja ominaisuuksien määrittämisen valmiiksi. Jalkapalloturnaukseen liittyviä tehtäviä ei tarvitse välttämättä tehdä.
Esivalmistelut
Jos teet demoja Agoran mikroluokan koneilla, niin tee ensin Erkkaa varten erillinen pikakuvake seuraavien ohjeiden mukaisesti. Pikakuvake täytyy luoda, koska Erkkaa varten täytyy olla käytössä oikea Java-versio.
- Pikakuvakkeen tekemisen voit aloittaa napsauttamalla työpöytää hiiren oikealla ja valitsemalla New | Shortcut.
- Ensimmäisessä vaiheessa joudut etsimään erkan ohjelmatiedoston Erkka.jar.
Tiedosto löytyy seuraavasta paikasta koneen hakemistorakenteessa:
C:\Program Files\erkka\
Seuraavaan vaiheeseen pääset Next-painikkeella. - Seuraavassa vaiheessa voit antaa pikakuvakkeelle nimen (Esim. Erkka).
- Nyt pikakuvake on ilmestynyt työpöydällesi, mutta sitä täytyy vielä hieman muuttaa.
- Napsauta pikakuvaketta hiiren oikealla ja valitse kohta Properties.
- Näkyville avautuneesta ikkunasta muutetaan Shortcut-välilehden tietoja seuraavasti:
- Kopioi seuraava komento hiiren oikean avulla Target-kenttään:
"C:\Program Files\jbuilder7\jdk1.3.1\bin\java.exe" -jar Erkka.jar
Komennolla käynnistetään Erkka käyttäen toista Java-versiota. - Varmista, että Start in-kohdassa lukee edelleen seuraava hakemistoviittaus:
C:\Program Files\erkka\
- Hyväksy lopuksi valinnat OK-painikkeella.
- Kopioi seuraava komento hiiren oikean avulla Target-kenttään:
- Tämän jälkeen voit käynnistää Erkka-ohjelman tuplanapsauttamalla tekemääsi pikakuvaketta.
- Aukaise edelliskerralla tekemäsi Opiskelijatietokannan ER-kaavio Erkka-ohjelmaan.
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ö)
- 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)
Tehtävät
-
Piirrä opiskelijatietokantakaavioon kardinaalisuudet ER-kaavioon merkitsemällä jokaisen suhteen ja kohteen väliin 1 tai M suhteen kardinaalisuudesta riippuen. Kardinaalisuuksia pääset Erkassa muuttamaan napauttamalla suhteen ja kohteen välisen viivan keskipistettä.
Avaimet
Ominaisuuksien joukosta pitää valita avaimet eli ne ominaisuudet, jotka yksilöivät kunkin kohteen. Yksilöimiseen voi riittää yksi ominaisuus tai voi joutua tekemään yhdistetyn avaimen useammasta ominaisuudesta.
Joidenkin 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. Opiskelijatietokannassa on seuraavat avaimet (joissain useampi vaihtoehtoja):
- Opiskelija
- Sotu tai Sähköpostiosoite
- Kurssi
- Nimi tai Kurssikoodi
- Laitos
- Nimi
- Tiedekunta
- Nimi
- Tenttii
- Opiskelija, Kurssi ja päivämäärä yhdistettynä
- 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 ominaisuus (attribuutti), LaitosID, pelkästään avaimeksi.
- Tiedekunta
- Nimi-ominaisuus on turhan pitkä hyväksi perusavaimeksi. Luodaan uusi ominaisuus, 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 kurssia 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 merkitsee pelkän päivämäärän perusavaimeksi. Varsinainen yhdistetyn avaimen luominen tehdään vasta, kun muunnetaan ER-kaavio tietokannan relaatioiksi.
Tehtäviä
- Merkitse avaimet ER-kaavioon valitsemalla ominaisuus ja ruksaamalla Primary key -valinta. Erkka ei mitenkään erityisesti korosta avainkenttiä, mutta muilla työkaluilla avainkentät voidaan näyttää alleviivattuina ohjeisen kuvan mukaisesti.
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
INTEGER
esim. 13
- Reaaliluku
NUMERIC(pituus, desimaalit)
- tarkka reaaliluku
- Kokonaisluku
- Merkkijono
- Kiinteämittainen merkkijono
CHAR(pituus)
esim. henkilötunnus, joka on aina 11 merkkiä pitkä
- Vaihtuvamittainen merkkijono
VARCHAR(maksimipituus)
esim. sukunimi
- Kiinteämittainen merkkijono
- Aika
- Päivämäärä (vuosi, kuukausi ja päivä)
DATE
esim. 2002-03-14
- Kellonaika (tunti, minuutti ja sekunti)
TIME
esim. 18:30:25
- Aikaleima (vuosi, kuukausi, päivä, tunti, minuutti ja sekunti)
TIMESTAMP
esim. 2002-03-14 18:30:25
- Päivämäärä (vuosi, kuukausi ja päivä)
Tehtäviä
- Avaa aiemmin Excel-tiedostoon määrittelemäsi kenttien ominaisuudet näkyviin.
- Valitse Erkassa jokainen ominaisuus vuorollaan ja tee sille seuraavat määritykset:
- Valitse alasvetovalikosta jokaiseen ominaisuuteen parhaiten sopiva tietotyyppi. Itsekeksityt perusavaimet (ID-kentät) kannattaa yleensä määritellä kokonaisluvuiksi (INTEGER). Jos käytät apuna Exceliin tekemääsi taulukkoa, niin mieti oikea tietotyyppi vielä kerran!
- Merkitse samalla myös kenttien pakollisuudet. Pakolliset kentät merkitään valinnalla NOT NULL, ei-pakolliset valinnalla NULL. Kenttiin, joihin voi keksiä oletusarvon, kannattaa valita DEFAULT-arvo. Arvon voit syöttää VALUE-kenttään. Jos käytät apuna Exceliin tekemääsi taulukkoa, niin mieti kenttien pakollisuukia ja oletusarvoja vielä kerran. Kaikkia oletusarvoja et voi välttämättä käyttää!
- Pyydä ohjaajaa tarkistamaan määrittelysi.
- Tallenna ER-kaaviosi U:-asemalle tietokannat-hakemistoon nimellä demo2.erkka.
Tietokannan luominen
- Varmista että ER-kaaviossasi ei ole missään kohdassa käytetty skandinaavisia merkkejä (å,ä tai ö).
- Valitse Erkasta SQL-välilehti. Jos kaikki on kunnossa niin Erkka luo tietokannan luomiseen tarvittavat SQL-lauseet. Jos luominen ei onnistu niin palaa ER-kaaviovälilehdelle ja varmista että kaikki kardinaalisuudet ovat paikoillaan ja jokaisella kohteella on määriteltynä perusavain (primary key). Kokeile sitten taas uudelleen SQL-välilehteä. F5-näppäimellä saat päivitettyä SQL-näkymän.
- Saatuasi Erkan muodostamaan SQL-lauseet ota yhteys kurssin tietokantapalvelimeen eristen ohjeiden avulla.
- Kopioi Erkasta SQL-lauseet leikepöydälle ja liitä ne ODBC Query Tooliin
- Yritä suorittaa SQL-lauseet painamalla F5
- Jos olet todella onnekas niin kaikki lauseet suorittuvat virheittä. Todennäköisesti
joudut kuitenkin järjestelmään SQL-lauseita uudelleen seuraavasti:
- Siirrä ensimmäisiksi ne SQL-lauseet joissa luodaan sellaisia tauluja joista ei ole viite-eheyttä muihin tauluihin. Viite-eheyttä ei voida määritellä jos sen kohteena olevaa taulua ei ole vielä ehditty luoda.
- Voit aivan ensimmäiseksi lisätä jokaista taulua vastaavat
DROP TABLE
-lauseet aivan ensimmäisiksi jolloin kaikki taulut aina ensimmäiseksi poistetaan ja vasta sitten luodaan uudestaan.DROP TABLE tiedekunta ; DROP TABLE laitos ; DROP TABLE kurssi ; DROP TABLE opiskelija ; DROP TABLE tenttii ;
- Jos ODBC Query Tool jatkaa virheistä herjaamista etkä itse löydä virhettä niin voit tarkistaa SQL-koodisi SQL-92 Validatorilla. Validaattori osaa paikallistaa virheet paremmin kuin ODBC Query Tool.
Reseptitietokanta
- Tee opiskelijatietokannan tapaan kardinaalisuuksien, perusavainten ja tietotyyppien määrittely edellisissä demoissa aloittamallesi reseptitietokannalle.
- Pyydä ohjaajaa tarkistamaan määrittelysi.
- Luo tietokantasi SQL-lauseilla opiskelijatietokannan tapaan.
Jalkapalloturnaus
- Jos sinulle jäi vielä aikaa niin tee kardinaalisuuksien, perusavainten ja tietotyyppien määrittely myös jalkapalloturnausta käsittelevään ER-kaavioon.
- Pyydä ohjaajaa tarkistamaan määrittelysi.
Käyttäjien kommentit