HELIA TIKO-05 1 (28) Relaatiomalli Relaatiomalli...2 Peruskäsitteet...3 Relaatio...5 Attribuutti ja arvojoukko...6 Monikko...7 Säännöt...8 Arvojoukkoeheyssääntö...8 Pääavain ja yksilön eheyssääntö...9 Viiteavain ja viite-eheyssääntö...10 Sovellusalueen eheyssäännöt...14 Käsittely...15 Access...16 Yleistä...16 Access-sovellus...17 Perusobjektit...17 Taulu...19 Kysely...22 Relaatiotietokanta?...27 Käsitteitä...28
HELIA TIKO-05 2 (28) Relaatiomalli Relaatiomalli on eräs tietomalleista (muita mm. hierarkkinen malli, verkkomalli) Tietomalli ~ Malli, jonka mukaan tietokannan tiedot organisoidaan. Tietomalli koostuu joukosta peruskäsitteitä, -sääntöjä ja - operaatioita Perusajatuksiltaan yksinkertainen yksiselitteinen selkeä Pohjautuu joukko-opin käsitteisiin Loogisen minimaalisuuden tavoittaminen Erinomainen väline tietokannan rakenteen ja käsittelyn kuvaamiseen Relaatiotietomallissa kaikki tieto tallennetaan taulukkomuotoon - relaatioihin (tauluihin)
HELIA TIKO-05 3 (28) Peruskäsitteet 1. Relaatio (Relation) 2. Attribuutti (Attribute) 3. Monikko (Tuple) Viralliset Käytännölliset Tiedostoista periytyvät Relaatio Taulu / Taulukko (Tiedosto) Attribuutti Sarake Kenttä Monikko Rivi Tietue Relaation nimi Attribuutit OPETTAJA Lyhenne Nimi Huone Sotu BurOt Burman 111111-aaaa BenAn Benson 3012 222222-bbbb Monikot VirOu Virkki 3012 333333-cccc VirPe Virkki 3012 444444-dddd Arvo
HELIA TIKO-05 4 (28) Relaation ominaisuuksia: Jokaisella relaatiolla on yksikäsitteinen nimi Relaatiossa ei saa olla kahta täysin samanlaista riviä! (relaatio on rivien joukko ja tietty alkio voi esiintyä joukossa vain kerran) Rivien järjestyksellä ei ole merkitystä (joukossa ei ole järjestystä) Relaation jokaisella rivillä tulee olla yhtä monta attribuuttia Tietyssä relaatiossa jokaisella attribuutilla on yksikäsitteinen nimi Kukin attribuutti on homogeeninen, eli sisältää arvoja vain yhdestä arvoalueesta Kukin attribuutti on atominen, eli jakamaton Attribuuttien järjestyksellä ei ole merkitystä (relaation attribuuteilla on yksikäsitteiset nimet)
HELIA TIKO-05 5 (28) Relaatio Määritelmä Olkoon D 1, D 2,, D n arvojoukkoja, joiden ei tarvitse olla erillisiä. Relaatio R on joukko monikkoja, joiden 1. arvo kuuluu joukkoon D 1, 2. arvo joukkoon D 2 jne. Relaatio on siis karteesisen tulon D 1 * D 2 * * D n osajoukko (Codd, 1970) Jokaisella relaatiolla on yksikäsitteinen nimi Relaatiokaava (Relation schema) Määrittelee relaation rakenteen (pysyvät ominaisuudet) R(A1, A2,, An) R = relaation nimi A1, A2,, An = attribuuttilista esim: OPISKELIJA(opno, op_sukunimi, op_etunimi, op_aloitusvuosi)
HELIA TIKO-05 6 (28) Attribuutti ja arvojoukko Tietyssä relaatiossa jokaisella attribuutilla on yksikäsitteinen nimi Jokaisen relaatiokaavan attribuuttiin Ai liittyy arvojoukko / arvoalue dom(ai), joka sisältää attribuutin Ai mahdolliset (atomiset) arvot Tyhjä arvo (NULL) sisältyy jokaiseen arvojoukkoon Relaatiotietomallissa attribuuttien arvojoukot / arvoalueet voidaan määritellä vapaasti attribuuttien merkityksen mukaan esim. sukunimi arvoalue sisältää kaikki olemassaolevat sukunimet Relaatiotietokantatuotteissa arvoaluekäsitettä ei yleensä tunneta eikä tueta Sarakkeet esitellään perustietotyyppien (Char, Int, ) ja niiden maksimipituuksien avulla esim. sukunimi varchar(20)
HELIA TIKO-05 7 (28) Monikko koostuu arvoista ja niihin liittyvistä attribuuteista. monikko on siis tällaisten attribuutti-arvo parien joukko Attribuutti -arvo-pari sisältää merkityksen esim. hinta: 10,99 Tarkan merkityksen selvittäminen vaatii yleensä enemmän tietoa Tyhjä arvo (Null) ~ Arvo puuttuu, koska sitä ei tiedetä ~ Arvo puuttuu, koska sitä ei ole Vertailu null-arvon kanssa mahdotonta Laskutoimitus null-arvon kanssa mahdoton Tietokantatuotteissa on mekanismeja, joilla null-arvoihin voi varautua OPETTAJA Lyhenne Nimi Huone Sotu BurOt Burman 111111-aaaa BenAn Benson 3012 222222-bbbb t VirOu Virkki 3012 333333-cccc VirPe Virkki 3012 444444-dddd NULL
HELIA TIKO-05 8 (28) Säännöt ~ määrittelee tietokannan tauluissa yhtäaikaa sallitut rivit eli tietokannan sallitut tilat Arvojoukkoeheyssääntö Yksilön eheyssääntö Viite-eheyssääntö Sovellusalueen eheyssäännöt Arvojoukkoeheyssääntö Domain Integrity Kukin attribuutti on homogeeninen, eli sisältää arvoja vain yhdestä arvoalueesta Kukin attribuutti on atominen, eli jakamaton SQL-standardin mukaisia tietotyyppejä käsitellään SQL-kielen yhteydessä
HELIA TIKO-05 9 (28) Avain ~ Key/ Tunniste ~ Pienin mahdollinen joukko relaation attribuutteja, jotka riittävät yksilöimään jokaisen relaation rivin Avain voi siis koostua useammasta attribuutista (ns. yhdistelmäavain) Avaimen arvo ei voi olla tyhjä Jokaisella relaatiolla on ainakin yksi avain Relaatiolla voi olla myös useampia avaimia (ns. avainehdokkaita / Candidate Key) Pääavain Avain OPETTAJA Lyhenne Nimi Huone Sotu BurOt Burman 111111-aaaa BenAn Benson 3012 222222-bbbb VirOu Virkki 3012 333333-cccc VirPe Virkki 3012 444444-dddd Pääavain ja yksilön eheyssääntö ~ Primary Key & Entity Integrity ~ Relaation avain tai mikäli niitä on useampia pääavaimeksi valittu avain Pääavaimen arvo (tai sen osa) ei voi olla tyhjä Pääavaimeksi kannattaa valita attribuutti, jonka arvo ei muutu (ainakaan usein) Oliopohjaisessa ohjelmistokehityksessä avaimeksi määritellään mitään merkitsemätön numero
HELIA TIKO-05 10 (28) Viiteavain ja viite-eheyssääntö ~ Foreign Key & Referential Integrity ~ Relaation attribuutti, jolla on sama arvoalue kuin toisen relaation pääavaimella ~ Relaation viiteavain viittaa toisen relaation pääavaimeen Relaatioiden väliset yhteydet toteutetaan viiteavaimien avulla Viiteavain sijaitsee aina yhteyden moni (*) päässä Viiteavaimen arvo voi olla tyhjä, jos yhteys ei ole pakollinen Viiteavain OPETTAJA Lyhenne Nimi Huone Sotu KOohjelma BurOt Burman 111111-aaaa Pääavain BenAn Benson 3012 222222-bbbb TIKOA KOohjelma Tunnus Nimi Laajuus TIKOA Tietotekniikan koulutusohjelma Aik.. 210 BITE Degree Program of Business Inform.. 210 Viite-eheyssääntö: ~ Viiteavaimen arvon on löydyttävä viitatun relaation pääavaimen arvoista (tai viiteavaimen on oltava tyhjä) ~ Ts. ei saa viitata sellaiseen riviin, jota kannasta ei löydy
HELIA TIKO-05 11 (28) Esimerkki Relaatiokaavat : Kurssi (krs_id, krs_nimi, krs_laajuus, krs_alku_pvm, krs_loppu_pvm) Opiskelija(opi_id, opi_sukunimi, opi_etunimi, opi_katuosoite, opi_postino, opi_puhno) Osallistuminen(krs_id (FK), op_id (FK), krs_arvosana) Relaatiot: Kurssi krs_id krs_nimi krs_laajuus krs_alku_pv k2227 Yrttitietous 5 28-Aug-06 k3331 Metsänhoito 9 28-Aug-06 Opiskelija opi_id opi_sukunimi opi_etunimi opi_katu o1007 Lokki Mervi Kolkekuja... o1008 Ahti Eino Pitkätie 5.. o1009 Kuusi Eero Aarnipolku Osallistuminen krs_id op_id krs_arvosana k2227 o1007 5 k2227 o1009 2 k3331 o1008 5 k3331 o1007
HELIA TIKO-05 12 (28) Relaatiokaavio: viitattu relaatio Kurssi krs_id krs_nimi krs_laajuus krs_alku_pvm krs_loppu_pvm PK: krs_id 1 viittaava relaatio 0..* Osallistuminen krs_id opi_id krs_arvosana 0..* PK: krs_id, opi_id FK: krs_id FK: opi_id viitattu relaatio 1 Opiskelija opi_id opi_sukunimi opi_etunimi opi_katuosoite opi_postino opi_puhno PK: opi_id
HELIA TIKO-05 13 (28) Muita avaimia Toisioavain, sivuavain, hakuavain ~ Secondary Key ~ Attribuutti tai attribuuttijoukko, jonka avulla tietoa haetaan usein esim. sukunimi Toisioavain ei yksilöi relaation riviä Relaatiolla voi olla useita toisioavaimia Toisioavaimen perusteella luodaan indeksi
HELIA TIKO-05 14 (28) Sovellusalueen eheyssäännöt Lisäksi on mahdollista määritellä sovellusalueen sisäisiä eheyssääntöjä Esim. Asiakkaasta tulee VIP-asiakas kun hänen kuukausittaisten ostojensa yhteismäärä on 3 kk:n aikana ylittänyt 2000 Tietokantatuotteiden tuki sovellusalueen eheyssääntöjen määrittelylle vaihtelee Vaatii yleensä ohjelmointimahdollisuuden esim. herätetoiminto (trigger), proseduuri tms.
HELIA TIKO-05 15 (28) Käsittely Relaatiotietokannan käsittely perustuu relaatioalgebraan Perusoperaatiot tiedon hakuun: alkuperäinen suomennos arkiselitys Selection, Restriction Valinta, rajoitus Rivien valinta Projection Projektio Sarakkeiden valinta Union Unioni Useammasta taulusta tietoja omille riveilleen Intersection Leikkaus Useammasta taulusta yhteiset tiedot Set Difference Erotus Ensimmäisestä taulusta tiedot joita ei löydy toisesta taulusta Join Liitos Useammasta taulusta tietoja samoille riveille Cartesian product Karteesinen tulo, ristitulo Useammasta taulusta tietoja siten että tiedot yhdistetään kaikin mahdollisin tavoin Eksaktit kuvaukset operaatiosta löytyvät Connolly, Begg. Luku 4 Relaatiosanastosta www.cs.helsinki.fi/relaatiosanasto/ SQL-kielessä ko. toiminnot on toteutettu englannin kieltä muistuttavalla syntaksilla (Kutakin toimintoa käsitellään tarkemmin SQL:n yhteydessä)
HELIA TIKO-05 16 (28) Access Yleistä Relaatiotietokantatyyppinen ohjelmisto, jossa on mukana myös sovellus- ja raporttikehitin Ohjelman käyttö levisi räjähdysmäisesti sen julkaisun jälkeen 1992 1993 Käyttäjinä ennemminkin tavalliset käyttäjät kuin atk-ammattilaiset Access venyy yllättävän moneen käyttöön henkilökohtaisista kortistoista laajoihin yritysratkaisuihin Huom: tiedon suojaus ja samanaikainen käyttö (tapahtumankäsittely) heikoissa kantimissa ODBC:n (Open Database Connectivity) avulla liitettävissä suuriin relaatiotietokantoihin (Taulut oikeassa, isossa tietokannassa, joka huolehtii samanaikaisesta käytöstä ja tapahtumankäsittelystä) Perso muistille, vie paljon levytilaa Tietokanta kannattaa tiivistää aika-ajoin
HELIA TIKO-05 17 (28) Access-sovellus Tietokanta sekä sitä käsittelevät ohjelmat tallennetaan samaan tiedostoon Ohjelman tietoriippuvuus Tietojen ohjelmariippuvuus Tiedostotyyppi.MDB Perusobjektit 1. Taulu 2. Kysely 3. Lomake 4. Raportti 5. Makro 6. Moduli + velhot TAULU KYSELY LOMAKE RAPORTTI MAKRO MODULI
HELIA TIKO-05 18 (28) Accessissä kaikki objektit (1-4) voidaan avata joko 1. Rakenteen tarkastelua ja muuttamista varten (design) 2. Tietosisällön tarkastelua tai muuttamista varten (open)
HELIA TIKO-05 19 (28) Taulu = Talletettu relaatio Tauluihin tallennetaan tietokantaan tulevat tiedot Taulu luodaan määrittelemällä sen sarakkeet sarakkeita on oltava vähintään yksi Taululle on määriteltävä avain joko jokin olemassaolevista sarakkeista tai niiden yhdistelmä tai erillinen (merkityksetön) numero Taululle annetaan nimi tallennuksen yhteydessä Käytä kuvaavia taulun nimiä (käytä systemaattisesti joko yksikkö- tai monikko-muotoa)
HELIA TIKO-05 20 (28) Vinkkejä 1. Määrittele ensin kaikkien kenttien tietotyypit. (Esim. pääavaimet -> Autonumber, jos (myös) viiteavain -> number.) Tallenna 2. Määrittele pääavain. Tallenna 3. Määrittele viiteavaimet Relationships -ikkunassa. Tallenna 4. Määrittele muut kenttäkohtaiset eheyssäännöt 5. Määrittele Indeksit Kun tauluun tallennetaan tietoa syntyvät tietueet (l. rivit)
HELIA TIKO-05 21 (28) Taulujen väliset yhteydet Viiteavaimet ja yhteydet taulujen välillä tehdään Relationships työkalulla (Tools Relationship) Huom. Muista rastittaa Edit Relatationships-ikkunassa vaihtoehto Enforce Referential Integrity.
HELIA TIKO-05 22 (28) Kysely Kyselyillä haetaan tauluista tietoa Kyselyssä voidaan yhdistää useamman taulun tietoa tyypillisesti viiteavainten avulla Kyselyssä halutaan usein mukaan vain tietyn hakuehdon täyttävät tietueet Kyselyssä voidaan ottaa mukaan vain osa taulujen sarakkeista Sarakkeiden järjestys voi poiketa taulun sarakkeiden järjestyksestä Rivit voidaan kyselyssä järjestää halutulla tavalla Kysely voidaan tallentaa, jolloin sille on annettava nimi Käytä kuvaavia kyselyn (näkymän) nimiä (käytä systemaattisesti joko yksikkö- vai monikko-muotoa) Alkuliite V_ tai Q_ saattaa olla hyödyllinen tällöin pystyt nopeasti päättelemään onko kysymyksessä taulu vai kysely Tallennettua kyselyä voidaan käyttää taulun tavoin: 1. Kyselyjä voidaan käyttää uusien kyselyjen pohjana 2. Niiden tietoja voidaan myös päivittää (ei kaikissa tapauksissa) ja päivitykset tallentuvat alkuperäiseen tauluun.
HELIA TIKO-05 23 (28)
HELIA TIKO-05 24 (28) Lomake Lomakkeella tiedot voidaan esittää havainnollisemmin kuin taulussa tai kyselyssä (= pelkkä taulukko) Lomakkeen avulla tiedon syöttö ja selailu on selkeämpää Kullakin lomakkeella on ns. perustaulunsa (tai kyselynsä) Yhdelle lomakkeelle voidaan kuitenkin koota tietoa useammasta taulusta alilomakkeiden avulla Kyselyjen käyttö lomakkeiden pohjana on suositeltavampaa kuin taulujen, koska kyselyjä voidaan tarvittaessa muuttaa joustavammin kuin tauluja Kun lomake tallennetaan tietokantaan sille annetaan nimi Käytä kuvaavia lomakkeen nimiä (käytä systemaattisesti joko yksikkö- vai monikko-muotoa) Etuliite f_ tai F_ saattaa olla tarkoituksenmukainen Tämän kurssin aikana ei paneuduta lomakkeisiin
HELIA TIKO-05 25 (28) Raportti Raportilla voidaan tiedot tulostaa havainnollisemmin kuin tauluna tai kyselynä Tiedot voidaan tulostaa tulostimelle, näytölle tai tiedostoon Kullakin raportilla on ns. perustaulunsa (tai kyselynsä) Yhdelle raportille voidaan kuitenkin koota tietoa useammasta taulusta aliraporttien avulla Kyselyjen käyttö raporttien pohjana on suositeltavampaa kuin taulujen, koska kyselyjä voidaan tarvittaessa muuttaa joustavammin kuin tauluja Kun raportti tallennetaan tietokantaan sille annetaan nimi. Käytä kuvaavia raportin nimiä (käytä systemaattisesti joko yksikkö- vai monikko-muotoa) Etuliite r_ tai R_ saattaa olla tarkoituksenmukainen Tämän kurssin aikana ei paneuduta raportteihin
HELIA TIKO-05 26 (28) Makro Makrolla voidaan automatisoida toistuvia toimenpiteitä Makro-ohjelmointi matkii käyttäjän näytöllä suorittamia toimenpiteitä Tämän kurssin aikana ei paneuduta makro-ohjelmointiin Moduli Ohjelmamoduleilla voidaan tehdä monimutkaisempaa laskentaa, kontrollirakenteita tms. Ohjelmointikieli on Access Basic, joka on osajoukko Visual Basicistä Tämän kurssin aikana ei paneuduta moduli-ohjelmointiin
HELIA TIKO-05 27 (28) Relaatiotietokanta? Relaatiomallin isä Codd määritteli 1985 joukon sääntöjä, jotka tietokannanhallintajärjestelmän tulisi täyttää, jotta sillä olisi oikeus kutsua itseään relationaaliseksi... http://www.ncb.ernet.in/education/modules/dbms/general/coddsrules.htm
HELIA TIKO-05 28 (28) Käsitteitä Relaatiokaava (Relation schema) Formaali, tekstimuotoinen tapa kuvata relaation rakenne R(a1, a2, an) Avain (Key) Tietueen yksilöivä tieto, yksilön (tietojen) tunniste Relaatiotietokannassa attribuutti / attribuuttijoukko, joka yksilöi relaation rivin Relaatiokaavio Tietokannan tietosisällön graafinen kuvaus, jossa kohdetta kuvataan relaatioina ja niiden välisinä yhteyksinä relaatiotietomallin mukaisesti. Kuvaus on riippumaton toteutusratkaisuista. Yksilön eheyssääntö Relaatiossa on oltava pääavain joka yksilöi jokaisen relaation rivin. Pääavain tai sen osa ei saa olla tyhjä Viite-eheyssääntö Relaation viiteavaimen arvon on löydyttävä viitatun relaation pääavaimen arvojen joukosta Arvojoukkoeheyssääntö Relaatiossa attribuutin kaikkien arvojen on kuuluttava samaan arvojoukkoon