TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 5 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1
Tietokannan normalisoinnin esimerkki
Normalisoimaton tietokannan taulu Vuokraajan_ Vuokraajan_ Asunto_ Omistajan_ Vuokraus_ Vuokraus_ Kk_vuokra Maksu nimi puh osoite nimi alku loppu tapa Kulut% Pertti Aalto 040-43 4321 Kielotie 24, Vantaa Teppo Kuha 1.7.2009 30.8.2009 650 Luotto 1 Tiina Meri 045-7583986 Kiertotie 1A7, Helsinki Seppo Kajo 1.9.2008 31.1.2009 450 Pankki 0 Frank Allman 020-439687 Tulikuja 6F14, Espoo Tarja Raja 15.1.2009 28.2.2009 250 Lasku 2 Kai Kivi 050-3129673 Palkokatu 10, Espoo Simo Rajala 1.2.2009 31.5.2009 800 Kateinen 0 Mitkä voisivat olla ylläolevan taulun avainehdokkaita? Tiedon syöttöön liittyviä ongelmia Uuden vuokrattavan asunnon lisääminen Vuokraajan tiedot ennen vuokrasopimuksen tekemistä Tiedon päivitykseen liittyviä ongelmia Omistajan nimen muutos Tiedon poistoon liittyviä ongelmia Vuokraajan tiedot voi poistua kun vuokraus poistetaan Omistajan tiedot voi poistua kun vuokraus poistetaan Pasi Ranne Metropolia Ammattikorkeakoulu 3
Normaalimuotojen kertaus Vuokraajan_ Vuokraajan_ Asunto_ Omistajan_ Vuokraus_ Vuokraus_ Kk_vuokra Maksu nimi puh osoite nimi alku loppu tapa Kulut% Pertti Aalto 040-43 4321 Kielotie 24, Vantaa Teppo Kuha 1.7.2009 30.8.2009 650 Luotto 1 Tiina Meri 045-7583986 Kiertotie 1A7, Helsinki Seppo Kajo 1.9.2008 31.1.2009 450 Pankki 0 Frank Allman 020-439687 Tulikuja 6F14, Espoo Tarja Raja 15.1.2009 28.2.2009 250 Lasku 2 Kai Kivi 050-3129673 Palkokatu 10, Espoo Simo Rajala 1.2.2009 31.5.2009 800 Kateinen 0 Normalisoi 3NM:n asti 1NM: kaikki arvot ovat atomisia l. jakamattomia 2NM: kaikki attribuutit ovat funktionaalisesti riippuvia koko perusavaimesta 3NM: jokainen ei-avainattribuutti on funktionaalisesti riippuva vain perusavaimesta (eikä mistään nk. tavallisista attribuuteista) Tehtävä: Mieti mitkä sarakkeet rikkovat normaalimuotoja ja miten ne saadaan korjattua. Pasi Ranne Metropolia Ammattikorkeakoulu 4
Normalisointi: ongelmat ja ratkaisut NM Ongelma Ratkaisu 1NM Vuokraajan_ Vuokraajan_ Asunto_ Omistajan_ Vuokraus_ Vuokraus_ Kk_vuokra Maksu Kulut% nimi puh osoite nimi alku loppu tapa Pertti Aalto 040-43 4321 Kielotie 24, Vantaa Teppo Kuha 1.7.2009 30.8.2009 650 Luotto 1 Tiina Meri 045-7583986 Kiertotie 1A7, Helsinki Seppo Kajo 1.9.2008 31.1.2009 450 Pankki 0 Frank Allman 020-439687 Tulikuja 6F14, Espoo Tarja Raja 15.1.2009 28.2.2009 250 Lasku 2 Kai Kivi 050-3129673 Palkokatu 10, Espoo Simo Rajala 1.2.2009 31.5.2009 800 Kateinen 0 Asunto_osoite ei ole atominen (halutaan hakea asuntoja kaupungeittain) Jaetaan attribuuteiksi Asunto_katu, Asunto_kaupunki 2NM Vuokraajan_nimi -> Vuokraajan_puh Uusi taulu Vuokraajat, jolla perusavain Vuokraaja_tunnus Asunto_osoite -> Omistajan_nimi, Kk_vuokra Uusi taulu Asunnot, jolla perusavain Asunto_tunnus 3NM Maksutapa -> Kulut% Uusi taulu Laskutuskulut, jolla perusavain Maksutapa Miten mallinnetaan asunnon vuokraus(tapahtuma)? Uusi taulu: Vuokraukset_1 (Vuokraaja_tunnus, Asunto_tunnus, Vuokraus_alku, Vuokraus_loppu, Maksutapa) Tai: Vuokraukset_2 (Vuokraus_tunnus, Vuokraaja_tunnus, Asunto_tunnus, Vuokraus_alku, Vuokraus_loppu, Maksutapa) Pasi Ranne Metropolia Ammattikorkeakoulu 5
Normalisointiharjoitus, ratkaisuesimerkki Vuokraajat Vuokraaja_ Vuokraajan_ Vuokraajan_ tunnus nimi puh VU12 Pertti Aalto 040-43 4321 VU8 Tiina Meri 045-7583986 VU26 Frank Allman 020-439687 VU14 Kai Kivi 050-3129673 Asunnot Asunto_ Omistajan_ Katuosoite Kaupunki tunnus nimi Kk_vuokra AS3 Kielotie 24, Vantaa Teppo Kuha 650 AS10 Kiertotie 1A7 Helsinki Seppo Kajo 450 AS21 Tulikuja 6F14 Espoo Tarja Raja 250 AS4 Palkokatu 10 Espoo Simo Rajala 800 Laskutuskulut Maksu tapa Kulut% Luotto 1 Pankki 0 Lasku 2 Kateinen 0 Vuokraukset_1 Vuokraaja_ tunnus, FK Asunto_ tunnus, FK Vuokraus_ alku Vuokraus_ loppu Maksu tapa, FK VU12 AS3 1.7.2009 30.8.2009 Luotto VU8 AS10 1.9.2008 31.1.2009 Pankki VU26 AS21 15.1.2009 28.2.2009 Lasku VU14 AS4 1.2.2009 31.5.2009 Kateinen Vuokraukset_2 Vuokraus_ Vuokraaja_ Asunto_ Vuokraus_ Vuokraus_ Maksu tunnus tunnus, FK tunnus, FK alku loppu tapa, FK 1001 VU12 AS3 1.7.2009 30.8.2009 Luotto 1002 VU8 AS10 1.9.2008 31.1.2009 Pankki 1003 VU26 AS21 15.1.2009 28.2.2009 Lasku 1004 VU14 AS4 1.2.2009 31.5.2009 Kateinen Pasi Ranne Metropolia Ammattikorkeakoulu 6
Tietokantakielet ja SQL
Tietokantakielien yleiset ominaisuudet Tiedonmäärittelykieltä (data definition language, DDL) käytetään tietokannan kaavan (database schema) määrittelyssä ja ylläpidossa Tietokantajärjestelmissä DDL:llä voidaan määritellä myös näkymiä ja tallennusrakenteita, joissakin järjestelmissä näille on omat kielensä Datan muokkauskieltä (data manipulation language, DML) käytetään tiedon tallentamiseen, päivityksiin ja hakuihin DML voi olla korkean tason (joukkokeskeinen, eiproseduraalinen) tai matalan tason (tietuekeskeinen, proseduraalinen). DML voidaan käyttää osana jotakin ohjelmointikieltä tai itsenäisenä kielenä. Viimemainitussa tapauksessa sitä kutsutaan usein kyselykieleksi. Pasi Ranne Metropolia Ammattikorkeakoulu 8
SQL Structured Query Language SQL on melko yksinkertainen korkean tason kieli, jolla kuvataan operaatiot, joita tietokannalle halutaan suorittaa SQL on deklaratiivinen kieli: kyselyjä rakennettaessa on tärkeää ainoastaan halutun tavoitteen esittäminen määritellään mitä halutaan, miten jää TKHJ:n huoleksi SQL kattaa sekä DLL että DML tapahtumat oikeudet Eheyssäännöt Standardi, joka on kehittynyt useinden versioiden kautta v. 1986 alkaen Huomioi tuotekohtaiset eroavuudet! Pasi Ranne Metropolia Ammattikorkeakoulu 9
SQL:n yleisimmät käyttötavat Interaktiivinen kieli ( loppukäyttäjä ) Tietokannan ohjelmointikieli (sulautettu SQL) Ohjelmointirajapinnat (APIt) Tietokannan hallinta Tietokantojen integrointi Pasi Ranne Metropolia Ammattikorkeakoulu 10
Interaktiivinen SQL TKHJ / tietokantapalvelin tietokantapalvelin SELECT select Kysely kysely Vastaus vastaus Tietokanta Käyttäjä kirjoittaa kyselyitä ja saa vastauksia interaktiivisesti Olli Hämäläinen Pasi Ranne Metropolia Ammattikorkeakoulu 11
Ohjelmallinen SQL Kysely Vastaus Sovellusohjelma TKHJ / tietokantapalvelin Tietokanta Kysely upotetaan sovellusohjelmaan ja vastauksena saatu tulos käsitellään samassa ohjelmassa Olli Hämäläinen Pasi Ranne Metropolia Ammattikorkeakoulu 12
SQL:n perustoiminnot lyhyesti Tiedon määrittely CREATE TABLE ALTER TABLE DROP TABLE Tiedon käsittely INSERT DELETE UPDATE Tiedon haku SELECT CREATE INDEX DROP INDEX CREATE VIEW Tapahtumanhallinta COMMIT ROLLBACK Oikeuksien hallinta GRANT REVOKE Pasi Ranne Metropolia Ammattikorkeakoulu 13
SQL-käskyjen esitystapa Kielen varatut sanat ISOILLA KIRJAIMILLA CREATE, TABLE, SELECT, DROP, UPDATE WHERE, GROUP BY, HAVING AND, OR, Käyttäjän määrittämät taulujen ja sarakkeiden nimet pienillä kirjaimilla Isoja kirjaimia käytetään joskus sanan alussa tai erottamaan yhdyssanoja osasto, osastoid, osasto_id, osastotunnus, osasto_tunnus Osasto, OsastoId, OsastoTunnus Pasi Ranne Metropolia Ammattikorkeakoulu 14