HAAGA-HELIA heti09 1 (27) 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ö... 10 Viiteavain ja viite-eheyssääntö... 11 Sovellusalueen eheyssäännöt... 14 Käsittely... 15 Access... 16 Yleistä... 16 Access-sovellus... 17 Perusobjektit... 17 Taulu... 19 Kysely... 22 Käsitteitä... 27
HAAGA-HELIA heti09 2 (27) Relaatiomalli Relaatiomalli on eräs tietomalli (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 Erinomainen väline tietokannan rakenteen ja käsittelyn kuvaamiseen Relaatiotietomallissa kaikki tieto tallennetaan taulukkomuotoon - relaatioihin (tauluihin)
HAAGA-HELIA heti09 3 (27) Peruskäsitteet 4. 1. Relaatio (Relation) 2. Attribuutti (Attribute) 3. Monikko (Tuple) Viralliset Käytännölliset Tiedostoista periytyvät Relaatio Taulu / Taulukko Attribuutti Sarake Kenttä Monikko Rivi Tietue Relaation nimi Attribuutit OPETTAJA Lyhenne Nimi Huone Vastaanotto BerTa Bergius 111 IsoSa Iso-Nikkilä 222 Ke 12-13 Monikot VirOu Virkki 333 VanVu Vanhala Arvo
HAAGA-HELIA heti09 4 (27) 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ä) 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 Relaation jokaisella rivillä tulee olla yhtä monta attribuuttia Attribuuttien järjestyksellä ei ole merkitystä (relaation attribuuteilla on yksikäsitteiset nimet)
HAAGA-HELIA heti09 5 (27) Relaatio Jokaisella relaatiolla on yksikäsitteinen nimi Jokaisessa relaatiossa on vähintään 1 attribuutti Relaatiossa ei ole pakko olla yhtään riviä (mutta niitä voi olla miljoonia) Relaatiokaava (Relation schema) Määrittelee relaation rakenteen (eli attribuutit) R(A1, A2,, An) R = relaation nimi A1, A2,, An = attribuuttilista esim: OPISKELIJA(opno, op_sukunimi, op_etunimi, op_aloitusvuosi)
HAAGA-HELIA heti09 6 (27) Attribuutti ja arvojoukko Tietyssä relaatiossa jokaisella attribuutilla on yksikäsitteinen nimi Jokaisen relaatiokaavan attribuuttiin liittyy arvoalue, joka sisältää attribuutin kaikki mahdolliset arvot Tyhjä arvo (NULL) sisältyy jokaiseen arvojoukkoon Relaatiotietomallissa attribuuttien 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 SQL:n tietotyyppien (Char, Int, ) ja niiden maksimipituuksien avulla esim. sukunimi varchar(20)
HAAGA-HELIA heti09 7 (27) Monikko koostuu arvoista ja niihin liittyvistä attribuuteista. monikko on siis tällaisten arvo-attribuutti parien joukko Arvo-attribuutti-pari sisältää merkityksen esim. hinta: 10,99 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 null OPETTAJA Lyhenne Nimi Huone Vastaanotto BerTa Bergius IsoSa Iso-Nikkilä 222 Ke 12-13
HAAGA-HELIA heti09 8 (27) Säännöt ~ määrittelevät tietokannan tauluissa yhtäaikaa sallitut rivit eli tietokannan sallitut tilat Arvojoukkoeheyssääntö Domain Integrity Kukin attribuutti on homogeeninen, eli sisältää arvoja vain yhdestä arvoalueesta esim. attribuutin sukunimi arvoksi ei saa kirjata puhelinnumeroa Kukin attribuutti on atominen, eli jakamaton esim. opiskelijan nimi on jaettavissa sukunimeen ja etunimeen (ja sovellusalue on kiinnostunut tästä jaosta) SQL-standardin mukaisia tietotyyppejä käsitellään SQL-kielen yhteydessä
HAAGA-HELIA heti09 9 (27) Avain ~ Key ~ Tunniste ~ Pienin mahdollinen joukko relaation attribuutteja, jotka riittävät yksilöimään jokaisen relaation rivin Avain voi siis koostua yhdestä tai useammasta attribuutista (ns. yhdistelmäavain) Avaimen arvo (tai sen osa) ei voi olla tyhjä Jokaisella relaatiolla on ainakin yksi avain Relaatiolla voi olla myös useampia avaimia (ns. avainehdokkaita / Candidate Key) usein avaimeksi valikoituu keinotekoisesti muodostettu numero (esim. opiskelijanumero, asiakasnumero, tilausnumero)
HAAGA-HELIA heti09 10 (27) 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 Pääavain Avain OPETTAJA Lyhenne Nimi Huone sotu BerTa Bergius 111 111111-aaaa IsoSa Iso-Nikkilä 222 222222-bbbb
HAAGA-HELIA heti09 11 (27) 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 (ilman viiteavaimia relaatiotietokanta ei toimi!) Viiteavain sijaitsee aina yhteyden moni (*) päässä Viiteavaimen arvo voi olla tyhjä, jos yhteys ei ole pakollinen 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 viiteavain OPETTAJA Lyhenne Nimi Huone KO-ohj FonLa Fontell BerTa Bergius 111 heti09 KO-ohjelma Tunnus Nimi al_vuosi heti09 Haaga-Helian tietojenkäsittely 2009 tiko05 Helian tietojenkäsittely 2005
HAAGA-HELIA heti09 12 (27) Esim: 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
HAAGA-HELIA heti09 13 (27) 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, joka nopeuttaa tiedon hakua
HAAGA-HELIA heti09 14 (27) 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. (näitä käsitellään myöhemmillä kursseilla)
HAAGA-HELIA heti09 15 (27) Käsittely Relaatiotietokannan käsittely perustuu relaatioalgebraan SQL-kielessä ko. toiminnot on toteutettu englannin kieltä muistuttavalla syntaksilla (Kutakin toimintoa käsitellään tarkemmin SQL:n yhteydessä) 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/
HAAGA-HELIA heti09 16 (27) 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
HAAGA-HELIA heti09 17 (27) 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
HAAGA-HELIA heti09 18 (27) Accessissä kaikki objektit (1-4) voidaan avata joko 1. Rakenteen tarkastelua ja muuttamista varten (design) 2. Tietosisällön tarkastelua tai muuttamista varten (open) Huom: Tällä kurssilla ehditään tutustumaan vain tauluihin ja kyselyihin
HAAGA-HELIA heti09 19 (27) 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)
HAAGA-HELIA heti09 20 (27) 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)
HAAGA-HELIA heti09 21 (27) Taulujen väliset yhteydet Viiteavaimet ja yhteydet taulujen välillä tehdään Relationships -työkalulla
HAAGA-HELIA heti09 22 (27) 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.
HAAGA-HELIA heti09 23 (27)
HAAGA-HELIA heti09 24 (27) 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
HAAGA-HELIA heti09 25 (27) 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
HAAGA-HELIA heti09 26 (27) 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
HAAGA-HELIA heti09 27 (27) Käsitteitä Avain (Key) Tietueen yksilöivä tieto, yksilön (tietojen) tunniste Relaatiotietokannassa attribuutti / pienin attribuuttijoukko, joka yksilöi relaation rivin Relaatiokaavio Tietokannan tietosisällön kuvaus, jossa kohdetta kuvataan relaatioina ja niiden välisinä yhteyksinä relaatiotietomallin mukaisesti graafisena piirroksena. Relaatiokaava (Relation schema) Formaali tapa kuvata relaation rakenne R(a1, a2, an) 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ö Viittaavan relaation viiteavaimen arvon on löydyttävä viitatun relaation pääavaimen arvojen joukosta Arvojoukkoeheyssääntö Attribuutin kaikkien arvojen on kuuluttava samaan arvojoukkoon ks myös Sanasto-linkki Kurssin kotisivuilta.