Luento 3
CD-rekisteri
Esimerkkinä laaditaan pienen CD-rekisterin ER-kaavio.
Tietokannan vaatimusmäärittely on seuraavanlainen:
- Tietokantaan halutaan tallentaa CD-levyn nimi, julkaisuvuosi,
kestoaika, julkaisija
- Jokaisesta CD-levystä pitää tietää myös minkä yhtyeen levy on
kyseessä. Jokaisesta yhtyeestä halutaan tallentaa tieto yhtyeen
kotimaasta, yhtyeen jäsenien nimistä, jäsenten kotimaasta
- Jokaisesta kappaleesta halutaan tallentaa nimi, kestoaika,
säveltäjä(t), sanoittaja(t), esittäjä(t) ja mahdollisia muitakin
vastaavia tietoja
- malli.xls
Kotka-projekti
Kotka-projektiryhmä on laatinut mittavat ER-kaaviot
Kurki-järjestelmään korvaavaa järjestelmää suunnitellessaan.
Relaatiotietokannan osat
Relaatiotietokanta muodostuu tauluista, jotka sisältävät
kenttiä.
Taulut (tables)
Taulun nimeksi kannattaa valita jokin selkeä ja kuvaava nimi.
Nimessä kannattaa kuitenkin välttää välilyöntejä, erikoismerkkejä
ja skandinaavisia merkkejä (å,ä,ö).
Jokainen taulu sisältää yhden tai useamman kentän
Kentät (fields)
Kenttiä luotaessa niille määritellään seuraavanlaisia
ominaisuuksia:
- Kentän nimi
Kentän nimeksi kannattaa valita jokin selkeä ja kuvaava nimi.
Nimessä kannattaa kuitenkin välttää välilyöntejä, erikoismerkkejä
ja skandinaavisia merkkejä (å,ä,ö).
- Tietotyyppi
- Numeerinen
- Merkkijono
- Aika
- Kiinteä vai vaihtuvamittainen kenttä?
- Maksimipituus ja mahdollinen tarkkuus
- Onko tieto pakollinen
mahdollisimman moni kenttä pitää määritellä pakolliseksi jolloin
vältetään NULL-arvojen tuomat ongelmat
- Tarkistukset syötettävän tiedon oikeellisuudelle tai
sallittujen arvojoukkojen joukko.
- Oletusarvo
AVAIMET (keys)
- perusavain (primary key)
- yksikäsitteinen muodostuen yhdestä tai useammasta
sarakkeesta
- taulusta ei saa löytyä identtisiä perusavaimen arvoja
- ei saa puuttua yhdeltäkään riviltä
- perusavaimen eheys (entity integrity)
- toissijaiset avaimet (secondary key, secondary index)
nopeuttavat taulun järjestämistä
- viite-avaimet
määritysalue on sama kuin jonkin perusavaimen
ER-mallin muuntaminen relaatioiksi
- Jokainen tavallinen kohde muutetaan
relaatioksi (tauluksi)
- Jokainen ER-diagrammista löytyvä ominaisuus
lisätään siihen liittyvään relaatioon
- Jokainen Many-to-Many -suhde muutetaan tavalliseksi
relaatioksi.
- Määritellään relaatioon yhtä monta viiteavainta (foreign key)
kuin on suhteeseen liittyviä kohteita
- määritellään perusavaimeksi viiteavaimista tehty yhdistetty
avain
- lisätään relaatioon siihen liittyvät muut kentät.
- Many-to-One -suhteet
- Ei luoda uusia relaatioita mutta lisätään ennestään olevaan
relaatioon uusi viiteavain. Lisäys tapahtuu kohteeseen, jonka
puolella on Many-merkintä.
- Suhteeseen liittyneet ominaisuudet lisätään ennestään olevaan
relaatioon
- Moniarvoisista ominaisuuksista luodaan uusi kohde josta
tehdään viittaus ominaisuuteen liittyvään kohteeseen
Viite-eheys (Referential Integrity)
- jokaista taulussa esiintyvää (NULL:sta poikkeavaa)
viiteavaimen arvoa pitää vastata sama perusavaimen arvo taulussa,
johon viiteavain viittaa
- yritettäessä rikkoa viite-eheyttä perusavaimen päivityksellä
on kolme vaihtoehtoa:
- NULLIFIES eli viiteavaimen nollaus
kaikki poistuvaan perusavaimeen viittaavat viiteavaimet muutetaan
NULLeiksi soveltuu vain sarakkeisiin, joilta ei ole kielletty
puuttuvaa arvoa (NOT NULL)
- CASCADES eli johdannaispoisto:
kaikki poistuvaan perusavaimeen viittaavat viiteavaimet ja
vastaavat rivit poistetaan
- RESTRICTED eli rajoitettu poisto:
voidaan poistaa vain perusavaimet, joihin ei ole viittauksia eli
kyseistä päivitystä ei tehdä.
- Viite-eheysmäärittelyt
- Many-to-Many -suhteisiin DELETE RESTRICTED, UPDATE
CASCADES
- Many-to-One -suhteet DELETE RESTRICTED, UPDATE CASCADES
- heikoille kohdetyypeille DELETE CASCADES, UPDATE
CASCADES
- malli.mdb