HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain (Key)... 10 Pääavain (Primary Key)... 10 Yliavain (Super Key)... 10 Viiteavain (Foreign Key)... 11 Toisioavain, sivuavain, hakuavain (Secondary Key)... 12 ER-kaaviosta relaatiokaavioksi... 13 Relaatiokaaviosta relaatiokaavoiksi... 15 Luokkakaaviosta relaatiokaavoiksi... 17
HELIA 2 (17) Looginen suunnittelu Tietokannan käsitteellinen malli sovitetaan käytettävän tietomallin mukaiseksi (esim. relaatiotietokannan malliksi) Looginen suunnittelu on riippumaton käytettävästä tietokantatuotteesta ja laitealustasta 1. Laadi relaatiokaavio käsitekaavion pohjalta 2. Johda relaatiokaavat 3. Normalisoi 4. Tarkista relaatiot suhteessa tietotarpeisiin 5. Korjaa relaatiokaaviota tarvittaessa 6. Määrittele eheyssäännöt (vaiheet 1 & 2 voi kokemuksen karttuessa yhdistää)
HELIA 3 (17) 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
HELIA 4 (17) Peruskäsitteet 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 Relaatiotietomallissa kaikki tieto tallennetaan taulukkomuotoon relaatioihin (tauluihin) Relaation nimi Attribuutit OPETTAJA Lyhenne Nimi Huone Vastaanotto BurOt Burman BenAn Benson 3012 Ke 12-13 Monikot VirOu Virkki 3012 VirPe Virkki 3012 Arvo
HELIA 5 (17) 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 6 (17) 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 Tietyssä relaatiossa jokaisella attribuutilla on yksikäsitteinen nimi Relaation aste = attribuuttien määrä Relaation koko = rivien määrä Relaatiokaava (Relation schema) Määrittelee relaation rakenteen (pysyvät ominaisuudet) R(A 1, A 2,, A n ) R = relaation nimi A 1, A 2,, A n = attribuuttilista
HELIA 7 (17) Attribuutti ja arvojoukko Jokaisen relaatiokaavan attribuuttiin A i liittyy arvojoukko / arvoalue dom(a i ), joka sisältää attribuutin A i 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 perus tietotyyppien (Char, Int, ) ja niiden maksimipituuksien avulla
HELIA 8 (17) 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
HELIA 9 (17) Relaatiotietokanta? joukko relaatioita? tiettyä kohdealuetta kuvaavien tietojen kokoelma joka on organisoitu relaatiotietomallin mukaisesti relaatiotietomalliin perustuvan tietokannan hallintajärjestelmän avulla toteutettu tietokanta ei yksiselitteistä tulkintaa! (huom. esim. atk-sopimuksissa) Codd:lla on joukko sääntöjä (1985), jotka tietokantatuotteen tulisi täyttää, jotta sillä olisi oikeus kutsua itseään relationaaliseksi... Conolly, Begg. Database Systems. 1999. s. 103-107 http://news.dcn-asu.ru/books/ Special.Edition.Using.Oracle8/ch01/0014-0016.html
HELIA 10 (17) Avaimet 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) Pääavain (Primary Key) Relaation avain tai mikäli niitä on useampia pääavaimeksi valittu avain Pääavaimeksi kannattaa valita attribuutti, jonka arvo ei muutu (ainakaan usein) Pääavaimen arvo ei voi olla tyhjä Yliavain (Super Key) Joukko relaation attribuutteja, jotka riittävät yksilöimään jokaisen relaation rivin
HELIA 11 (17) Viiteavain (Foreign Key) 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 Viiteavaimen arvo voi olla tyhjä, jos yhteys ei ole pakollinen Lisää viiteavaimesta viite-eheyssääntöjen yhteydessä viittattu relaatio LENTO PK: lento# viittaava relaatio viittattu relaatio LENTO- TOTEUTUS PK: lentotot# FK: lento# viittaava relaatio VARAUS PK: varaus# FK: lentotot#
HELIA 12 (17) 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
HELIA 13 (17) ER-kaaviosta relaatiokaavioksi 1. Jokainen m:n yhteys kuvataan omana relaationaan 2. Tertiääri ja ylemmän asteen yhteys muutetaan binääriyhteyksiksi jonka toiseksi osanottajaksi luodaan välittävä relaatio 3. Yhteys, johon liittyy attribuutteja kuvataan omana relaationaan 4. Jokainen moniarvoinen ominaisuus kuvataan omana relaationaan
HELIA 14 (17) Esim. Kurssihallinto
HELIA 15 (17) Relaatiokaaviosta relaatiokaavoiksi 1. Jokainen tavallinen yksilötyyppi kuvataan omana relaationaan 2. Jokainen yksiarvoinen ominaisuus liitetään sen relaation attribuutiksi, johon se liittyy 3. Jokaiseen heikkoon yksilötyyppiin liitetään viiteavain (määräävään yksilötyyppiin) 4. Jokainen 1:n yhteys kuvataan liittämällä viiteavain yhteyden n-päässä olevaan olioon 5. Jokainen 1:1 yhteys kuvataan liittämällä viiteavain toiseen osallistuvaan osapuoleen sen mukaan kumpi osapuoli on yhteydessä pakollinen 6. Jokainen alityyppi kuvataan omana relaationaan se. pääavain on sama kuin emotyypin pääavain pääavain määritellään myös viiteavaimeksi viittaamaan emotyyppiin. Ominaisuuksiksi määritellään vain sen omat emotyypistä poikkeavat ominaisuudet (ja mahd. viiteavaimet) Alityypin toteutusvaiheessa voidaan päätyä myös muunlaisiin ratkaisuihin!
HELIA 16 (17) Esim. Kurssihallinto
HELIA 17 (17) Luokkakaaviosta relaatiokaavoiksi 1. Olioluokka kuvataan omana relaationaan 2. Yksiarvoinen ominaisuus liitetään sen relaation attribuutiksi, johon se liittyy 5. Moniarvoinen ominaisuus kuvataan omana relaationaan 3. Itsenäisen olioluokan pääavaimeksi luodaan juokseva numero 4. Alityyppi kuvataan omana relaationaan se. pääavain on sama kuin emotyypin pääavain pääavain myös viiteavaimeksi viittaamaan emotyyppiin. Alityypin toteutusvaiheessa voidaan päätyä myös muunlaisiin ratkaisuihin! 5. Aggregaattiluokan pääavaimeksi luodaan juokseva numero, viiteavain viittaamaan koostuvaan luokkaan 6. Yhteysluokan pääavain muodostuu kunkin osallistuvan luokan pääavaimesta. Kukin näistä määritellään erikseen myös viiteavaimeksi 7. 1:n yhteys kuvataan liittämällä viiteavain yhteyden n- päässä olevaan olioon 7. m:n yhteys kuvataan omana relaationaan 8. Yhteys, johon liittyy attribuutteja kuvataan omana relaationaan