Mikä on tietokanta?
http://appro.mit.jyu.fi/2001/kevat/tietokannat/luennot/luento1/
- 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: osoitekirjaRatkaisu 1Paperi ja kynäHyödytHalpa ja yksinkertainen ratkaisuHaitatHankala etsiä, päivittää, jakaa ja laajentaaHankalaa lisätä uutta informaatiota esim. sähköpostiosoitteitaTiedon 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 toistoaVarmuuskopiointi?
Ratkaisu 2Irtolehtikansio ja kynäHyödytVoidaan helposti pitää järjestyksessä esim. nimen mukaanVoidaan helpommin lisätä, poistaa ja päivittääHaitatEdelleen samat ongelmat kuin ensimmäisessä vaihtoehdossa. Hakeminenkaan ei onnistu helposti kuin nimen mukaan.Ratkaisu 3TekstitiedostoHyödytVapaasti muotoiltavissaRajoittamaton kokoHelposti kopioitavissaJaettavissaTekstihakuHaitatTiedon eheys? Toisto?Entä jos vaatimukset kasvavat?Tiedosto kasvaa hyvin suureksiOngelmatHakeminen hidastuuElm Street antaakin tulokseksi Wilhelm StreetRatkaisuJaetaan tieto kenttiinLisätään paljon käytetyille kentille hakemistoTietokannatKenttä (Record)esim. etunimi, sukunimi, lähiosoite jne.Avain (Key)esim. nimiIndeksi (Index)esim. hakemisto osoitteistaOsoitteet ja nimet on erotettava toisistaanOngelmatIsoja perheitä, jotka muuttavat usein. Jonkun osoite saattaa unohtua päivittää.Säästetään tilaa jos voidaan tehdä päivitys vain yhteen paikkaanEi enää ongelmia joulukortteja lähetettäessä: yksi kortti jokaiseen osoitteeseenRatkaisuKaksi tiedostoa: yksi henkilöille ja yksi osoitteilleKuinka yhdistetään henkilö ja osoite?TietokannatRistiriidattomuus (Consistency)Normalisointi (Normalization)Viiteavaimet (Foreign keys)Henkilöllä on useampia asuntojaOngelmatHenkilö voi omistaa tai vuokrata useita asuntojaMonta 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)RatkaisuHenkilöstä viittaus hänen omistamaansa asuntoon jos useampi voi omistaa yhdessä asunnonAsunnosta viittaus omistajaan jos henkilöllä voi olla useita asuntojaUusi tiedosto, joka yhdistää omistajan ja asunnonTietokannatYhteydet (Relationships)Kardinaalisuus (Cardinality)Halutaan lisätä uutta tietoa tai tehdä yhteenvetojaOngelmatHalutaan tietää montako joulukorttia on lähetetty ja saatuHalutaan tulostaa siistit osoitelaput joulukortteihinKeneltä ei ole tullut yhtään joulukorttia pariin vuoteen?RatkaisuUusien kenttien lisääminenYhteenvetojen muodostaminenKieli kyselyjen ja yhteenvetojen tekemiseenTietokannatKyselykielet (Query Languages)Tiedon organisointi käyttäjän mukaanOngelmatMuut perheenjäsenet haluavat nähdä nimet ja osoitteet yhdessäVaimolle ei haluta näyttää entisten eikä varsinkaan nykyisten tyttöystävien osoitteitaRatkaisuKäytetään valmiita kyselyjä näkyminä tietokantaanVoidaan yhdistää tietoja useasta tiedostostaMääritellään oikeuksia käyttäjien mukaanTietokannatLiitokset (Joins)Näkymät (Views)Turvallisuus (Security)Liittyvien tietojen pakollinen olemassaoloOngelmatPostikorttia ei voi lähettää jollei löydy osoitettaNimet 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 101RatkaisuNimeä ei voi syöttää jollei syötä myös osoitettaOsoitetta ei voi poistaa jos se liittyy johonkin nimeenTietokannatViite-eheys (Referential Integrity)Heikot kohteet (Weak entities)Ohjelmoinnillinen pääsy tietoihinEsimerkitHalutaan rakentaa Java-, C++- tai Delphi-ohjelma, jolla käsitellään tietokannan tietojaRatkaisuMääritellään kenttien tietotyypitKäytetään kirjastofunktioita tiedonsaantiinTietokannatTietokantaskeemat (Database schemas)Standardoidut liittymärajapinnat (ODBC / JDBC)Upotetut kyselyt (Embedded Queries)Monta päivitystä, jotka tehdään joko kaikki tai ei yhtäänEsimerkitKaksi taloutta muuttaa yhteen eli täytyy muuttaa usean henkilön asumistietoja. Mitä jos tietokone kaatuu kesken muutosten?RatkaisuEsitetään, että kaikki päivitykset tehtäisiin yhtäaikaaMahdollistetaan vahvistuksien (commit) ja peruutuksien (rollback) avullaTietokannatTapahtumien hallinta (Transaction management)Jakamattomuus (Atomicity)Tietokone kaatuuOvatko tiedot vielä tallessa?Ovatko tiedot muuttumattomat?RatkaisuVarmistetaan, että kaikki vanha data on saatavilla viimeiseen hyväksyntään (commit) saakka.TietokannatPysyvyys (Durability)Elvytys (Recovery)Useampi tietokone saman tiedon käsittelijänäEsimerkitKaksi käyttäjää päivittää tietokantaa yhtäaikaaRatkaisuTapahtumat ovat atomisia eli eivät jakaudu osiinTapahtumat tapahtuvat peräkkäin jossakin järjestyksessäTietokannatSamanaikaisuuden hallinta (Concurrency Control)Transaction isolationTransaction 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
Hierarkkiset tietokannat (PDF)
Verkkotietokannat (PDF)
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
- Database Systems - Gary Lindstrom & Mark Christiansen
- Tietokannan hallintajärjestelmät 1999, Mauri Leppänen