HAAGA-HELIA TIKO-05 1 (19) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Yksilön eheyssääntö ja Pääavain... 9 Viite-eheyssääntö ja Viiteavain... 10 Arvojoukkoeheyssääntö ja Tietotyyppi... 14 Sovellusalueen eheyssäännöt... 17 Käsittely... 18 Käsitteitä... 19
HAAGA-HELIA TIKO-05 2 (19) 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 Loogisen minimaalisuuden tavoittaminen Erinomainen väline tietokannan rakenteen ja käsittelyn kuvaamiseen Relaatiotietomallissa kaikki tieto tallennetaan taulukkomuotoon - relaatioihin (tauluihin)
HAAGA-HELIA TIKO-05 3 (19) 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 Vastaanotto BurOt Burman BenAn Benson 3012 Ke 12-13 Monikot VirOu Virkki 3012 VirPe Virkki 3012 Arvo
HAAGA-HELIA TIKO-05 4 (19) Ominaisuuksia: Relaatiot Jokaisella relaatiolla on yksikäsitteinen nimi Rivit Relaatiossa ei saa olla kahta täysin samanlaista riviä! (relaatio on rivien joukko ja tietty alkio voi esiintyä joukossa vain kerran) (-> yksilön eheyssääntö) Rivien järjestyksellä ei ole merkitystä (joukossa ei ole järjestystä) Attribuutit Relaation jokaisella rivillä tulee olla yhtä monta attribuuttia (ns. kiinteämittainen tietue) 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)
HAAGA-HELIA TIKO-05 5 (19) 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)
HAAGA-HELIA TIKO-05 6 (19) 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)
HAAGA-HELIA TIKO-05 7 (19) 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 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
HAAGA-HELIA TIKO-05 8 (19) Säännöt ~ määrittelee tietokannan tauluissa yhtä aikaa sallitut rivit eli tietokannan sallitut tilat 1. Yksilön eheyssääntö 2. Viite-eheyssääntö 3. Arvojoukkoeheyssääntö 4. Sovellusaluekohtaiset eheyssäännöt Eheys Yksittäisen tai useamman tietovaraston tietojen sisäinen ristiriidattomuus Eheyden valvonta a) Tiedonhallintajärjestelmä b) Sovellusohjelma c) Käyttäjä Tiedonhallintajärjestelmät tukevat eheyden valvontaa vaihtelevasti Vain osa määriteltävissä Rajoituksia Syntaksit voivat olla erilaisia Luotettavin tapa
HAAGA-HELIA TIKO-05 9 (19) Yksilön eheyssääntö ja Pääavain ~ 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 Avain ~ Key ~ Tunniste ~ Pienin mahdollinen joukko relaation attribuutteja, jotka riittävät yksilöimään jokaisen relaation rivin Avain voi siis koostua useammasta kentästä (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)
HAAGA-HELIA TIKO-05 10 (19) Viite-eheyssääntö ja Viiteavain ~ Foreign Key & Referential Integrity ~ Relaation attribuutti, jolla on sama arvoalue kuin toisen relaation pääavaimella ~ Viittaavan relaation viiteavain viittaa viitatun 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 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
HAAGA-HELIA TIKO-05 11 (19) 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 TIKO-05 12 (19) Viite-eheyden valvonta: Emorelaation päivitys Lisäys - Poisto / Pääavaimen muutos Rajoitettu / Restrict / No Action Poisto / pääavaimen muutos sallitaan joss lapsirelaatiossa ei esiinny viittauksia poistettavaan Vyörytys / Cascade Poisto / pääavaimen muutos sallitaan aina. Jos lapsirelaatioita on, nekin poistetaan / niiden viiteavaimen arvo päivitetään vastaavasti Tyhjä arvo / Set null Poisto / pääavaimen muutos sallitaan aina. Jos lapsirelaatioita on, niiden viiteavaimen arvoksi asetetaan null (huom. null arvojen oltava sallittuja ko. viiteavaimelle!) Oletusarvo / Set default Poisto / pääavaimen muutos sallitaan aina. Jos lapsirelaatioita on, niiden viiteavaimen arvoksi asetetaan oletusarvo (huom. oletusarvo oltava määritelty ko. viiteavaimelle!) Esim.
HAAGA-HELIA TIKO-05 13 (19) Lapsirelaation päivitys Lisäys / Viiteavaimen muutos Riippuvainen / Dependent Lisäys / muutos viiteavaimeen sallitaan joss emorelaatiossa on ko. viiteavainta vastaava pääavain Automaattinen / Automatic Lisäys / muutos viiteavaimeen sallitaan aina. Jos emotaulussa ei ole vastinriviä, se luodaan. (<- miten??) Tyhjä / Set null Lisäys / muutos viiteavaimeen sallitaan aina. Jos emotaulussa ei ole vastinriviä, viiteavaimen arvoksi asetetaan null. Oletusarvo / Set default Lisäys / muutos viiteavaimeen sallitaan aina. Jos emotaulussa ei ole vastinriviä, viiteavaimen arvoksi asetetaan oletusarvo. Poisto - Esim.
HAAGA-HELIA TIKO-05 14 (19) Arvojoukkoeheyssääntö ja Tietotyyppi Domain Integrity Kukin attribuutti on homogeeninen, eli sisältää arvoja vain yhdestä arvoalueesta Kukin attribuutti on atominen, eli jakamaton Toteutetaan määrittelemällä tietotyyppi (sekä mahd. max.pituus, välttämättömyys, oletusarvo, sallitut arvot, erilaisuus, ) Tietokannan hallintajärjestelmä huolehtii viite-eheyssäännön valvonnasta useamman mekanismin avulla: tietotyyppitarkistus oletusarvomääritykset (Default value) eheyssääntömäärittelyt (Check Constraint) (myös pakollisuus / not null -määrittelyt) erilaisuusmäärittelyt (Unique Constraint) herättimet (Trigger) Esim. Asiakkaan_tyyppi Char(10) Not null Default( yritys ) Check(value in yritys, yksityinen ),
HAAGA-HELIA TIKO-05 15 (19) SQL:n tietotyypit (tavallisimmat) Merkkijonot CHAR (n) VARCHAR(n) n välillä 1..255 Tarkat luvut DECIMAL [pituus [,desim:n pituus]] n:n mittainen merkkijono (kiinteämittainen) korkeintaan n:n mittainen merkkijono (vaihtuvamittainen) Esim. hloid CHAR (5) titteli VARCHAR (30) desimaaliluku Palkka DECIMAL (7,2) ==> ylin arvo 99 999.99 INTEGER kokonaisluku [-2 147 483648, 2 147 483647] SMALLINTEGER kokonaisluku NUMERIC Liukuluvut FLOAT [-32 768, 32 767] Liukuluku välillä [ 5,4*1079 7,2*1075] Hloid SMALLINT REAL DOUBLE PRECISION Aika DATE Päivämäärä tentti_pvm DATE TIME [time_precision] [WITH TIME ZONE] TIMESTAMP [time_precision] [WITH TIME ZONE] INTERVAL time_precision Kellonaika: tunti minuutti ja sekunti Kalenteriaika +kellonaika sekuntien tarkkuus, oletus 0 eli kokonaiset sekunnit aloitus_aika TIME
HAAGA-HELIA TIKO-05 16 (19) Null-arvoista Puuttuva arvo Tuntematon arvo 0 sisältyy kaikkiin arvojoukkoihin esitystavat ja käyttäytyminen eri operaatioissa vaihtelevat eri tiedonhallintajärjestelmissä lajittelu vertailut funktiot liitokset... toiminta testattava, jos haluaa välttää ennalta arvaamattomia tuloksia / seurauksia vältä mahdollisuuksien mukaan! jos et voi välttää, varaudu mahdollisuuksien mukaan
HAAGA-HELIA TIKO-05 17 (19) 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.
HAAGA-HELIA TIKO-05 18 (19) 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
HAAGA-HELIA TIKO-05 19 (19) 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 (kaavio), jossa kohdetta kuvataan relaatioina ja niiden välisinä yhteyksinä relaatiotietomallin mukaisesti. Kuvaus on riippumaton toteutusratkaisusta. 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