Mikä on tietokanta?
Luennon äänittäminen epäonnistui. Korvikkeeksi voi yrittää kuunnella
vastaavaa luentoa viime vuodelta.
- Tietokanta on kokoelma yhteenliittyvää tietoa (data)
- Tietokanta on loogisesti yhtenäinen kokoelma tietoa jolla on
jokin merkitys.
- Tietokanta on suunniteltu, rakennettu ja täytetty tiedolla
jotain tiettyä tarkoitusta varten. Sillä on jokin tarkoitettu
käyttäjäryhmä ja joitain ennaltalaadittuja ohjelmia joita
käyttäjät käyttävät.
Mitä hyötyä on tietokannoista?
Ongelma: osoitekirja
- Ratkaisu 1
- Paperi ja kynä
Hyödyt
- Halpa ja yksinkertainen ratkaisu
Haitat
- Hankala etsiä, päivittää, jakaa ja laajentaa
- Hankalaa lisätä uutta informaatiota esim. sähköpostiosoitteita
- Tiedon eheys? esim. Kaksi ihmistä asuu samassa kommuunissa. Toisesta
vain viittaus toiseen (kts. Kallen osoite). Toinen muuttaakin muualle. Muistetaanko päivittää myös toiselle uusi osoite?
- Turhaa tiedon toistoa
- Varmuuskopiointi?
-
- Ratkaisu 2
- Irtolehtikansio ja kynä
Hyödyt
- Voidaan helposti pitää järjestyksessä esim. nimen mukaan
- Voidaan helpommin lisätä, poistaa ja päivittää
Haitat
- Edelleen samat ongelmat kuin ensimmäisessä vaihtoehdossa. Hakeminenkaan
ei onnistu helposti kuin nimen mukaan.
- Ratkaisu 3
- Tekstitiedosto
Hyödyt
- Vapaasti muotoiltavissa
- Rajoittamaton koko
- Helposti kopioitavissa
- Jaettavissa
- Tekstihaku
Haitat
- Tiedon eheys? Toisto?
- Entä jos vaatimukset kasvavat?
- Tiedosto kasvaa hyvin suureksi
-
Ongelmat
- Hakeminen hidastuu
- Elm Street antaakin tulokseksi Wilhelm Street
Ratkaisu
- Jaetaan tieto kenttiin
- Lisätään paljon käytetyille kentille hakemisto
Tietokannat
- Kenttä (Record) esim. etunimi, sukunimi, lähiosoite jne.
- Avain (Key) esim. nimi
- Indeksi (Index) esim. hakemisto osoitteista
- Osoitteet ja nimet on erotettava toisistaan
-
Ongelmat
- Isoja perheitä, jotka muuttavat usein. Jonkun osoite saattaa unohtua päivittää.
- Säästetään tilaa jos voidaan tehdä päivitys vain yhteen paikkaan
- Ei enää ongelmia joulukortteja lähetettäessä: yksi kortti jokaiseen osoitteeseen
Ratkaisu
- Kaksi tiedostoa: yksi henkilöille ja yksi osoitteille
- Kuinka yhdistetään henkilö ja osoite?
Tietokannat
- Ristiriidattomuus (Consistency)
- Normalisointi (Normalization)
- Viiteavaimet (Foreign keys)
- Henkilöllä on useampia asuntoja
-
Ongelmat
- Henkilö voi omistaa tai vuokrata useita asuntoja
- Monta henkilöä voi omistaa useita asuntoja. (M-to-M)
Usea henkilö voi omistaa yhdessä asunnon (M-to-1)
Yksi henkilö voi omistaa useita asuntoja (1-to-M)
Yksi henkilö voi omistaa yhden asunnon(1-to-1)
Ratkaisu
- Henkilöstä viittaus hänen omistamaansa asuntoon jos useampi voi omistaa
yhdessä asunnon
- Asunnosta viittaus omistajaan jos henkilöllä voi olla useita asuntoja
- Uusi tiedosto, joka yhdistää omistajan ja asunnon
Tietokannat
- Yhteydet (Relationships)
- Kardinaalisuus (Cardinality)
- Halutaan lisätä uutta tietoa tai tehdä yhteenvetoja
-
Ongelmat
- Halutaan tietää montako joulukorttia on lähetetty ja saatu
- Halutaan tulostaa siistit osoitelaput joulukortteihin
- Keneltä ei ole tullut yhtään joulukorttia pariin vuoteen?
Ratkaisu
- Uusien kenttien lisääminen
- Yhteenvetojen muodostaminen
- Kieli kyselyjen ja yhteenvetojen tekemiseen
Tietokannat
- Kyselykielet (Query Languages)
- Tiedon organisointi käyttäjän mukaan
-
Ongelmat
- Muut perheenjäsenet haluavat nähdä nimet ja osoitteet yhdessä
- Vaimolle ei haluta näyttää entisten eikä varsinkaan nykyisten tyttöystävien osoitteita
Ratkaisu
- Käytetään valmiita kyselyjä näkyminä tietokantaan
- Voidaan yhdistää tietoja useasta tiedostosta
- Määritellään oikeuksia käyttäjien mukaan
Tietokannat
- Liitokset (Joins)
- Näkymät (Views)
- Turvallisuus (Security)
- Liittyvien tietojen pakollinen olemassaolo
-
Ongelmat
- Postikorttia ei voi lähettää jollei löydy osoitetta
- Nimet eivät yksilöidy ilman osoitetta esim. Matti Meikäläinen asuu osoitteessa TNT 9 A 101 ja toinen Matti Meikäläinen osoitteessa TNT 9 B 101
Ratkaisu
- Nimeä ei voi syöttää jollei syötä myös osoitetta
- Osoitetta ei voi poistaa jos se liittyy johonkin nimeen
Tietokannat
- Viite-eheys (Referential Integrity)
- Heikot kohteet (Weak entities)
Ohjelmoinnillinen pääsy tietoihin
Esimerkit
- Halutaan rakentaa Java-, C++- tai Delphi-ohjelma, jolla käsitellään tietokannan tietoja
Ratkaisu
- Määritellään kenttien tietotyypit
- Käytetään kirjastofunktioita tiedonsaantiin
Tietokannat
- Tietokantaskeemat (Database schemas)
- Standardoidut liittymärajapinnat (ODBC / JDBC)
- Upotetut kyselyt (Embedded Queries)
Monta päivitystä, jotka tehdään joko kaikki tai ei yhtään
Esimerkit
- Kaksi taloutta muuttaa yhteen eli täytyy muuttaa usean henkilön asumistietoja. Mitä jos tietokone kaatuu kesken muutosten?
Ratkaisu
- Esitetään, että kaikki päivitykset tehtäisiin yhtäaikaa
- Mahdollistetaan vahvistuksien (commit) ja peruutuksien (rollback) avulla
Tietokannat
- Tapahtumien hallinta (Transaction management)
- Jakamattomuus (Atomicity)
Tietokone kaatuu
Ovatko tiedot vielä tallessa?
- Ovatko tiedot muuttumattomat?
Ratkaisu
- Varmistetaan, että kaikki vanha data on saatavilla viimeiseen hyväksyntään (commit) saakka.
Tietokannat
- Pysyvyys (Durability)
- Elvytys (Recovery)
Useampi tietokone saman tiedon käsittelijänä
Esimerkit
- Kaksi käyttäjää päivittää tietokantaa yhtäaikaa
Ratkaisu
- Tapahtumat ovat atomisia eli eivät jakaudu osiin
- Tapahtumat tapahtuvat peräkkäin jossakin järjestyksessä
Tietokannat
- Samanaikaisuuden hallinta (Concurrency Control)
- Transaction isolation
- Transaction serializability
Yleisiä vaatimuksia tietokannalta
- Kukin tieto tallennetaan tietokannassa vain yhteen paikkaan eli ei
esiinny turhaa toistuvuutta (redundanssia)
- Tietoja pystytään hakemaan joustavasti erilaisin perustein, myös
sellaisin, joita ei tietokantaa suunnitellessa ole pystytty
ennakoimaan.
- Tietokannan rakenteellinen muuttaminen on joustavaa
- Hyväksikäyttö ja sovellusohjelmat ovat riippumattomia tietojen
fyysisestä talletusrakenteesta: tietoriippumattomuus
Relaatiotietokannat
- E.F. Codd esitteli relaatiomallin jo 1970
- yksinkertaisin, joustavin ja toteuttaa parhaiten tietokannalle
asetettavat vaatimukset
- Vaatii eniten koneresursseja
- Relaatiotietokannassa tiedot esitetään tauluina (table)
yhtä riviä kutsutaan tietueeksi (record)
- taulun jokaisella rivillä yhtä monta tietoa
- jokaisella rivillä yksikäsitteinen perusavain
- kutakin riviä vastaa jokin reaalimaailman kohde
- kuhunkin kohteeseen liitetään vain siihen välittömästi
liittyvät ominaisuudet
- tauluja kutsutaan myös relaatioiksi
- Kukin yksittäinen tieto kannassa voidaan hakea ainakin
ilmoittamalla taulun nimi, perusavaimen sarakenimi ja avaimen arvo
sekä haettavan tiedon sarakenimi.
Ainakin tämä hakutapa olemassa, lisäksi lukemattomia muita.
Tietokannan hallintajärjestelmät
Tietokannan hallintaan tarkoitettu ohjelmisto esim. Oracle, DB2, Ingres ja
SQL Server. Tietyin rajoituksin tietokannan hallintajärjestelmäksi voi kutsua myös Accessia ja Paradoxia.
Hallintajärjestelmän perusvaatimukset
- Perusoperaatiot (tallennus, haku, päivitys)
- Tietoriippumattomuus
- Yhteiskäyttö
- Ylimäärättömyys
- Eheys
- Turvaaminen
- Tehokkuus ja suorituskyky
- Yhteensopivuus
- Skaalautuvuus
Tietokannan hallintajärjestelmien huonoja puolia
- Monimutkaisuus
- Koko
- Hinta
- Laitteistokustannukset
- Muutoskustannukset
- Suorituskyky
- Vahinkojen suuri vaikutus
Lähteet