Relaatioalgebra. Luku Joukko-opilliset operaatiot Yhdiste eli unioni Leikkaus

Save this PDF as:
 WORD  PNG  TXT  JPG

Koko: px
Aloita esitys sivulta:

Download "Relaatioalgebra. Luku 3. 3.1 Joukko-opilliset operaatiot. 3.1.1 Yhdiste eli unioni. 3.1.2 Leikkaus"

Transkriptio

1 Luku 3 Relaatioalgebra Relaatioalgebra on yksinkertaisesti joukko relaatioiden käsittelyyn tarkoitettuja operaatioita. Vaikka yksittäiset operaatiot ovat varsin yksinkertaisia, voidaan niitä yhdistelemällä helposti tuottaa hyvinkin monimutkaisia kyselyitä vastaavia lausekkeita. Operaatiot muodostavat myös perustan SQL-kielelle, jota käsitellään tarkemmin luvussa 5. SQL:n omaksuminen ei vaadi relaatioalgebran täydellistä hallintaa, mutta ainakin karteesisen tulon käsitteeseen on syytä perehtyä. 3.1 Joukko-opilliset operaatiot Relaatioalgebra sisältää koko joukon joukko-opista tuttuja operaatioita. Ne käyttäytyvät normaalilla tavalla sillä poikkeuksella, että jotkin niistä vaativat relaatioiden yhteensopivuutta Yhdiste eli unioni Relaatioiden Relaatio 1 ja Relaatio 2 unioni Relaatio 1 Relaatio 2 sisältää ne monikot, jotka sisältyvät joko Relaatio 1 :een tai Relaatio 2 :een. Selvyyden vuoksi huomautettakoon, että yhdisteeseen kuuluvat myös ne monikot, jotka kuuluvat kumpaankin relaatioon. Joukko-opillisesta unionista poiketen relaatioalgebran unioni vaatii kuitenkin relaatioiden yhteensopivuutta eli sitä, että relaatioilla on sama määrä attribuutteja ja relaatioiden attribuuteilla on samat arvojoukot eli mahdollisten arvojen joukot. Tulosrelaation attribuuttien nimet ovat samat kuin yhdistettävien relaatioiden. Operaatiota on havainnollistettu kuvassa 3.1, jossa on esitetty kaksi yhteensopivaa relaatiota sekä niiden unioni. Kannattaa huomata, että jokaisen relaatioalgebran operaation tulos on relaatio eli monikkojen joukko, joka ei - kuten eivät joukot yleensäkään - sisällä duplikaatteja. Niinpä esimerkiksi <Orimatti,Teuras> sisältyy unioniin ainoastaan kerran, vaikka se kuuluukin sekä Asiakas- että Työntekijärelaatioon Leikkaus Relaatioiden Relaatio 1 ja Relaatio 2 leikkaus Relaatio 1 Relaatio2 sisältää ne monikot, jotka sisältyvät sekä Relaatio 1 :een että Relaatio 2 :een. Unionin 11

2 Asiakas Etunimi Sukunimi Orimatti Laupias Hanhikki Teuras Psaltari Hillosilmä Työntekijä Etunimi Sukunimi Luikuri Orimatti Lahtiranta Teuras Asiakas Työntekijä Etunimi Sukunimi Orimatti Laupias Hanhikki Luikuri Teuras Psaltari Hillosilmä Lahtiranta Asiakas Työntekijä Etunimi Sukunimi Orimatti Teuras Asiakas Työntekijä Etunimi Sukunimi Laupias Hanhikki Psaltari Hillosilmä Kuva 3.1: Esimerkki relaatioiden unionista, leikkauksesta ja erotuksesta. tavoin myös leikkaus vaatii relaatioiden yhteensopivuutta. Leikkausoperaatiota on havainnolistettu kuvassa Erotus Relaatioiden Relaatio 1 ja Relaatio 2 erotus Relaatio 1 Relaatio2 sisältää tietysti ne monikot, jotka sisältyvät Relaatio 1 :een, mutta eivät Relaatio 2 :een. Operaatiota on havainnollistettu kuvassa 3.1 ja sen edellytyksenä on jälleen relaatioiden yhteensopivuus Karteesinen tulo Karteesinen tulo eli ristitulo yhdistää relaatiot Relaatio 1 ja Relaatio 2 siten, että jokainen Relaatio 1 :n monikko yhdistetään jokaiseen Relaatio 2 :n monikkoon. Karteesisen tulon - samoin kuin muidenkin relaatioalgebran operaatioiden - tulos on siis uusi relaatio, jolla on sekä Relaatio 1 :n että Relaatio 2 :n attribuutit. Tarkemmin sanottuna karteesisen tulon Relaatio 1 Relaatio 2 tulosrelaation kaavassa esiintyvät ensin Relaatio 1 :n attribuutit siinä järjestyksessä ja samoin nimettynä kuin Relaatio 1 :ssä ja sitten Relaatio 2 :n attribuutit niin ikään siinä järjestyksessä ja samoin nimettynä kuin Relaatio 2 :ssa. Kuvissa 3.2 ja 3.3 on havainnollistettu karteesisen tulon käsitettä käyttäen esimerkkinä tuloja Asiakas Työntekijä sekä Tuote Toimittaja. Kummassakis tapauksessa relaatioilla on samannimisiä attribuutteja, joten tulosrelaatioiden attribuuttien nimiä on tarvittaessa selvennetetty alkuperäisten relaatioiden nimillä. Myöhemmin opitaan, miten nimeämisongelmat voidaan välttää uudelleennimeämisoperaatiota käyttäen. Vaikka karteesisella tulolla onkin operaationa käyttöä vain harvoin, on se käsitteenä erityisen keskeinen sekä relaation käsitteen että relaatioiden yhdistämisen kannalta. On syytä huomata, että karteesinen tulo ei muista joukko-opillisista operaatioista poiketen vaadi relaatioiden yhteensopivuutta. Karteesisen tulon käsitteen avulla voimme myös määritellä relaation täsmällisemmin kahden tai useamman joukon karteesisen tulon osajoukkona. 12

3 Asiakas Etunimi Sukunimi Orimatti Laupias Hanhikki Teuras Psaltari Hillosilmä Työntekijä Etunimi Sukunimi Luikuri Orimatti Lahtiranta Teuras Asiakas Työntekijä Asiakas.Etunimi Asiakas.Sukunimi Työntekijä.Etunimi Työntekijä.Sukunimi Orimatti Teuras Luikuri Lahtiranta Orimatti Teuras Orimatti Teuras Laupias Psaltari Luikuri Lahtiranta Laupias Psaltari Orimatti Teuras Hanhikki Hillosilmä Luikuri Lahtiranta Hanhikki Hillosilmä Orimatti Teuras Kuva 3.2: Esimerkki relaatioiden karteesisesta tulosta. Tuote.Id Tuote.Nimi... ToimittajaId Toimittaja.Id Toimittaja.Nimi 1 Hilavitkutin Jaskan vimpain 1 Hilavitkutin Orimattilan kone 2 Vimpain Jaskan vimpain 2 Vimpain Orimattilan kone 3 Masiina Jaskan vimpain 3 Masiina Orimattilan kone 4 Jiirisaha Jaskan vimpain 4 Jiirisaha Orimattilan kone Kuva 3.3: Kuvan 2.3 relaatioiden Tuote ja Toimittaja karteesinen tulo. Jo aiemmin tarkastelimme joukkoja {Lissu, Masa} ja {Tuulilasi, Eeva} sekä näiden joukkojen relaatiota Tilaus = {<Lissu,Eeva>,<Masa,Tuulilasi>}. Relaatio Tilaus siis tosiaan on joukkojen karteesisen tulon osajoukko ja sen merkityskin on ilmeinen: Lissu tilaa Eevaa ja Masa Tuulilasia. Mikä sitten on kuvassa 2.3 esitetyn Asiakas-relaation merkitys? Relaatio on selvästikin joukkojen {1, 2, 3}, {Orimatti, Laupias, Hanhikki} ja {Teuras, Psaltari, Hillosilmä} karteesisen tulon osajoukko 1. Esimerkiksi se, että arvot 1, Orimatti ja Teuras ovat relaatiossa Asiakas, on tulkittavissa siten, että Orimatin sukunimi on Teuras ja asiakasnumero 1. Monikko <1,Orimatti,Psaltari> kuuluu myös karteesiseen tuloon, mutta ei ole Asiakas-relaatiossa, koska Orimatin sukunimi ei ole Psaltari. 3.2 Perusoperaatiot Relaatioalgebran operaatiot kohdistuvat relaatioihin ja ne tuottavat tuloksenaan relaation. Siten operaatioita voidaan kirjoittaa sisäkkäin ja peräkkäin siten, että edellisen operaation tulosrelaatio on seuraavan operaation kohteena. 1 Joukot voitaisiin tietysti valita myös toisin. Attribuutin Id arvojoukko voisi olla vaikkapa luonnollisten lukujen joukko ja attribuuttien Etunimi ja Sukunimi arvojoukot kaikkien etu- ja sukunimien joukot tai vielä yleisemin kaikkien merkkijonojen joukot. 13

4 3.2.1 Valinta σ Valintaoperaatio σ valitsee relaatiosta eli taulusta tietyt ehdot täyttävät monikot eli rivit 2. Jos esimerkiksi haluamme valita kaikki ne asiakkaat, joiden etunimi on Orimatti, voimme käyttää valintaa seuraavasti: σ Etunimi= Orimatti (Asiakas). Valintaoperaation toimintaa on havainnollistettu kuvassa 3.4. σ Etunimi= Orimatti (Asiakas) valitsee siis kuvan vasemmanpuoleisessa relaatiossa tummennetun rivin ja sen tuloksena saadaan kuvassa oikealla esitetty relaatio. Voimme myös halutessamme eksplisiittisesti nimetä tulosrelaation ja sen attribuutit ja käyttää asetuslausetta seuraavasti: Tulos(Numero, Etu, Suku) σ Etunimi= Orimatti (Asiakas). Tulosrelaation käyttöä on havainnollistettu kuvassa 3.5. Ainoa ero kuvaan 3.4 on tietysti se, että tulosrelaatiolla ja sen attribuuteilla on toiset nimet. Yleisesti valintaoperaatio σ on muotoa σ Ehto (Relaatio), missä Relaatio ja Ehto ovat tietysti operaation kohderelaatio ja valintaehto; tulosrelaation attribuuttien nimet ovat samat kuin kohderelaatiossa. Valintaehto voi periaatteessa olla mikä tahansa totuusarvoinen lauseke. Käytännössä se kuitenkin useimmiten koostuu vertailuista, joissa operandeina eli vertailun kohteina voidaan käyttää kohderelaation attribuuttien arvoja ja vakioita ja vertailuoperaatioina operaatioita =,, <,, > ja. Operaatioiden <,, > ja käyttö edellyttää luonnollisesti sitä, että attribuutin arvojoukko on järjestetty 3. Merkkijonovakiot erotetaan attribuuttien nimistä heittomerkkejä käyttäen. Ehtoja voidaan tavalliseen tapaan yhdistellä konjunktion AND ja disjunktion OR avulla sekä negaation NOT avulla. Ehtojen normaalia arviointijärjestystä - eli vasemmalta oikealle - voidaan muuttaa sulkeiden avulla. Kuten edellä jo mainittiin, on jokaisen relaatioalgebran operaation tulos relaatio, joten tulokseen voidaan kohdistaa uusia operaatioita. Tämä onnistuu joko kirjoittamalla operaatioita sisäkkäin tai peräkkäin. Voisimme esimerkiksi valita relaatioiden Tuote ja Toimittaja karteesisesta tulosta kaikki ne monikot, joissa ToimittajaId=Toimittaja.Id. Kirjoittaen operaatiot sisäkkäin päädymme seuraavaan lausekkeeseen: σ ToimittajaId=Toimittaja.Id (Tuote Toimittaja). Lauseketta on havainnollistettu kuvassa 3.6; alla esitettyyn tulosrelaatioon on valittu yllä esitetystä karteesisesta tulosta tummennetut rivit. Jos taas haluamme kirjoittaa operaatiot peräkkäin, voimme ensin esitellä apurelaation Apu, johon ensimmäisen operaation tulos tallennetaan 4 : 2 Lukija, joka jo tuntee SQL:ää, voi ajatella valintaoperaation vastaavan SQL-kyselyn WHERE-osaa. 3 Kokonaislukujen ja reaalilukujen lisäksi myös esimerkiksi merkkijonoilla voidaan katsoa olevan järjestys eli aakkosjärjestys. 4 Relaatiossa Apu on tietysti oltava yhtä monta attribuuttia kuin relaatioiden Tuote ja Toimittaja tulossa. Tilan säästämiseksi kaavassa on lueteltu vain osa attribuuteista. 14

5 Asiakas Id Etunimi Sukunimi 1 Orimatti Teuras 2 Laupias Psaltari 3 Hanhikki Hillosilmä Id Etunimi Sukunimi 1 Orimatti Teuras Kuva 3.4: Lausekkeen σ Etunimi= Orimatti (Asiakas) toiminta ja tulos. Asiakas Id Etunimi Sukunimi 1 Orimatti Teuras 2 Laupias Psaltari 3 Hanhikki Hillosilmä Tulos Numero Etu Suku 1 Orimatti Teuras Kuva 3.5: Kuvan 3.4 lauseke apurelaatiota käyttäen. Apu(TuoId, TuoNimi,...) Tuote Toimittaja. Jos attribuutteja Tuote.ToimittajaId ja Toimittaja.Id vastaavien Apurelaation attribuuttien nimiksi valittiin TuoToimId ja ToimId, voimme nyt valita Apu-relaatiosta ne rivit, joissa TuoToimId=ToimId seuraavasti: σ TuoToimId=ToimId (Apu). Peräkkäin kirjoitettuina operaatiot siis toimivat samalla tavalla ja tuottavat saman tuloksen kuin sisäkkäin kirjoitettuina. Toisinaan sisäkkäin kirjoitetut lausekkeet ovat kuitenkin siksi monimutkaisia, että ne on syytä kirjoittaa peräkkäin apurelaatioita käyttäen. Valintaoperaatio on selvästikin kommutatiivinen eli σ Ehto1 (σ Ehto2 (Relaatio)) = σ Ehto2 (σ Ehto1 (Relaatio)) mille tahansa ehdoille Ehto 1 ja Ehto 2 sekä relaatiolle Relaatio. Lisäksi myöhemmin SQL-kyselyitä kirjoittaessamme käytämme hyväksemme sitä, että mille tahansa ehdoille Ehto 1,..., Ehto n ja relaatiolle Relaatio on voimassa σ Ehto1 (...(σ Ehton (Relaatio))) = σ Ehto1 AND... AND Ehto n (Relaatio). On ehkä vielä syytä huomauttaa, että mikäli yksikään kohderelaation monikoista ei täytä valintaehtoa, on tuloksena tyhjä relaatio. Esimerkiksi valinta σ Hinta<0.50 (Tuote) tuottaa kuvassa 3.7 esitetyn relaation Projektio π Projektio π valitsee relaatiosta eli taulusta tietyt attribuutit eli sarakkeet 5. Voimme esimerkiksi valita kaikkien asiakkaittemme etu- ja sukunimet seuraavasti: 5 SQL:ää hallitseva voi ajatella projektion vastaavan suunnilleen SQL-kyselyn SELECT-osaa. 15

6 Tuote Toimittaja Tuote.Id Tuote.Nimi... ToimittajaId Toimittaja.Id Toimittaja.Nimi 1 Hilavitkutin Jaskan vimpain 1 Hilavitkutin Orimattilan kone 2 Vimpain Jaskan vimpain 2 Vimpain Orimattilan kone 3 Masiina Jaskan vimpain 3 Masiina Orimattilan kone 4 Jiirisaha Jaskan vimpain 4 Jiirisaha Orimattilan kone Tuote.Id Tuote.Nimi... ToimittajaId Toimittaja.Id Toimittaja.Nimi 1 Hilavitkutin Orimattilan kone 2 Vimpain Jaskan vimpain 3 Masiina Jaskan vimpain 4 Jiirisaha Orimattilan kone Kuva 3.6: Lausekkeen σ ToimittajaId=Toimittaja.Id (Tuote Toimittaja) toiminta ja tulos. Id Nimi Kuvaus Hinta ToimittajaId Kuva 3.7: Lausekkeen σ Hinta<0.50 (Tuote) tulos. π Etunimi, Sukunimi (Asiakas) Edellistä operaatiota on havainnollistettu kuvassa 3.8; operaatio valitsee vasemmalla esitetystä kohderelaatiosta tummennetut sarakkeet. Yleisessä tapauksessa operaatio on muotoa π Attribuutti1,...,Attribuutti n (Relaatio), missä Attribuutti 1,...,Attribuutti n ovat valittavat attribuutit ja Relaatio operaation kohderelaatio. Jotta projektio olisi mielekäs, on kohderelaatiolla tietysti oltava valittavat attribuutit. Käyttämällä valintaa ja projektiota voimme valita kaikkien niiden tuotteiden nimet, jotka maksavat yli kymmenen euroa seuraavasti: π Nimi (σ Hinta>10 (Tuote)) Sisempi valintaoperaatio siis valitsee ne Tuote-taulun rivit, joissa attribuutin Hinta arvo on suurempi kuin 10. Ulompi operaatio eli projektio taas valitsee sisemmän operaation tulostaulusta Nimi-sarakkeen 6. Lauseketta on havainnollistettu kuvassa Uudelleennimeäminen ρ Edellä esiteltiin, miten relaatioita ja attribuutteja voidaan nimetä uudelleen asetuslausetta käyttäen. Toisinaan on kuitnekin kätevämpää käyttää uudelleennimeämisoperaatiota ρ, jonka avulla voidaan nimetä uudelleen sekä relaatioi- 6 Relaatio määriteltiin aiemmin kahden tai useamman joukon karteesisen tulon osajoukoksi, joten relaatiolla pitäisi periaatteessa olla vähintään kaksi attribuuttia. Relaatioalgebran kannalta yhden attribuutin relaatiot eivät kuitenkaan ole mikään ongelma. 16

7 Asiakas Id Etunimi Sukunimi 1 Orimatti Teuras 2 Laupias Psaltari 3 Hanhikki Hillosilmä Etunimi Orimatti Laupias Hanhikki Sukunimi Teuras Psaltari Hillosilmä Kuva 3.8: Operaation π Etunimi, Sukunimi (Asiakas) toiminta ja tulos. Tuote Id Nimi Kuvaus Hinta ToimittajaId 1 Hilavitkutin Laatuisa vitkutin Vimpain Vimmattu vimpaaja Masiina Tuotantoväline lisäarvon tuottamiseen Jiirisaha Komea sähkötyökalu Id Nimi Kuvaus Hinta ToimittajaId 1 Hilavitkutin Laatuisa vitkutin Vimpain Vimmattu vimpaaja Masiina Tuotantoväline lisäarvon tuottamiseen Nimi Hilavitkutin Vimpain Masiina Kuva 3.9: Lausekkeen π Nimi (σ Hinta>10 (Tuote)) toiminta ja tulos. ta että attribuutteja 7. Yleisessä tapauksessa relaation Relaatio(Attr 1,...,Attr n ) uudelleen nimeävä operaatio on muotoa ρ Relaatio (Attr 1,...,Attr n ) (Relaatio), missä Relaatio on relaation Relaatio uusi nimi ja Attr 1,...,Attr n attribuuttien Attr 1,...,Attr n uudet nimet. Uudelleennimeämisoperaation sijasta on kuitenkin usein selkeämpää käyttää apurelaatiota, edellä esitetty uudelleennimeömisoperaatio kun vastaa seuraavaa lauseketta: Relaatio (Attr 1,...,Attr n) Relaatio(Attr 1,...,Attr n ). Esimerkiksi tapauksesta, jossa selkeyssyistä pitäisi ehkä käyttää apurelaatioita, käy hyvin vaikkapa seuraava kaikkien hilavitkutinta kalliimpien tuotteiden nimet valitseva lausekehirviö: π Nimi (σ NimiB= Hilavitkutin AND Hinta>HintaB (Tuote ρ TuoteB(NimiB, HintaB) (π Nimi, Hinta (Tuote)))). 7 SQL-kielessä uudelleennimeämistä vastaa AS-operaatio. 17

8 3.3 Liitosoperaatiot Liitosoperaatio Edellä opittiin, miten karteesisen tulon avulla voidaan yhdistää tauluja siten, että jokaisen taulun jokainen rivi yhdistetään muiden taulujen jokaiseen riviin. Karteesista tuloa käytetään vain harvoin yksinään ja tulon tuloksena syntyvään relaatioon kohdistetaankin usein valintaoperaatio. Karteesinen tulo ja valinta σ voidaan yhdistää liitosoperaatioksi, joka on muotoa Relaatio 1 Ehto Relaatio2, missä Relaatio 1 ja Relaatio 2 ovat liitettävät relaatiot ja Ehto liitosehto. Liitosoperaatio vastaa tulon ja valinnan yhdistelmää seuraavasti: Relaatio 1 Ehto Relaatio2 = σ Ehto (Relaatio 1 Relaatio 2 ). Edellä esitettyä liitosoperaation sekä valinnan ja karteesisen tulon yhteyttä voidaan SQL-kielen yhteydessä käyttää hyväksi ns. alikyselyiden poistamisessa. Myös tietokantojen tehokkaan toiminnan kannalta operaatio on erittäin keskeinen, sillä tehokkaat kyselyoperaatiot edellyttävät tehokkaasti toteutettua liitosoperaatiota. Relaatioalgebran kannalta liitosoperaatiota voidaan kuitenkin pitää syntaktisena sokerina eli lyhennysmerkintänä, joka ei lisää kielen ilmaisukykyä, mutta helpottaa kirjoittamista. Esimerkiksi aiemmin esitetty lauseke σ ToimittajaId=Toimittaja.Id (Tuote Toimittaja), jonka toimintaa havainnollistettiin kuvassa 3.6, voidaan liitosoperaatiota käyttäen kirjoittaa hieman lyhyemmin Tuote ToimittajaId=Toimittaja.Id (Toimittaja) Luonnollinen liitos * Myös luonnollista liitosta voidaan pitää eräänlaisena lyhennysmerkintänä. Kun liitosoperaatiossa käytetään liitosehtona yhtäsuuruutta = ja liitosehdossa vertaillaan samannimisten attribuuttien arvoja, voidaan liitosoperaation sijasta käyttää luonnollista liitosta. Liitos Relaatio 1 Relaatio1.Attribuutti=Relaatio2.Attribuutti Relaatio 2 eli liitos, jossa vertaillaan Relaatio 1 :n ja Relaatio 2 :n samannimisen attribuutin Attribuutti arvoja, voidaan siten kirjoittaa lyhyemmin luonnollisen liitoksen avulla seuraavasti: Relaatio 1 Relaatio 2. Usein luonnollinen liitos määritellään vielä siten, että toinen liitosattribuuteista poistetaan tulosrelaatiosta. Tietoahan tässä ei varsinaisesti menetetä, sillä luonnollisessa liitoksessa vertailuoperaationa toimii =, joten tulosrelaation liitosattribuutteja vastaavissa sarakkeissa on aina täsmälleen samat arvot. Lisäksi operaatio esitetään usein yleisempänä siten, että liitosehtona käytetään liitettävien relaatioiden kaikkien samannimisten attribuuttien yhtäsuuruutta. 18

9 Henkilö Id Etunimi Sukunimi OsastoId 1 Luikuri Lahtiranta 2 2 Orimatti Teuras 2 3 Laupias Psaltari NULL Osasto Id Nimi 1 Hallinto 2 Myynti Henkilö l OsastoId=Osasto.Id Osasto Henkilö.Id Etunimi Sukunimi OsastoId Osasto.Id Nimi 1 Luikuri Lahtiranta 2 2 Myynti 2 Orimatti Teuras 2 2 Myynti 3 Laupias Psaltari NULL NULL NULL Henkilö r OsastoId=Osasto.Id Osasto Henkilö.Id Etunimi Sukunimi OsastoId Osasto.Id Nimi NULL NULL NULL NULL 1 Hallinto 1 Luikuri Lahtiranta 2 2 Myynti 2 Orimatti Teuras 2 2 Myynti Henkilö lr OsastoId=Osasto.Id Osasto Henkilö.Id Etunimi Sukunimi OsastoId Osasto.Id Nimi 1 Luikuri Lahtiranta 2 2 Myynti 2 Orimatti Teuras 2 2 Myynti 3 Laupias Psaltari NULL NULL NULL NULL NULL NULL NULL 1 Hallinto Kuva 3.10: Esimerkki vasemmasta, oikeasta ja täydestä puoliliitoksesta Puoliliitokset Toisinaan on tarpeen säilyttää kaikki jomman kumman tai molempien liitokseen osallistuvien relaatioiden monikot. Tällaisia tilanteita varten relaatioalgebra sisältää vasemman puoliliitoksen l, oikean puoliliitoksen r sekä täyden puoliliitoksen lr. Esimerkiksi vasemman puoliliitoksen Relaatio 1 l Ehto Relaatio 2 tulos sisältää kaikki Relaatio 1 :n monikot liitettyinä niihin Relaatio 2 :n monikkoihin, jotka täyttävät liitosehdon Ehto. Jos Relaatio 1 :n monikkoa ei voida liittää yhteenkään Relaatio 2 :n monikkoon, täytetään puuttuvat arvot tuntemattomalla arvolla NULL. Kuvassa 3.10 on esitetty relaatiot Henkilö ja Osasto sekä näiden relaatioiden vasen, oikea ja täysi puoliliitos. Esimerkiksi kuvassa 3.10 esitetyn oikean puoliliitoksen käyttö tulee kyseeseen silloin, kun halutaan hakea ensinnäkin kaikki osastot sekä lisäksi osastoilla työskentelevät henkilöt, jos osastolla henkilöitä työskentelee. 3.4 Muut operaatiot Jakolasku Jakolaskun voi ajatella olevan karteesisen tulon käänteisoperaatio, sillä jakolaskun tulosrelaation ja jakajarelaation karteesinen tulo sisältyy jaettavaan 19

10 Jaettava Attr1 Attr2 1 a 2 a 3 a 1 b 1 c 2 c 3 d Jakaja Attr1 1 2 Tulos Attr2 a c Kuva 3.11: Esimerkki jakolaskusta Tulos Jaettava Jakaja. relaatioon, kuten oikeastaan jakolaskussa yleensäkin. Yleisessä tapauksessa jakolasku on muotoa Relaatio 1 Relaatio 2. Jotta jakolasku olisi mielekäs, on Relaatio 2 :n eli jakajan attribuuttien sisällyttävä Relaatio 1 :n attribuuttien joukkoon. Jakolaskun tulos on kardinaliteetiltaan eli kooltaan suurin mahdollinen relaatio Relaatio 3, jolle Relaatio 1 Relaatio 2 Relaatio 3. Jakolaskun toimintaa on havainnollistettu kuvassa Kannattaa huomata, että vaikka esimerkiksi {<1>,<2>} {<a>} sisältyy relaatioon Jaettava, ei joukko {<a>} kelpaa vastaukseksi, sillä siihen voidaan vielä lisätä <c>. Jakolasku Relaatio 1 Relaatio 2 voidaan aina esittää projektion π, karteesisen tulon sekä erotuksen avulla seuraavasti: Apu 1 π Tulosattr1,...,Tulosattr n (Relaatio 1 ) Apu 2 π Tulosattr1,...,Tulosattr n ((Relaatio 2 Apu 1 ) Relaatio 1 ) Tulos Apu 1 Apu 2, missä Tulosattr 1,...,Tulosattr n ovat sellaiset Relaatio 1 :n attribuutit, jotka eivät ole Relaatio 2 :n attribuutteja Aggregaattifunktiot Aggregaatti- eli koostefunktioiden avulla voidaan yhdistää useita monikkoja yhdeksi monikoksi. Meitä saattaisi esimerkiksi kiinnostaa kalleimman valikoimissamme olevan tuotteen hinta. Tällainen kysely voidaan muotoilla aggregaattifunktiota MAX käyttäen seuraavasti: F MAX(Hinta) (Tuote). Operaation tulos on esitetty kuvassa Kannattaa huomata, että operaation tulos ei ole luku, vaan yhden rivin ja yhden sarakkeen relaatio. Yleisessä tapauksessa relaatioon kohdistuva aggregaattifunktio on muotoa F Funktio1(Attribuutti 1),...,Funktio n(attribuutti n)(relaatio), missä Attribuutti 1,...,Attribuutti n ovat Relaatio:n attribuutteja ja aggregaattifunktiot Funktio 1,...,Funktio n jotkin seuraavista: 20

11 MAX(Hinta) Kuva 3.12: Operaation F MAX(Hinta) (Tuote) tulos. ToimittajaId MIN(Hinta) MAX(Hinta) Kuva 3.13: Operaation ToimittajaId F MIN(Hinta), MAX(Hinta) (Tuote) tulos. 1. SUM(Attribuutti), joka laskee sarakkeen Attribuutti arvojen summan. Vaatimuksena on tietysti se, että attribuutin arvojoukko koostuu luvuista. 2. AVERAGE(Attribuutti), joka tietysti palauttaa sarakkeen keskiarvon. Attribuutti-sarakkeen on jälleen sisällettävä vain lukuja. 3. MAX(Attribuutti), joka palauttaa sarakkeen suurimman arvon. Attribuutin Attribuutti arvojen on tietenkin oltava vertailtavissa. 4. MIN(Attribuutti), joka palauttaa sarakkeen pienimmän arvon. Attribuutin Attribuutti arvojen on jälleen oltava vertailtavissa. 5. COUNT(Attribuutti), joka laskee attribuutin Attribuutti arvojen määrän. On ehkä syytä korostaa, että arvojen ei tarvitse olla erilaisia. Muista aggregaattifunktioista poiketen attribuutin ei tarvitse saada arvojaan lukujoukosta. Toisaalta meitä saattaisi myös kiinnostaa, mikä on halvimman ja kalleimman kunkin toimittajan toimittaman tuotteen hinta. Tällainen kysely voitaisiin muotoilla seuraavasti: ToimittajaId F MIN(Hinta), MAX(Hinta). Edellisessä kyselyssä ToimittajaId on ns. ryhmittelyattribuutti, eli attribuutti, jonka jokaiselle erilaiselle arvolle minimihinta lasketaan. Operaation tulos on esitetty kuvassa Tulosrelaation attribuutit ovat siis ryhmittelyattribuutti ToimittajaId sekä MIN(Hinta). Koska ryhmittelyattribuutilla ToimittajaId on kaksi erilaista arvoa 1 ja 2, on tulosrelaatiossa kaksi riviä. Ensimmäisessä esimerkissämme ryhmittelyattribuuttia ei esiintynyt, joten tuloksena oli yhden monikon relaatio. Yleinen muoto ryhmittelyattribuutteja käyttävälle aggregaattifunktiolle on Ryhm 1,...,Ryhm n F Funktio1(Attribuutti 1),...,Funktio m(attribuutti m)(relaatio), missä Ryhm 1,...,Ryhm n ovat ryhmittelyattribuutit; funktio sekä attributit ovat kuten edellä. Tulosrelaatiossa esiintyvät ensin ryhmittelyattribuutit ja sitten funktioita vastaavat attribuutit. Aggregaattifunktioiden toiminta saattaa 21

12 vaikuttaa monimutkaiselta, mutta niiden kannattaa ajatella toimivan yksinkertaisesti siten, että ensin haetaan kaikki kohderelaatiossa esiintyvät ryhmittelyattribuuttien arvoyhdelmät, joista jokaiselle sitten lasketaan funktiolistan funktiot. Käyttäen aggregaattifunktiota, projektiota, tuloa sekä valintaa voimme esimerkiksi hakea Orimatin tilausten arvon seuraavasti: Masa(MId) π Id (σ Etunimi= Orimatti (Asiakas)) MasaTuote(TId) π TuoteId (σ AsiakasId=MId (Tilaus Masa)) Tulos(Arvo) F SUM(Hinta) (σ TId=TuoteId (MasaTuote Tuote)). 22

13 Luku 4 Tietokannan suunnittelu Tässä luvussa perehdytään tietokantojen suunnitteluun. Pääpaino on käsitteellisessä mallintamisessa, ja valtaosa luvusta käsitteleekin ERmallinnusta. Kannattaa muistaa, että käytännössä tietokantaa suunnitellaan usein samaan aikaan tietokantaa käyttävän tietojärjestelmän kanssa, joten tietojärjestelmien kehittämisen ja ohjelmistotuotannon menetelmien yleinen hallinta on tarpeen myös tietokantaa suunniteltaessa. 4.1 Suunnittelusta yleisesti Hyvän tietokannan tunnusmerkit Suunnittelun tavoittena on tietysti laadukas tietokanta, jolle asetetaan usein seuraavat, varsin ilmeiset vaatimukset: 1. Tietokannan on sisällettävä käyttäjien tarvitsema tieto. 2. Tietokannan on oltava rakenteeltaan selkeä ja helppo ylläpitää. Ylläpidettävyyden vaatimuksesta seuraa myös se, että tietokanta on dokumentoitava huolellisesti. 3. Tietokannan on oltava tehokas. Tässä yhteydessä tehokkuudella tarkoitetaan sekä nopeita tietokantaoperaatioita että pientä tilankulutusta. Nykyiset kiintolevyt ovat tosin niin halpoja, että tietokannan suuruus muodostuu ongelmaksi vain harvoin. Vaikka vaatimukset - ehkä tietokannan dokumentointia lukuunottamatta - ovatkin oikeastaan itsestään selviä, on varsinkin vaatimusten 1 ja 2 täyttymistä vaikeaa mitata. Lisäksi jotkin edellä mainituista tavoitteista ovat toistensa kanssa vastakkaisia. Esimerkiksi tallennustilan minimointi saattaa johtaa hitaampiin tietokantaoperaatioihin ja päinvastoin. Samalla tavoin rakenteeltaan selkeä ja helposti ylläpidettävä tietokanta voi olla tehoton. 23

14 4.1.2 Tietokantaprojektin vaiheet Vaatimusten kerääminen ja analysointi Ennen tietokannan suunnittelua on tietysti syytä selvittää tietokannan käyttäjien nykyiset ja tulevat tarpeet. Tätä suunnittelun vaihetta kutsutaan vaatimusten keräämiseksi ja analysoinniksi. Tarkoituksena on tuottaa erilaisia kuvauksia organisaation toiminnasta ja tietotarpeista 1. Vaatimusten keräämiseen liittyvät yleensä seuraavat toiminnot: 1. Vaatimusten keräämiseksi on tunnistettava ne sovellukset ja käyttäjäryhmät, jotka tulevaa tietokantaa käyttävät. Jokaisesta ryhmästä valitaan yleensä edustaja, joka osallistuu vaatimusten keräämiseen sekä myöhemmin myös tietokannan suunnitteluun. 2. Muu organisaation liittyvä materiaali, kuten esimerkiksi erilaiset raportit ja organisaatiokaaviot, tutkitaan huolellisesti, sillä ne saattavat kertoa organisaatiosta kokonaisuutena jotakin sellaista, mitä yksittäiset käyttäjät eivät tule ajatelleeksi. 3. On myös syytä pohtia, millaisia operaatioita ja miten usein suunniteltavaan tietokantaan kohdistuu. Saattaa nimittäin olla, että kaikkia käyttäjien tietokantaan kohdistamia odotuksia ei voida täyttää projektiin varatuilla resursseilla. Tällöin vaatimuksia on syytä rukata realistisemmiksi mahdollisimman aikaisessa vaiheessa. 4. Kerättyä informaatiota saatetaan joutua täydentämään esimerkiksi käyttäjähaastatteluiden avulla. Haastatteluiden avulla voidaan esimerkiksi selvittää, miten tärkeinä käyttäjät pitävät eri ominaisuuksia. Kerätyt vaatimukset ovat käytännössä aina epätarkkoja ja usein myös virheellisiä tai ainakin ristiriitaisia. Näistä syistä vaatimusten kerääminen ja tallentaminen on suunniteltava tarkoin. Saatamme esimerkiksi toteutusvaiheessa törmätä määrittelyyn, jota pitäisi tarkentaa. Jos vaatimustenhallinta on järjestetty hyvin, voimme selvittää, kenen pyynnöstä kyseistä ominaisuutta ollaan toteuttamassa ja esittää tarkentavia lisäkysymyksiä kyseiselle käyttäjälle. Oman ongelmansa muodostaa myös käyttäjien kanssa kommunikointi, sillä käyttäjät harvoin ovat IT-alan ammattilaisia ja IT-alan ammattilaiset harvoin ovat vaikkapa pankinjohtajia tai pankkitoimihenkilöitä. Vaatimusten keräämiseen ja analysointiin on syytä paneutua huolellisesti, sillä kaikki myöhemmät suunnitteluvaiheet perustuvat juuri tämän vaiheen tuloksiin. Jos tietokanta suunnitellaan vääriä vaatimuksia vastaavaksi, ratkaistaan tietysti vain vääriä ongelmia ja tuhlataan resursseja. Myöhemmissä suunnitteluvaiheissa tehtyjen virheiden - kuten esimerkiksi pienten bugien tai tietokantakaavan puutteiden - korjaaminen taas on huomattavasti helpompaa ja halvempaa. 1 Vaikka esimerkiksi toimintaa kuvaavat prosessikaaviot eivät ehkä olisikaan tietokannan suunnittelun kannalta keskeisiä, kehitetään tietokannan ohella usein myös tietokantaa käyttävää tietojärjestelmää, mikä tietysti vaatii prosessien analysointia. 24

15 Käsitteellinen suunnittelu Käsitteellisestä sunnittelusta voidaan erottaa seuraavat kaksi osa-aluetta: 1. Käsitteellisen mallintamisen tavoittena on tuottaa aiemmin kerättyjä vaatimuksia mahdollisimman hyvin vastaava käsitteellinen tietomalli, joka kuvaa tallennettavan tiedon rakennetta ja tiedon osasten välisiä suhteita. 2. Tietokantaoperaatioiden suunnittelu on syytä yhdistää käsitteelliseen mallintamiseen, sillä se saattaa auttaa erottamaan oleellisen tiedon epäoleellisesta. Tietokantaoperaatiot suunnitellaan tietysti aiemmin kerättyjen vaatimusten perusteella, joten kyse on oikeastaan käyttäjien analysoinnista eli samasta asiasta kuin vaatimuksia kerättäessä. Tietokantaoperaatioiksi muotoiltuina vaatimukset ovat kuitenkin huomattavasti konkreettisempia kuin vaikkapa toiminnan sanalliset kuvaukset. Tietokantojen käsitteellisessä mallintamisessa käytetään useimmiten ns. ER-mallinnusta, johon perehdytään tarkemmin kohdassa 4.2. Jos eri käyttäjäryhmien vaatimukset on sovitettu yhteen jo vaatimuksia kerättäessä ja analysoitaessa, on käsitteellinen suunnittelu yleensä helpompaa. Useimmiten ristiriitaisia vaatimuksia kuitenkin joudutaan sovittamaan yhteen myös käsitteellisen mallintamisen yhteydessä. Juuri tämän vuoksi eri käyttäjäryhmien edustajien osallistuminen suunnitteluun on tarpeen. Tietokannanhallintajärjestelmän valitseminen Seuraava vaihe on useimmiten tietokannanhallintajärjestelmän valitseminen, joka joissakin tietokantaprojekteissa saattaa toisinaan näytellä suurtakin osaa. Huomioon otettavia seikkoja ovat esimerkiksi tietokantaohjelmiston hinta ja tehokkuus, olemassaolevan palvelinlaitteiston sopivuus valittavalle tietokannanhallintajärjestelmälle sekä mahdollisesti tarvittavan koulutuksen kustannukset. Lisäksi on selvitettävä, millaisia ohjelmointityökaluja valittavalle tietokannanhallintajärjestelmälle on saatavilla. Toisinaan tietokannanhallintajärjestelmän valinnan saattavat ratkaista myös tietyn tietokantaohjelmiston tarjoamat ylimääräiset ominaisuudet. Kaikkein eksoottisimpiin tuoteominaisuuksiin turvautuminen ei kuitenkaan ole suositeltavaa, sillä tietokanta saatetaan myöhemmin syystä tai toisesta joutua siirtämään toiseen tietokannanhallintajärjestelmään, joka ei tuekaan kaikkia käytettyjä ominaisuuksia. Tietokantakaavan suunnittelu Kun tietokannanhallintajärjestelmä on valittu, on seuraavaksi suunniteltava tietokantakaava. Tämän suunnitteluvaiheen tuloksena on joukko relaatiokaavoja tai vielä konkreettisemmin joukko SQL-lauseita, joiden avulla voidaan luoda kaavoja vastaava tietokanta. Periaatteessa ER-mallin muuntaminen tietokantakaavaksi on suoraviivaista, mutta esimerkiksi tehokkuussyistä joudutaan tietokantakaavaan toisinaan lisäämään joitakin relaatioita. Lisäksi valitun tietokannanhallintajärjestelmän tarjoamat erityisominaisuudet saattavat vaikuttaa tietokantakaavaan. Myös tähän vaiheeseen perehdytään tarkemmin kohdassa

16 Toteuttaminen Tietokantakaavan suunnittelua seuraa toteutusvaihe eli taulujen ja hakemistojen eli tietokantahakuja nopeuttavien rakenteiden luominen. Toisaalta hakemistot taas useimmiten hidastavat päivitysoperaatioita, joten hakemistoja suunniteltaessa on syytä käyttää hyväksi käsitteellisen suunnittelun yhteydessä listattuja tietokantaoperaatioita. Samalla tavoin tietokantaoperaatioita on syytä käyttää hyväksi myös silloin, kun pohditaan, miten relaatioiden monikot fyysisesti kiintolevylle järjestetään. Vaikka relaatiomalli nimittäin tarkasteleekin relaatioita järjestämättömänä joukkona monikoita, on monikoiden fyysisellä järjestyksellä toisinaan hyvinkin suuri merkitys. Toteutusvaiheen tuloksena syntyvä tietokanta on harvoin täydellinen ja sitä joudutaankin usein muokkaamaan. Käyttöönotto ja ylläpito Siinä, missä edelliset suunnitteluvaiheet ovat ennen kaikkea ohjelmistosuunnittelijoiden ja projektipäällkäiden vastuulla, on päävastuu viimeisestä vaiheesta eli tietokannan käyttöönotosta ja ylläpidosta useimmiten DBA:n eli tietokannasta vastaavan henkilön 2. Tässä vaiheessa esimerkiksi siirretään data vanhasta tietokannasta uuteen, luodaan käyttäjät ja jaetaan heille oikeudet. Ennen tietokannan lopullista käyttöönottoa on vielä tietysti testattava tietokantaa käyttävä ohjelmisto. Kun ohjelmisto on todettu riittävän toimivaksi, se otetaan käyttöön. Käyttöönoton jälkeistä vaihetta kutsutaan ylläpitovaiheeksi ja se jatkuu käytännössä tietokannan olemassaolon ajan. Useimmat tietokannanhallintajärjestelmät tarjoavat tilastotietoa tietokantaan kohdistuneista tietokantaoperaatioista. Tämän tiedon avulla tietokantaa voidaan virittää tehokkaammaksi. Jos tietokannan parantelu ei ole mahdollista, voidaan toisinaan toisinaan tietysti viritellä myös tietokantaoperaatioita. Käyttäjien vaatimuksetkin saattavat muuttua. Tällöin on syytä pohtia, miten nämä vaatimukset on helpointa ja halvinta täyttää. Ideaalitilanteessa vaatimusten muutokset on pystytty ainakin osittain ennustamaan jo vaatimuksia ja organisaation toimintaympäristöä analysoitaessa, mikä luonnollisesti helpottaa muutoksiin reagoimista. 4.2 ER-mallinnus Tässä osassa käsitellään ER-mallinnusta, joka nykyisin lienee käytetyin tietokantojen käsitteellisen mallintamisen menetelmä. Oikeaoppisessa ERmallinnuksessa erotetaan toisistaan esimerkiksi vahvat ja heikot entiteetit - jälkimmäisessä tapauksessa entiteetin olemassaolo riippuu muiden entiteettien olemassaolosta - sekä atomaariset ja koosteiset attribuutit. Koska näiden erojen merkitys kuitenkin on käytännön tietokantasuunnittelun kannalta pieni, esitellään tässä osassa vain ER-mallinnuksen perusteet. Lukijan, joka haluaa perehtyä ER-mallintamiseen tarkemmin, kannattaa perehtyä Ramez Elmasrin ja Shamkant B. Navathen tietokantoja käsittelevään perusteokseen Fundamentals of Database Systems [3]. 2 DBA on lyhennys sanoista Database Administrator. 26

17 Kuva 4.1: Kuvan 2.3 tauluja Asiakas ja Tuote vastaavat entiteetit. Kuva 4.2: Kuvan 4.1 entiteetit sekä niiden välinen liittymä Perusrakenteet ER-mallinnus [4] perustuu tiedon kuvaamiseen entiteettien eli kohteiden ja entiteettien välisten suhteiden eli liittymien avulla. Tietokeskeisenä mallinnusmenetelmänä ER-mallinnus sopii tietokantojen mallintamiseen erityisen hyvin, sillä eräs tietokanta-ajattelun perusteista on tiedon ja tiedon käytön erottaminen toisistaan. Mallinnettavan tiedon käyttötarkoituksen kannalta oleellisia entiteetin ominaisuuksia kutsutaan attribuuteiksi. Esimerkiksi auton attribuutteja voisivat olla rekisterinumero, merkki, malli, vuosimalli jne. Opiskelijan attribuutteja taas voisivat olla vaikkapa opiskelijanumero, nimi, osoite ja puhelinnumero. Kuvassa 4.1 on esitetty kuvan 2.3 tauluja Asiakas ja Tuote vastaavat entiteetit attribuutteineen. Nimensä mukaisesti liittymät liittävät entiteettejä toisiinsa. Esimerkkimme entiteetit Asiakas ja Tuote liittyvät toisiinsa siten, että asiakkaat tilaavat tuotteita. Niinpä nämä entiteetit on kuvassa 4.2 yhdistetty toisiinsa Tilaus-liittymän avulla. Liittymän yhteydessä kuvataan myös entiteettien lukumääräsuhteet. Koska yksi asiakas voi tilata monta tuotetta ja koska yhden tuotteen voi tilata moni asiakas, on kyseessä ns. monta moneen -liittymä, jota ER-kaaviossa merkitään lukumääräsuhteilla N:M. Kuvan 4.2 ER-kaavion voi siis tulkita kutakuinkin siten, että yksi asiakas liittyy moneen tuotteeseen ja yksi tuote liittyy moneen asiakkaaseen tai yksi asiakas voi tilata monta tuotetta ja yhtä tuotetta voi tilata moni asiakas. Kuvan 2.3 esimerkkitietokannassa Tuote ja Toimittaja taas liittyivät toisiinsa hieman toisella tavalla. Oletimme, että yksi toimittaja voi toimittaa montaa tuotetta, mutta yhtä tuotetta voi toimittaa vain yksi toimittaja, joten kyseessä ei selvästikään ole monta moneen -liittymä. Nyt kyseessä onkin ns. yksi 27

18 Kuva 4.3: Kuvan 2.3 tietokantaa vastaava ER-kaavio. moneen -liittymä, jota kuvan 4.3 ER-mallissa on merkitty lukumääräsuhteilla 1:N. Tarkkasilmäinen lukija saattaa huomata, ettei entiteetissä Tuote esiinny relaatiossa Tuote esiintyvää attribuuttia ToimittajaId, mutta kyse ei ole virheestä. Asia selviää monisteen seuraavassa osassa. Entiteettien Tuote ja Toimittaja liittymä voidaan nyt tulkita siten, että yksi toimittaja liittyy moneen tuotteeseen ja yksi tuote liittyy vain yhteen toimittajaan. Liittymiä, joiden lukumääräsuhteet ovat 1:1, ei oikeastaan pitäisi esiintyä, sillä tällöin entiteetit pitäisi olla mahdollista yhdistää. On ehkä myös syytä huomauttaa, että liittymä voi yhdistää mielivaltaisen määrän entiteettejä. Tämä tarkoittaa myös sitä, että entiteetti saattaa liittyä myös itseensä. Aiemmin esittelimme relaation Työntekijä(Id, Etunimi, Sukunimi, EsimiesId), jossa EsimiesId oli saman relaation attribuuttiin Id viittaava vierasavain. Tällaista tilannetta kuvaavassa ER-kaaviossa entiteetti Työntekijä voitaisiin liittää itseensä Johtaa-nimisellä liittymällä. Lisäksi kahden entiteetin välillä saattaa olla useampia liittymiä. Esimerkkikaavioomme voitaisiin entiteettien Asiakas ja Tuote välille lisätä Suosittelee-liittymä, joka liittää asiakkaan hänen suosittelemaansa tuotteeseen. Ylipäätään on helpointa ensin tunnistaa ilmeisiä entiteettejä, kuten esimerkiksi Asiakas, Tuote, Kurssi, Auto ja Opiskelija, ja vasta sen jälkeen ruveta pohtimaan, millaisia entiteettejä ERmallista mahdollisesti puuttuu ja miten entiteetit toisiinsa liittyvät ER-mallista relaatioihin Eräs ER-mallinnuksen eduista on se, että ER-mallin muuntaminen relaatiokaavoiksi on periaatteessa hyvin suoraviivaista. ER-mallin käsitteille eli entiteeteille, attribuuteille sekä erilaisille liittymille on kullekin nimittäin olemassa vastineensa relaatiomallissa: 1. Jokaista entiteettiä vastaa relaatio, jolla on tietysti samat 28

19 attribuutit kuin vastaavalla entiteetillä. Esimerkkitapauksessamme Asiakas-entiteetti muunnetaan siten Asiakas-relaatioksi, jolla on avainattribuutti Id sekä attribuutit Etunimi ja Sukunimi. 2. Jokaista 1:N-liittymää vastaa viitevain siten, että N-puolen entiteettiä vastaavaan relaatioon lisätään vierasavainattribuutti, joka viittaa 1-puolen entiteetin pääavaimeen. Tuote-relaatioon lisätään siten viiteavainattribuutti ToimittajaId, joka viittaa Toimittaja-taulun pääavaimeen Id. 3. Jokaista N:M-liittymää vastaa relaatio, jonka attribuutteja ovat liittymään liittyvien entiteettien avainattibuutit. Esimerkkitapauksessamme Tilaus-relaatio vastaa Tilaus-liittymää ja sen attribuutteina ovat Asiakas-tauluun viittaava AsiakasId ja Tuote-tauluun viittaava TuoteId. Monta moneen -liittymää vastaavan relaation pääavaimena toimii viiteavainten yhdistelmä. Näitä sääntöjä käyttäen voidaan kuvan 4.3 ER-kaavio muuttaa luvussa 2 käsitellyksi tietokantakaavaksi Tavallisimpia virheitä Erityisen tavallinen ja oikeastaan myös vakavin virhe on se, että tiedon osasten ja niiden välisten suhteiden kuvailemisen sijasta pyritään virheellisesti mallintamaan toimintaa tai prosesseja. ER-mallinnus on kuitenkin tietokeskeinen menetelmä, joten sen avulla pyritään mallintamaan vain tiedon rakennetta eikä toimintaa. Prosessien ja toiminnan mallintamiseen on olemassa muita menetelmiä, kuten esimerkiksi tietovuokaaviot. Ylipäätäänkin liiaksi organisaation toimintaan perustuva tietokanta on usein hyvin lyhytikäinen, koska prosesseilla - siis tiedon käyttötavalla - on tapana muuttua tiedon rakennetta nopeammin. Tiedon pysyvyydestä vakuuttuakseen voi miettiä vaikkapa sitä, että yrityksen ryhtyessä myymään tuotteitaan Internetissä yrityksen toiminnot saattavat muuttua huomattavastikin, mistä syystä yrityksen on hankittava esimerkiksi uusia ohjelmistoja, palkattava uusia työntekijöitä ja ehkä myös muutettava toimintatapojaan. Yrityksen tietokannan rakenne taas saattaa pysyä hyvinkin muuttumattomana eli kokoelmana tietoa asiakkaista, tuotteista, tilauksista jne. Tiedon rakenteen ja tietoalkioiden välisten suhteiden pysyvyys onkin oikeastaan koko tietokanta-ajattelun ja tietokantojen nykyisen suosion perusta. Toinen tyypillinen virhe on se, että ER-malliin lisätään viittauksiin liittyviä attribuutteja. Nämä eivät kuitenkaan ole tarpeen, sillä viiteavainattribuutit vastaavat liittymiä, minkä edellisessä osassa jo opimme. Kolmas virhe on erilaisten listojen tai joukkojen mallintaminen. Esimerkkikaaviossamme olisimme saattaneet yrittää mallintaa tuotelistaa tai tilauslistaa, vaikka taulu on oikeastaan monikkojen joukko ja toimii siten listaa vastaavasti 3. Virhe ei kuitenkaan yleensä ole kovin vakava, koska sen korjaaminen siirryttäessä ER-mallista relaatioihin on suhteellisen helppoa. Neljäs tyypillinen virhe on liian rajoittuneen mallin luominen. Esimerkkitapauksessamme olemme olettaneet, että yhtä tuotetta toimittaa 3 Relaatio ei tarkasti ottaen ole lista, sillä relaation monikoilla ei ole keskinäistä järjestystä. 29

20 vain yksi toimittaja 4. Vaikka näin tietokantaa suunniteltaessa olisikin, saattaa asia myöhemmin muuttua. ER-mallissa on tämä tarkoittaa yksi moneen -liittymän korvaamista monta moneen -liittymällä ja tietokantakaavassa uuden relaation luomista sekä yhden viiteavainattribuutin poistamista. Hölmönpuoleinen suunnittelija tai DBA saattaisi kuitenkin harkita uuden attribuutin Toimittaja2 lisäämistä Tuote-relaatioon. Tämä ei kuitenkaan ole oikea ratkaisu, sillä se vaikeuttaa kyselyiden kirjoittamista. Lisäksi uuden attribuutin lisääminen ratkaisisi ongelman vain väliaikaisesti, sillä tuotteella saattaa myöhemmin alkaa toimittaa kolmas toimittaja. Tästä huolimatta tällaisiin viritelmiin törmää valitettavan usein. 4 Esimerkkititokantamme on muutenkin kovin rajoittunut, sillä esimerkiksi asiakkaista tai toimittajista ei pidetä yllä yhteystietoja. Relaatio Tilaus on myös vajaa, sillä relaation avulla ei voida tallentaa tietoa siitä, millä hinnalla tuote on tilattu tai siitä, onko tilaus jo toimitettu. 30

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

Tietokannat I. c 2007 Olli Luoma olli.luoma@it.utu.fi

Tietokannat I. c 2007 Olli Luoma olli.luoma@it.utu.fi Tietokannat I c 2007 Olli Luoma olli.luoma@it.utu.fi Kevät 2007 Tiivistelmä Tämän luentomonisteen tarkoituksena on toimia pääasiallisena oppimateriaalina Turun yliopiston Informaatioteknologian laitoksen

Lisätiedot

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

Lisätiedot

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt: Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra määrittelee operaatiot,

Lisätiedot

Relaatioalgebra. Kyselyt:

Relaatioalgebra. Kyselyt: Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

Lisätiedot

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra 14.9.2000. Harri Laine 1. Relaatioalgebra

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra 14.9.2000. Harri Laine 1. Relaatioalgebra DO NOT PRINT THIS DOCUMENT operaatiot, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus erityisiä relaatioalgebran operaatioita projektio,

Lisätiedot

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus DO NOT PRINT THIS DOCUMENT joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus erityisiä relaatioalgebran operaatioita

Lisätiedot

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra. Tietokantaoperaatiot tiedon haku kyselyt miten märitellään haettava tieto ylläpito-operaatiot lisäys, poisto, muuttaminen Kyselyt: lähtökohtana tietokannan tila joukkona relaatioita kyselyn tuloksena yksi

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 23.2.2016 CSE-A1200 Tietokannat 23.2.2016 1 / 36 Oppimistavoitteet: tämän luennon jälkeen Tunnet SQL:n perusteet ja osaat tehdä yksinkertaisia SQL-kyselyitä, esimerkiksi hakea relaatiosta

Lisätiedot

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta 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

Lisätiedot

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 29.2.2012 (vastauksia) Liitteenä on tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastauspaperiin kurssin

Lisätiedot

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto Harri Laine Helsingin yliopisto Suosion syy? Yksinkertaisuus vähän käsitteitä helppo hahmottaa Selkeä matemaattinen perusta ei tulkintaongelmia kuten esim. UML:ssä teoria käytäntö kaavio: R(A 1 :D 1, A

Lisätiedot

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien Monen taulun kyselyt FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: SELECT FROM Tuloksena on taululistassa lueteltujen taulujen rivien karteesinen

Lisätiedot

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP RINT THIS DOCUM ENT Relaatiotietokannat DONOTP Relaatiomalli Perustana rakennetason tietomalli relaatiomalli (the relational model of data) perusteoria: Codd 1970 ensimmäiset kaupalliset toteutukset 70-luvun

Lisätiedot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC; Tällä viikolla Kotitehtävien läpikäynti SQL-harjoituksia, osa 1 Jatketaan Pelifirman tietovaraston suunnittelua: tietotyyppien kertaus, taulun luonti ER-kaavioon, taulun luonti kaavion avulla tietokantaan,

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34 CS-A1150 Tietokannat 7.2.2017 CS-A1150 Tietokannat 7.2.2017 1 / 34 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan relaatioalgebralla. Osaat tehdä erilaisia kyselyitä relaatioalgebran

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 10 TU00AA48-2002 TU10S1E Hannu Markkanen 14.-15.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 SQL: Monen taulun kyselyt

Lisätiedot

2. Käsiteanalyysi ja relaatiomalli

2. Käsiteanalyysi ja relaatiomalli 2. Käsiteanalyysi ja relaatiomalli lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Tietokannan suunnitteluprosessin osat sivu 2 Käsiteanalyysi ER-mallinnus, tietomallinnus

Lisätiedot

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, 3.5.2007, H.Laine Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, oma nimesi, syntymäaikasi ja nimikirjoituksesi

Lisätiedot

1. Logiikan ja joukko-opin alkeet

1. Logiikan ja joukko-opin alkeet 1. Logiikan ja joukko-opin alkeet 1.1. Logiikkaa 1. Osoita totuusarvotauluja käyttäen, että implikaatio p q voidaan kirjoittaa muotoon p q, ts. että propositio (p q) ( p q) on identtisesti tosi. 2. Todista

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34 CS-A1150 Tietokannat 6.2.2018 CS-A1150 Tietokannat 6.2.2018 1 / 34 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan relaatioalgebralla. Osaat tehdä erilaisia kyselyitä relaatioalgebran

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 22.3.2016 CSE-A1200 Tietokannat 22.3.2016 1 / 35 Oppimistavoitteet: tämän luennon jälkeen Osaat tehdä SQL:llä kyselyitä, jotka käyttävät hyväkseen toisen kyselyn tuloksia (alikyselyt).

Lisätiedot

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää kehikkoa - käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla

Lisätiedot

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (11) Access 1 ACCESS...2 Yleistä...2 Access-tietokanta...3 Perusobjektit...3 Taulu...5 Kysely...7 Lomake...9 Raportti...10 Makro...11 Moduli...11 HELIA 2 (11) ACCESS Yleistä Relaatiotietokantatyyppinen

Lisätiedot

Yhdiste, leikkaus, erotus ym.

Yhdiste, leikkaus, erotus ym. Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet.

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...

Lisätiedot

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet.

Lisätiedot

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1. Relaatiotietokannat Relaatiomalli Perustana rakennetason tietomalli (the relational model of data) perusteoria: E.F.Codd 1970 ensimmäiset kaupalliset toteutukset 70-luvun lopulla yleistynyt 80-luvun lopulla

Lisätiedot

3. Käsiteanalyysi ja käsitekaavio

3. Käsiteanalyysi ja käsitekaavio 3. Käsiteanalyysi ja käsitekaavio lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Käsiteanalyysi Selvitetään mitä tietokantaan pitää tallentaa Lähtökohtana käyttäjien

Lisätiedot

7.11.2006. Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1

7.11.2006. Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1 perusteita - relaatiokalkyylit perusteita - relaatiokalkyylit Relaatioalgebra on luonteeltaan proseduraalinen tapa käsitellä tietoa. Tiedon haetaan sarjaksi järjestettyjen operaatioiden avulla. Edellä

Lisätiedot

Luonnollisten lukujen ja kokonaislukujen määritteleminen

Luonnollisten lukujen ja kokonaislukujen määritteleminen Luonnollisten lukujen ja kokonaislukujen määritteleminen LuK-tutkielma Jussi Piippo Matemaattisten tieteiden yksikkö Oulun yliopisto Kevät 2017 Sisältö 1 Johdanto 2 2 Esitietoja 3 2.1 Joukko-opin perusaksioomat...................

Lisätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli 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ö...

Lisätiedot

Relaatiomalli ja -tietokanta

Relaatiomalli ja -tietokanta Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla

Lisätiedot

Joukot. Georg Cantor ( )

Joukot. Georg Cantor ( ) Joukot Matematiikassa on pyrkimys määritellä monimutkaiset asiat täsmällisesti yksinkertaisempien asioiden avulla. Tarvitaan jokin lähtökohta, muutama yleisesti hyväksytty ja ymmärretty käsite, joista

Lisätiedot

8 Joukoista. 8.1 Määritelmiä

8 Joukoista. 8.1 Määritelmiä 1 8 Joukoista Joukko on alkoidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukkooppi aksiomaattisesti. Näin ei tässä tehdä

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008 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ö

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon

Lisätiedot

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIEDONHALLINNAN PERUSTEET - SYKSY 2013 TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 4 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1 Relaatiotietokannan suunnitteluprosessin

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

Lisätiedot

Relaation tyhjyyden testaaminen

Relaation tyhjyyden testaaminen Tulostaulun tyhjyyden testaaminen Luettele ne asiakkaat, joilla on sekä talletus että laina -konttorissa. (Leikkaus!) useita mahdollisia toteutustapoja INTERSECT sisäkysely sisäkysely + tulostaulun tyhjyyden

Lisätiedot

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

Kuva 7.2 vastaustaulu harjoitukseen 7.2

Kuva 7.2 vastaustaulu harjoitukseen 7.2 Harjoitus 7. Lataa tiedosto http://users.metropolia.fi/~pasitr/opas/ran13b/data/ran13b.zip levylle Z: ja pura se. Kun olet tehnyt kaikki seuraavat 17 tehtävää palauta Tuubiin harjoituksen 7 vastauksena

Lisätiedot

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,

Lisätiedot

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi. Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 4.3.2015, H. Laine Tehtävien mukana jaetaan sql-syntaksin tiivistelmä. Kirjoita kuhunkin erilliseen vastauspaperiin

Lisätiedot

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa Relaatiomalli 5. Relaatiomalli Käsitteet Säännöt Käyttö 6. Relaatioalgebra (EI TENTTIIN!) Select, Project, Union, Difference, Join 7. (E)ER-mallin muuntaminen relaatioiksi Kaava Mikä on tietomalli? Malli,

Lisätiedot

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38 Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38 Tuntitehtävät 11-12 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 15-16 loppuviikon harjoituksissa. Kotitehtävät 13-14 tarkastetaan loppuviikon

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2017 Kurssikoodi: Saapumisryhmä: Luento 2 TX00CN57-3001 TXQ16ICT, TXQ16S1 ja TXQ16PROS Pasi Ranne 28.8.2017 27/8/17 Helsinki Metropolia University of Applied Sciences 1 Oppitunnin

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2017 Kurssikoodi: Saapumisryhmä: Luento 7 TX00CN57-3001 TXQ16ICT, TXQ16S1 ja TXQ16PROS Pasi Ranne 02.10.2017 1/10/17 Helsinki Metropolia University of Applied Sciences 1 Tietokannan

Lisätiedot

Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä.

Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä. Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä. Kaksi järjestettyä paria ovat samat, jos niillä on samat ensimmäiset alkiot ja samat toiset alkiot:

Lisätiedot

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos... 2 Logiikkaa Tässä luvussa tutustutaan joihinkin logiikan käsitteisiin ja merkintöihin. Lisätietoja ja tarkennuksia löytyy esimerkiksi Jouko Väänäsen kirjasta Logiikka I 2.1 Loogiset konnektiivit Väitelauseen

Lisätiedot

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki 25.10.2006

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki 25.10.2006 HELIA TIKO-05 1 (15) SQL / DML 3 Liitos...2 SQL-92:n join operaatio...4 SQL-89:n join operaatio:...5 Karteesinen tulo... 10 Ulkoliitos (Outer join)... 11 Vasemmanpuoleinen ulkoliitos... 12 Oikeanpuoleinen

Lisätiedot

Haaga-Helia / TIKO-05 1 (12) Tietokannan suunnittelu ja Toteutus Outi Virkki

Haaga-Helia / TIKO-05 1 (12) Tietokannan suunnittelu ja Toteutus Outi Virkki Haaga-Helia / TIKO-05 1 (12) Tietotarpeet Tietotarpeiden määrittely... 2 Tietotarveanalyysi... 3 Lähtökohtana tietojenkäsittelytehtävät... 3 Määrittelyn sisältö... 4 Vaiheistus... 5 Tietolähteet... 5 Lähestymistapa...

Lisätiedot

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Vastaavuus puolestaan on erikoistapaus relaatiosta.

Lisätiedot

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu HELIA 1 (8) Luento 1 Johdatusta tietokannan suunnitteluun... 2 Tietokantasuunnittelu?... 2 Tietokanta?... 2 Tieto?... 2 Tietokantasuunnittelun tavoite, v.1... 2 Luotettavuus?... 3 Tietokantasuunnittelun

Lisätiedot

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, ) Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää kehikkoa - käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla

Lisätiedot

Liitokset - haut useaan tauluun

Liitokset - haut useaan tauluun Liitokset Liitokset - haut useaan tauluun Tavallisin liitos on valintaliitos ehtona =,!=, yhtäläisyysliitos (=) yleisin (vrt. Inner join) taulut liitetään toisiinsa yleensä avaimilla (perus-

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Approbatur 3, demo 1, ratkaisut 1.1. A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Käydään kaikki vaihtoehdot läpi. Jos A on rehti, niin B on retku, koska muuten

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI OSIO 01 Peruskäsitteitä Kurssin tavoite: antaa osallistujille valmiudet ymmärtää tietokantojen periaatteet ymmärtää tietokantojen suunnittelunäkökohtia osallistua tietokantojen

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen Tietojärjestelmä tuotantoympäristössä Tausta ja tavoitteet Tausta Kurssilla on opiskeltu suunnittelemaan ja toteuttamaan tietokanta, joka on pieni perustuu selkeisiin vaatimuksiin on (yleensä) yhden samanaikaisen

Lisätiedot

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista Helsingin yliopisto Tietojenkäsittelytieteen laitos 26.2.2014 (H.Laine) Tietokantojen perusteet Liitteenä: Tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastausarkkiin kurssin nimi, tenttipäivä,

Lisätiedot

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista Matematiikan johdantokurssi, syksy 06 Harjoitus, ratkaisuista. Valitse seuraaville säännöille mahdollisimman laajat lähtöjoukot ja sopivat maalijoukot niin, että syntyy kahden muuttujan funktiot (ks. monisteen

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. maaliskuuta 2011 Sisällys Sisällys Väitelauseet lause (tai virke), joka sanoo jonkin asian pitävän paikkaansa

Lisätiedot

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

KAAVAT. Sisällysluettelo

KAAVAT. Sisällysluettelo Excel 2013 Kaavat Sisällysluettelo KAAVAT KAAVAT... 1 Kaavan tekeminen... 2 Kaavan tekeminen osoittamalla... 2 Kaavan kopioiminen... 3 Kaavan kirjoittaminen... 3 Summa-funktion lisääminen... 4 Suorat eli

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet ) T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen

Lisätiedot

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa: Funktiot Koostefunktiot Viisi standardifunktiota: AVG -- keskiarvo MIN -- pienin arvo MAX -- suurin arvo SUM -- summa COUNT-- lukumäärä Esim. montako henkilöä on henkilo-taulussa: SELECT Count(*) AS Lkm

Lisätiedot

1 Peruslaskuvalmiudet

1 Peruslaskuvalmiudet 1 Peruslaskuvalmiudet 11 Lukujoukot N {1,, 3, 4,} on luonnollisten lukujen joukko (0 mukana, jos tarvitaan), Z {, 3,, 1, 0, 1,, 3,} on kokonaislukujen joukko, Q m n : m, n Z, n 0 on rationaalilukujen joukko,

Lisätiedot

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos Harjoitustehtävän 1 ratkaisu Tonttu( tonttutunnus, nimi) Puutarha( puutarhatunnus, omistaja, sijainti ) Vastuualue ( puutarhatunnus->puutarha, aluenumero, maaperä, kosteus, valaistus, sijainti, vastuutonttu

Lisätiedot

Kyselyn yleisrakenne:

Kyselyn yleisrakenne: SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Matematiikan tukikurssi, kurssikerta 1

Matematiikan tukikurssi, kurssikerta 1 Matematiikan tukikurssi, kurssikerta 1 1 Joukko-oppia Matematiikassa joukko on mikä tahansa kokoelma objekteja. Esimerkiksi joukkoa A, jonka jäseniä ovat numerot 1, 2 ja 5 merkitään A = {1, 2, 5}. Joukon

Lisätiedot

Laajennettu relaatiomalli ERDM ja suoraviittauksinen kyselykieli NSQL. Mika Niemelä

Laajennettu relaatiomalli ERDM ja suoraviittauksinen kyselykieli NSQL. Mika Niemelä Laajennettu relaatiomalli ERDM ja suoraviittauksinen kyselykieli NSQL Mika Niemelä Tampereen yliopisto Tietojenkäsittelyopin laitos Pro gradu tutkielma 7.4.2003 Tampereen yliopisto Tietojenkäsittelyopin

Lisätiedot

SQL:N PERUSTEET MARKKU SUNI

SQL:N PERUSTEET MARKKU SUNI SQL:N PERUSTEET MARKKU SUNI Relaatiomallisen tietokannan käsittely Tietojen saanti, talletus ja päivitys tapahtuu SQL-kielellä Yhtä operaatiota sanotaan kyselyksi (query) Kyselyjä voidaan laittaa peräkkäin

Lisätiedot

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Joukon määritelmä Joukko on alkioidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Näin ei tässä

Lisätiedot

6*. MURTOFUNKTION INTEGROINTI

6*. MURTOFUNKTION INTEGROINTI MAA0 6*. MURTOFUNKTION INTEGROINTI Murtofunktio tarkoittaa kahden polynomin osamäärää, ja sen yleinen muoto on P() R : R(). Q() Mikäli osoittajapolynomin asteluku on nimittäjäpolynomin astelukua korkeampi

Lisätiedot

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet DO NOT PRINT THIS DOCUMENT SQL -valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone varchar(12), PRIMARY KEY (opetunnus) ) ; CREATE

Lisätiedot

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8 Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8 Tuntitehtävät 1-2 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 5- loppuviikon harjoituksissa. Kotitehtävät 3-4 tarkastetaan loppuviikon

Lisätiedot

<e.g. must, essential, conditional>

<e.g. must, essential, conditional> Käyttötapaukset Kurssin malli käyttötapauksille: Tila < List of users and the other systems that interacts directly with a system>

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä Tällä viikolla Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä Seuraavissa harjoituksissa käytetään tukkukauppa-kantaa. 1. Hae kaikki toimittajat

Lisätiedot

MAB3 - Harjoitustehtävien ratkaisut:

MAB3 - Harjoitustehtävien ratkaisut: MAB3 - Harjoitustehtävien ratkaisut: 1 Funktio 1.1 Piirretään koordinaatistoakselit ja sijoitetaan pisteet: 1 1. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä.

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa

Lisätiedot

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt Yhtälöryhmät 1/6 Sisältö Yhtälöryhmä Yhtälöryhmässä on useita yhtälöitä ja yleensä myös useita tuntemattomia. Tavoitteena on löytää tuntemattomille sellaiset arvot, että kaikki yhtälöt toteutuvat samanaikaisesti.

Lisätiedot

MAB3 - Harjoitustehtävien ratkaisut:

MAB3 - Harjoitustehtävien ratkaisut: MAB - Harjoitustehtävien ratkaisut: Funktio. Piirretään koordinaatistoakselit ja sijoitetaan pisteet:. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä. Funktiolla

Lisätiedot