A271117 TIETOKANNAT, 3 op Syksy 2008 - TI07 Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi
A271117 TIETOKANNAT Tavoitteet Oppia tietokantojen suunnitteluperiaatteet Osata käyttää SQL-kieltä ja tietokantojen hallintajärjestelmiä Luoda LAMP-ympäristössä toimiva tietokantaa käyttävä web-sovellus Sisältö: Tietokannat Relaatiotietokannat SQL-kieli MySQL käytännössä Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin opintomoniste Eri web-lähteet
TIETOKANNAT Suunnitelma luentojen ja harjoitusten sisällöstä 1. Tietokannat, luentokerrat 1 ja 2 Johdantoa Mitä ovat tietokannat? Miksi tietokantoja tarvitaan? Historiaa 2. Relaatiotietokannat, luentokerrat 3, 4 ja 5 Relaatiokantojen idea Relaatiokantojen suunnitteluperiaatteita Käsitekaaviosta relaatiotietokantaan 3. SQL, luentokerrat 6, ja 7 Relaatiokannan implementointi SQL:n avulla SQL-lauseet Perusharjoittelua SQL:llä 4. MySQL, luentokerrat 8-12 MySQL:n suhde SQL:ään MySQL:n peruskäyttö komentoriviltä MySQL:n käyttö eri ohjelmointikielten avulla Yksinkertainen tietokantaa käyttävä web-sovellus LAMP-ympäristöllä
Johdantoa Tiedon määrä maailmassa lisääntyy koko ajan Hyödyllisen tiedon seulonta vaikeaa Esim. hakukoneet ja metatieto yhä tärkeämpiä Tietokantojen koot esim. web-sovelluksissa voivat olla valtavia Google, YouTube, Facebook, Tieto on valtaa Yrityksen kannattavuus yhä useammin kiinni tiedon saatavuudesta ja hyödyntämisestä Samaan tietoon pitää päästä käsiksi monista eri sovelluksista
Johdantoa Mikä on tietokanta? Eräs määritelmä voisi olla: Mikä tahansa tarkasti määritelty tapa säilyttää rakenteellista tietoa Ensimmäiset tietokantajärjestelmät kehitettiin jo 1960-luvulla Perinteisiä tietokantaesimerkkejä: Puhelinluettelo, kirjasto, opiskelijarekisteri, Etunimi Sukunimi Puhelinnumero Postitoimipaikka Ahto Simakuutio 044 9876 543 Herwood Ilmo Insinööri 020 1235 567 Imatra
Johdantoa Tietokanta voidaan toteuttaa monella eri tavalla Paperi ja kynä, kortisto, tekstitiedosto, XML-tiedosto, binääridata, tietokantaohjelmisto (DBMS), Riippuu sovelluksesta, mikä tapa on järkevin Ammattikielessä: tietokantaohjelmisto == tietokanta Tietokantaohjelmistolla tarkoitetaan kokonaista tietokannan hallintajärjestelmää Tiedon varastointi, haku ja hallinta Esimerkkejä tietokannan hallintaohjelmistoista MySQL, Oracle, MS SQL Server, DB2, PostgreSQL, Firebird, MS Access, Sybase Adaptive Server,
Historiaa Ensimmäistä kertaa tietokanta-sana (Data base) esiintynyt 1963 Yhdyssanan database käyttö yleistyi 1970-luvulla Tietokantojen hallintajärjestelmiä alettiin tehdä 1960-luvulla Yhdysvaltalainen Charles Bachman oli ensimmäisiä alan kehittäjiä (GE, IDS-database) Bachmanin työ perustui navigointimalliin, mikä oli sen ajan tietokoneilla tehokasta Brittiläinen Edgar F. Codd kehitti relaatiotietokannan ja sen perusteoriaa IBM:llä Coddin työtä ei otettu heti mukaan IBM:n tuotteisiin ja mm. Relational Software (nyk. Oracle) ehti mukaan kilpailuun
Historiaa IBM kuitenkin kehitti Coddin työn pohjalta tutkimusprojektina System R:n ja SEQUEL-kyselykielen Koska SEQUEL oli erään toisen yhtiön tavaramerkki, se nimettiin myöhemmin SQL:ksi Ensimmäinen ei-kaupallinen relaatiotietokanta Ingres kehitettiin 1974 Berkeleyn yliopistossa Ensimmäinen kaupallinen relaatiotietokantatuote Oracle V2 ehti markkinoille ennen IBM:n uutta System/38:aa 1979
Historiaa Relaatiomallin suosio kasvoi 1980-luvulla Codd ei ollut tyytyväinen kaikkiin relaatiotietokantoina itseään markkinoiviin tuotteisiin ja kirjoitti 12 sääntöään 1985 SQL standardoitiin 1986 (ANSI) ja 1987 (ISO) Useita päivityksiä SQL-standardiin on tehty, tärkeimpänä ehkä triggerit Viimeisin SQL:n revisio on vuodelta 2006 (lisätty XML:n käsittelyä)
Historiaa 1980-luvulla alettiin myös kehittää rinnakkaisia tietokantajärjestelmiä 1990-luvulla siirryttiin tutkimaan oliotietokantoja, jotka ovat käyttökelpoisia tietyillä sovellusalueilla Ensimmäiset avoimen lähdekoodin tietokannat MySQL ja PostgreSQL ilmestyivät 1990-luvun puolessa välissä 2000-luvulla suosiossa ovat XML-tietokannat, joiden tavoitteena on poistaa perinteinen tiedosto/tietokanta-jako
Tietokannan ominaisuuksista Tietokanta-käsite on yleiskielessä hyvin laaja Kurssilla tietokannalla tarkoitetaan tietokannan hallintajärjestelmällä hallittavaa tietojoukkoa Tietokannan hallintajärjestelmä saa kyselyjä ja päivityksiä TKHJ vastaa tietojen sekä rakenteen muutoksista ja ylläpidosta Tietokannan tietosisällön kuvaus on ns. metatietoa Metatieto talletetaan tietohakemistoon kuinka, mitä, kuka, oikeudet, sallitut arvot,
Tietokantojen etuja tietojen monistumisen hallinta tietojen yhdenmukaisuus informaatio on tiivistä tiedon jakaminen tiedon oikeellisuuden hallinta paremmat suojaukset ja turvallisuus tiedon saatavuus ja vastaavuus tuottavuuden nousu ylläpito helpottuu varmuuskopiointi yms. palveluiden keskittäminen
Tietokantojen haittapuolia monimutkaisuus koko hinta, peruskustannukset, laitteisto (?) suorituskyky vakava vika voi lamauttaa monta palvelua/järjestelmää
Tietokantamallit Hierarkkinen (Hierarchical model) Verkko (Network model) Relaatio (Relational model) Käsite (Entity-relationship model) Olio-relaatio (Object-relational model) Olio (Object model)