TIETOKANTOJEN PERUSTEET MARKKU SUNI
OSIO 02 Tietokantojen perusteita
Tietokanta Näistä vaatimuksista seuraa: tietokantaan liittyy ohjelmisto, joka hoitaa sitä tämä ohjelmisto varsinaisesti lukee ja kirjoittaa kantaa tuotanto-ohjelmat vain pyytävät palveluja mikä tehokkaasti, mikä vähemmän näkymä -ajattelu ohjelma pyytää tietoja nimeltä READ ETUNIMI, SUKUNIMI... ohjelman ei tarvitse tietää, missä kenttä sijaitsee tietokantajärjestelmä tarvitsee myös omat työtilat VIHREÄ RYHMÄ
Tietokanta Näistä vaatimuksista seuraa myös: kukin tieto vain yhdessä kohtaa tieto on turvattava kuka saa muuttaa suojaus kuka on muuttanut tieto muutoksista, jäljitys kaikki ohjelmat käyttävät samaa tietokantaa tuettava samanaikaista käyttöä tietojen lukitus tietokanta järjestettävä ja talletettava tehokkaasti PUNAINEN RYHMÄ
Tietokanta asiakas tilaus Korjaamo Varaosat Tietokantarakenteita hierarkinen esim DL/1 relaatiomalli erilliset pienet taulut taulujen välillä relaatiot kyselyn tulos aina: monta havaintoa kaikki ehdon täyttävät
Tehdas A Jylhävuori OY Jylhävuori kauppaneuvos Tehdas B Maailma on hierarkinen Tietokantarakennekin voi olla hierarkinen esim DL/1
Asiakasrekisteri Tunnistetiedot nimi, LYT Yht. hlöt Tietokantarakenteita hierarkinen esim DL/1 Tässä kuvaus yhdestä asiakkaasta Yks. A Yks. B
Yks. A Asiakasrekisteri Tunnistetiedot nimi, LYT Yht. hlöt hakupolku Yks. B Tietokantarakenteita hierarkinen esim DL/1 juurisegmentti segmentti lapsi, vanhempi sisarukset segmentti koostuu kentistä
Asiakasrekisteri Tunnistetiedot nimi, LYT Tietokantarakenteita hierarkinen esim DL/1 Yht. hlöt Yks. A Yks. B Yht. henkilöitä voi olla monta... segmentilla monta ilmentymää
Asiakasrekisteri Tunnistetiedot nimi, LYT Yht. hlöt Tietokantarakenteita hierarkinen esim DL/1 Ohjelmat lukevat Erilaisia segmenttien yhdistelmiä Yks. A Yks. B
Tietokantarakenteita hierarkinen esim DL/1 relaatiomalli erilliset pienet taulut taulujen välillä relaatiot kyselyn tulos aina: monta havaintoa kaikki ehdon täyttävät
Relaatiomalli ei hierarkinen Dr. E. F. Codd julkaisi vuonna 1970 artikkelin: Tiedon relaatiomalli suurissa jaetuissa tietovarastoissa Codd määritteli 13 sääntöä relaatiomallille
Relaatiomalli Coddin 13 sääntöä 1. Relaatiotietokannan hallittavuus relaatio-ominaisuuksin 2. Informaatiosääntö: kaikki informaatio arvoina tauluissa 3. Varmistettu saatavuus: jokainen arvo saavutettava 4. Järjestelmällinen null-arvon tuki 5. Aktiivinen reaaliaikainen luettelo 6. Suhteellinen tiedon alikieli 7. Näkymän päivityssääntö 8. Joukko-tason lisäys, päivitys ja poisto 9. Fyysinen tiedon riippumattomuus 10. Looginen tiedon riippumattomuus 11. Eheysriippumattomuus 12. Hajautusriippumattomuus 13. Ei ole mahdollista ohittaa eheyssääntöjä
Relaatiomalli Coddin 13 sääntöä 1. Relaatiotietokannan hallittavuus relaatio-ominaisuuksin Relaatiotietokannassa voitava hallita tietokantoja sen relaatioominaisuuksien kautta Sama käsittelykieli, samat operaatiot käytössä kannan hallintaan 2. Informaatiosääntö: kaikki informaatio arvoina tauluissa kaikki informaatio relaatiokannassa (myös taulujen ja sarakkeiden nimet) esitetään arvoina tauluissa Ei erillistä hallintasysteemiä tai hallintataulustoa 3. Varmistettu saatavuus jokainen arvo tietokannassa on saavutettava taulun nimen, pääavaimen ja sarakenimen perusteella Jokainen arvo tarkoittaa sekä dataa, että rakennetietoa 4. Järjestelmällinen null-arvon tuki Null tarkoittaa tässä tuntematonta arvoa tietokanta tuottaa täydellisen tuen null-arvolle erotuksena oletusarvoista ja riippumatta toiminta-alueesta
Relaatiomalli Coddin 13 sääntöä 5. Aktiivinen reaaliaikainen luettelo tietokannan ja sen sisällön määrittely esitetään loogisella tasolla tauluina ja voidaan siksi kysellä tietokannan kielellä 6. Suhteellinen tiedon alikieli Vähintään yhdellä tuetulla kielellä tulee olla hyvin määritelty rakenne Sen täytyy tukea tietojen määrittelyä, käsittelyä, eheyssääntöjä, oikeuksia ja tapahtumia 7. Näkymän päivityssääntö Kaikki näkymät, jotka ovat teoreettisesti päivitettäviä, voidaan päivittää järjestelmällä 8. Joukko-tason lisäys, päivitys ja poisto DBMS tukee joukkohakujen lisäksi joukko-tason lisäystä, päivitystä ja poistoa DBMS = Data Base Management System
Relaatiomalli Coddin 13 sääntöä 9. Fyysinen tiedon riippumattomuus Sovellusohjelmat ovat loogisesti muuttumattomia, kun fyysisiä hakumenetelmiä tai tietovaraston rakennetta muutetaan 10. Looginen tiedon riippumattomuus Sovellusohjelmat ovat loogisesti muuttumattomia, mikäli mahdollista, kun fyysisiä hakumenetelmiä tai tietovaraston rakennetta muutetaan 11. Eheysriippumattomuus Tietokantakielen täytyy kyetä määrittelemään eheyssääntöjä Ne täytyy voida tallettaa online-luetteloon eikä niitä voi ohittaa 12. Hajautusriippumattomuus Sovellusohjelmat ovat loogisesti muuttumattomia, kuin tietoa ensimmäisen kerran hajautetaan, tai kun sitä uudelleenhajautetaan 13. Ei ole mahdollista ohittaa eheyssääntöjä Ei edes käyttämällä alemman tason kieltä
Relaatiomalli Relaatiojärjestelmän ideoita Coddin idea perustuu suhteellisuusalgebran käyttöön Tieto jaetaan joukkoihin ja suhteutettuihin yleisiin alijoukkoihin Tiedot erotetaan joukkoihin, jotka muistuttavat taulurakennetta. Taulut koostuvat yksittäisistä tietoelementeistä, joita sanotaan sarakkeiksi tai kentiksi. Yksi itsenäinen kenttäjoukko on nimeltään tietue tai rivi. Tiedon jakamista erillisiin joukkoihin kutsutaan normalisoinniksi
Relaatiomalli Coddin relaatiotietokantamalli Juuritaso Taso 1 juuren lapsi Taso 2 tason 1 lapsi Taso 3 Tason 2 lapsi
Relaatiomalli Coddin relaatiotietokantamalli HUOM.: Tämä on LOOGINEN KUVA Tämä EI ole toteutus Hierarkiset tietokannat toteutettiinkin tähän tapaan
Taulu Id enimi snimi muuta 1 Aki Joki xxx 2 Esa Elo yyy 3 Ari Salmi zzz 4 Mika Virta www 5 Sami Meri sss sarake rivi Taulu on relaatiojärjestelmän perusyksikkö. Koostuu riveistä ja sarakkeista Joka rivin joka sarakkeella on arvo ehkä null
Id enimi snimi muuta 1 Aki Joki xxx 2 Esa Elo yyy Id katuos postios maa 1 Alikatu 20100 FI 2 Ylikatu 20880 FI Id tuotenro pvm kpl 1 11 010101 10 1 13 010101 12 2 11 010201 15 Tuotenro hinta nimike 11 100 metla 12 10 pesti 13 20 sevakko Taulut: asiakas osoite tilaus tuote
Id enimi snimi muuta 1 Aki Joki xxx 2 Esa Elo yyy Id katuos postios maa 1 Alikatu 20100 FI 2 Ylikatu 20880 FI Id tuotenro pvm kpl 1 11 010101 10 1 13 010101 12 2 11 010201 15 Tuotenro hinta nimike 11 100 metla 12 10 pesti 13 20 sevakko Käsitteitä: tietokanta taulu rivi sarake
Id enimi snimi muuta 1 Aki Joki xxx 2 Esa Elo yyy Id katuos postios maa 1 Alikatu 20100 FI 2 Ylikatu 20880 FI Id tuotenro pvm kpl 1 11 010101 10 1 13 010101 12 2 11 010201 15 Tuotenro hinta nimike 11 100 metla 12 10 pesti 13 20 sevakko Tilauslista: enimi snimi katuos postios tuotenro nimike kpl yhthinta yhdistävinä tekijöinä: id ja tuotenro
RELAATIOTIETOJEN KÄSITTELY SQL-kielellä: Structured Query Language Se ei ole strukturoitu (Structured) Se ei ole vain kyselyihin (Query) Se ei ole puhtaasti ottaen kieli (Language) kehittelypaikkana IBM:n laboratorio San Jose, California aika 1970-luvun loppupuoli alunperin IBM:n relaatiokantaa DB2 varten Ei-rakenteinen tarkoittaa mitä ennemmin kuin miten SQL määrittelee mitkä tiedot haetaan, poistetaan tai lisätään EI sitä, miten se tehdään
RELAATIOTIETOJEN KÄSITTELY SQL-kielellä: Structured Query Language Se ei ole strukturoitu (Structured) Se ei ole vain kyselyihin (Query) Se ei ole puhtaasti ottaen kieli (Language) SQL on hyvin standardoitu: ANSI standardi ISO standardi tuotteistajilla omia lisäyksiä ja muunnelmia yleisesti kuitenkin perus-sql on samanlainen kaikissa ympäristöissä
RELAATIOTIETOJEN KÄSITTELY SQL-kielellä: Structured Query Language Se ei ole strukturoitu (Structured) Se ei ole vain kyselyihin (Query) Se ei ole puhtaasti ottaen kieli (Language) Tietokantajärjestelmälle esitetään kysely Tietokanta tutkii kyselyn, kääntää ja analysoi sen (bind) Optimoi hakupolun (päättää, missä järjestyksessä haku) Hakee tarvittavat rivit Palauttaa kutsuvalle ohjelmalle kerralla kaikki ehdot täyttävät rivit SQL voiolla staattinen = ennalta käännetty, kiinteä dynaaminen = samantien käännös ja suoritus
TYYPILLINEN SQL-KYSELY QUIT; RUN; CREATE TABLE data.tiedot AS SELECT nw1o0.client_nr, nw1o0.client_typ, nw1a0.name, nw1a0.more_name FROM prod.nw1o0, prod.nw1a0 WHERE nw1o0.client_r = nw1a0.client_r AND nw1o0.client_typ = 40 AND nw1o0.client_c LIKE 049% ORDER BY nw1a0.name ;
TIETOKANTARATKAISUISTA Ennen sitten... nytten
TIETOKANTARATKAISUISTA Uusille sovelluksille verkkoympäristössä ominaista pienentyneet ylläpitokustannukset sovelluksia voidaan skaalata sopivimpaan kokoon voidaan käyttää myös pieniä välineitä pienentynyt verkon kuormitus toiminnot tapahtuvat siellä, missä se on edullista voidaan tehdä paljon tai vähän tietyssä laitteessa erilaiset järjestelmät voivat toimia yhdessä edellytyksenä on vain yhteinen verkkoprotokolla parantunut tietojen yhtenäisyys verkon käyttö ja siirräntä ohjaa
TIETOKANTARATKAISUISTA Asiakas/palvelin-malli (Client/Server model) Asiakas/palvelin-järjestelmä on prosessimalli, jossa yksi sovellus on jaettu kahdelle eri prosessorille ( edustaprosessori ja taustaprosessori ), jotka toimivat yhdessä (näkymättä käyttäjälle) suorittaessaan yksittäistä tehtävää. Asiakas/palvelin-tuote liittää prosessorit yhteen luoden yhden järjestelmän kuvitelman. Jaettavat resurssit ovat asiakkaita, jotka käyttävät sovittuja palveluja. Rakenne on rekursiivinen, eli palvelimet voivat muuttua asiakkaiksi ja pyytää palveluja muilta verkon palvelimilta ja niin edelleen. Bernard H. Boar kirjassa Implementing Client/Server Computing.
Microsoft Access SQL-toteutuksia Kuuluu Office-tuoteperheeseen Voit käyttää graafista käyttöliittymää tai kirjoittaa SQL:a Personal Oracle Voit kirjoittaa käskyrivejä Voit käyttää C++ tai Visual Basic-kielisiä ohjelmia Apuohjelmia tietokannan käsittelyyn ja luontiin Microsoft Query Kyselytyökalu Windows kehitystyökalujen (C++, VB) mukana Vie SQL-käskyt ohjaimelle, joka vie ne tietokannalle
IBM Universal DB2 SQL-toteutuksia Sama tietokanta kaikissa ympäristöissä ODBC Open DataBase Connectivity toiminnallinen kirjasto tarjoaa yleisen ohjelmointirajapinnan alla olevaan tietokantajärjestelmään keskustelee tietokannan kanssa ohjaimen kautta yksikään ODBC:n funktio ei ole tietokantatoimittajaan sidottu sama koodi toimii kaikilla tietokannoilla ODBC mukana monissa tuotteissa koodi yleistä, standardin etuja ei välttämättä niin tehokasta kuin suora kannan käyttö
SQL-toteutuksia Sovellus ODBC Open DataBase Connectivity kutsuu ODBC-funktioita Ohjainten hallinta ODBCohjain Tiedot lataa ODBC-ohjaimen suorittaa ODBC-kutsut, lähettää SQL-pyynnöt, palauttaa tulokset relaatiotietokanta
SQL sovellusten ohjelmoinnissa SQL määriteltiin ANSI-standardissa 1986 ANSI-standardi 1989 määrittää kolme liittymää Moduulikieli olemassaolevat proseduurit, parametrit Upotettu SQL SQL-käskyjä ohjelmakoodissa usein esikääntäjä SQL-käskyjen muodostamiseen standardissa käskyt COBOLia, FORTRANia, Pascalia PL/1:ä varten Suora ratkaisu tuotteen tekijästä kiinni
SQL sovellusten ohjelmoinnissa Upotettu SQL oli ensin suosituin tapa käyttää SQL:ä ohjelmissa käyttää staattista SQL:ä SQL-käskyt käännetään ohjelmaan, eikä niitä enää muuteta vrt. tulkki tai kääntäjä suorituskyky (tehokkuus) on hyvä ei juuri joustava Dynaaminen SQL nykyisin suosittu SQL-käskyt käsitellään suoritushetkellä joustava, ohjelma voi muuttua helposti hiukan hitaampi kuin staattinen SQL
SQL sovellusten ohjelmoinnissa ANSI-standardi 1992 laajensi kieltä määrittää kolme yhteensopivuustasoa perustaso, keskitaso, täysi taso Uusia piirteitä liittymä tietokantoihin selattavat kursorit dynaaminen SQL ulkoliitokset (outer join) upotettu SQL SQL-käskyjä ohjelmakoodissa
Some try to tell me Thoughts they cannot defend: Just what you ll want to be You ll be in the end The Moody Blues This is the end The Doors