Jos et ole vielä tehnyt loppuun kahta ensimmäistä demoa niin viimeistele ne ennen, kuin
jatkat näitä tehtäviä.
Edellisissä demoissa määriteltiin ER-kaavion pohjalta luotavat relaatiot ja niihin sisältyvät
kentät. Tällä kertaa tehdään varsinainen relaatioiden luominen SQL-kielen avulla. Samalla määritellään
myös relaatioiden väliset viite-eheydet.
- Käynnistä Microsoft Access 2000
- Luo uusi tietokanta (Blank Access Database)
- Anna uudelle tietokannalle nimeksi Opiskelija ja talleta
se U:-asemalle Tietokannat-kansioon.
- Access aukaisee dialogin, josta voit valita erilaisia vaihtoehtoja. SQL-koodin kirjoittaminen
tapahtuu Accessin kyselyjenlaatimistilassa. Valitse Queries|Create query in Design view.
- Sulje Show Table-dialogi.
- Valitse ylävalikoista View|SQL View.
- Nyt pääsetkin jo kirjoittamaan SQL-koodia. Käynnistä Excel ja aukaise näkyville
relaatioiden määrittelyt, jotka olet tehnyt edellisissä demoissa. Voit hätätilassa
käyttää apunasi myös malliratkaisua.
- Luodaan tietokannan relaatiot vaiheittain. Luominen täytyy aloittaa
aina sellaisista relaatioista, joista ei ole viittauksia muihin relaatioihin. Tällaisia
relaatioita opiskelijatietokannassamme ovat:
Luodaan ensimmäiseksi Postinumero-taulu kirjoittamalla:
CREATE TABLE Postinumero (
Postinumero CHAR(5) NOT NULL,
Postitoimipaikka VARCHAR(64) NOT NULL
)
Kenttien nimet, tietotyypit ja pakollisuusmääritykset saadaan suoraan Exceliin kirjoitetuista
tiedoista. Jos kenttä ei olisi pakollinen niin NOT NULL -määritys jäisi pois.
- Access suorittaa SQL-koodin klikkaamalla työkalupalkissa olevaa !-kuvaketta tai valitsemalla
Query|Run. Kokeile suorittaa kirjoittamasi SQL-koodi. Jos Access ei
anna mitään ilmoituksia niin koodisi on kirjoitettu oikein. Jos saat virheilmoituksen
niin korjaa virhe ja yritä uudelleen.
- Talleta kirjoittamasi SQL-koodi nimellä 01_Luo_Postinumero.
- Voit tarkistaa taulun syntymisen tutkimalla Tables-välilehteä Accessin
käynnistyessä aukaisemassa ikkunassa. Poista luomasi Postinumero-taulu valitsemalla se ja
painamalla DELETE-näppäintä.
- Ensimmäinen versio taulun luovasta SQL-koodista ei ole vielä täydellinen. Lisätään
SQL-koodiin taulun perusavaimen määrittely:
CREATE TABLE Postinumero (
Postinumero CHAR(5) NOT NULL,
Postitoimipaikka VARCHAR(64) NOT NULL,
CONSTRAINT Postinumero_PK
PRIMARY KEY (Postinumero)
)
CONSTRAINT-määrityksellä annetaan perusavaimelle yksilöllinen nimi, jonka avulla siihen
voidaan tarvittaessa myöhemmin viitata.
Yritä suorittaa uusi SQL-kysely ja varmista taulun ilmestyminen Tables-välilehdelle.
- Microsoft Accessilla ei ikävä kyllä voi SQL-kielellä määritellä taulun kenttiin
liittyviä oletusarvoja tai tarkistuksia. Lisätään nämä taulumäärityksiin myöhemmässä
vaiheessa Accessin omilla työkaluilla.
- Samaan tapaan kuin Postinumero-taulu niin luodaan myös Tiedekunta-taulu.
Aloita uusi kysely johon kirjoitat:
CREATE TABLE Tiedekunta (
TiedekuntaID INTEGER NOT NULL,
Nimi VARCHAR(64) NOT NULL,
CONSTRAINT Tiedekunta_PK
PRIMARY KEY (TiedekuntaID)
)
Suorita SQL-koodi. Talleta tämä koodi 02_Luo_Tiedekunta-nimellä.
- Seuraavaksi voidaankin luoda Laitos-relaatio:
CREATE TABLE Laitos (
LaitosID INTEGER NOT NULL,
Nimi VARCHAR(64) NOT NULL,
Tiedekunta INTEGER NOT NULL,
CONSTRAINT Laitos_PK
PRIMARY KEY (LaitosID)
)
Talleta SQL-koodi 03_Luo_Laitos-nimellä.
- Varmista, että Laitos-taulun luominen onnistui. Poista vielä
Laitos-taulu niin voit luoda sen uudelleen viite-eheysmääritysten kera.
- Lisätään viite-eheysmäärittely Laitos-taulun määrittelevään SQL-kyselyyn:
CREATE TABLE Laitos (
LaitosID INTEGER NOT NULL,
Nimi VARCHAR(64) NOT NULL,
Tiedekunta INTEGER NOT NULL,
CONSTRAINT Laitos_PK
PRIMARY KEY (LaitosID),
CONSTRAINT Laitos_FK_T
FOREIGN KEY (Tiedekunta)
REFERENCES Tiedekunta (TiedekuntaID)
)
Testaa SQL-kyselyn toimivuus.
- Access ei ikävä kyllä ymmärrä viite-eheyden toimintaan liittyviä määrityksiä SQL-kielellä
kerrottuna. SQL-92:en mukaan voisimme kirjoittaa seuraavasti:
CREATE TABLE Laitos (
LaitosID INTEGER NOT NULL,
Nimi VARCHAR(64) NOT NULL,
Tiedekunta INTEGER NOT NULL,
CONSTRAINT Laitos_PK
PRIMARY KEY (LaitosID),
CONSTRAINT Laitos_FK_T
FOREIGN KEY (Tiedekunta)
REFERENCES Tiedekunta (TiedekuntaID)
ON UPDATE CASCADE
ON DELETE NO ACTION
)
Ylläoleva koodi ei kuitenkaan Accessissa toimi joten tyydymme määrittelemään
viite-eheyssäännöt myöhemmin Accessin omilla työkaluilla.
- Luodaan seuraavaksi Opiskelija-taulu:
CREATE TABLE Opiskelija (
Sotu CHAR(11) NOT NULL,
Sahkopostiosoite VARCHAR(64),
Etunimi VARCHAR(32) NOT NULL,
Sukunimi VARCHAR(64) NOT NULL,
Lahiosoite VARCHAR(64) NOT NULL,
Postinumero CHAR(5) NOT NULL,
Aloitusvuosi SMALLINT NOT NULL,
Laitos INTEGER NOT NULL,
CONSTRAINT Opiskelija_PK
PRIMARY KEY (Sotu),
CONSTRAINT Opiskelija_FK_L
FOREIGN KEY (Laitos)
REFERENCES Laitos (LaitosID),
CONSTRAINT Opiskelija_FK_P
FOREIGN KEY (Postinumero)
REFERENCES Postinumero (Postinumero)
)
Talleta kysely 04_Luo_Opiskelija-nimellä. Testaa kyselyn toiminta.
- Luo kaikki loput opiskelijatietokantaan liittyvät relaatiot samalla tavalla kuin edeltävät
relaatiot luotiin. Luo viimeiset relaatiot seuraavassa järjestyksessä:
- Puhelinnumero
- Kurssi
- Tenttii
Talleta jokaiseen relaatioon liittyvät SQL-lauseet edellisien taulujen yhteydessä käytettyä
nimeämislogiikkaa noudattaen.
- Saatuasi valmiiksi SQL-lauseet jokaista relaatiota varten niin poista vielä kaikki
luomasi taulut. Luo koko tietokanta kerralla uudelleen suorittamalla oikeassa järjestyksessä
kaikki kirjoittamasi SQL-kyselyt. Kyselyn saa suoritettua tuplaklikkaamalla.
- Lisätään tietokantaan vielä viite-eheysmääritykset. Valitse Tools|Relationship.
- Saat näkyviin kaaviokuvan relaatioista ja niiden välisistä viite-eheysyhteyksistä. Järjestele
kuva selkeäksi.
- Klikkaa jokaista relaatioiden välistä viivaa ja määrittele aukeavan dialogin
avulla aina kyseisen yhteydet viite-eheyden toiminta. Oikean toiminnan näet
exceliin kirjoittamistasi rajoituksista.
- Sulje Relationships-ikkuna ja anna Accessin tallettaa sen asetukset.
Jos sinulla vielä riittää aikaa ja innostusta niin luo myös futistietokanta SQL:n avulla.