Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin opintomoniste Eri web-lähteet Suunnittelun periaate Mallintaminen kommunikoinnin apuväline kohtuullisen ymmärrettävä dokumentoi hyvin paljon erilaisia menetelmiä paljon ohjelmistotyökaluja tekniikasta riippumaton Normalisointi teorialähtöinen poistaa redundanssin varmistaa laadun tehdään edelleen liian vähän Tietokannat 2
Arkkitehtuuri Tietokantajärjestelmien yleisarkkitehtuuri (ANSI-SPARC) Ei virallinen standardi, mutta tietokannan hallintajärjestelmät toteuttavat Kolmitasoinen arkkitehtuuri ulkoinen taso käsitteellinen taso Näkymä Näkymä 2 Näkymä X Käsitteellinen kuvaus sisäinen taso Sisäinen kuvaus fyysiset tietorakenteet Tietokanta Tietokannat 3 Suunnitteluprosessin kulku Vaatimusten keruu alustavat vaatimukset Käsitteellinen suunnittelu luokka- tai käsitekaavio, ei riipu tietokannan hallintajärjestelmästä Tietokannan hallintajärjestelmän valinta Looginen suunnittelu tietokannasta riippuvainen looginen kaavio Fyysinen suunnittelu tietokannasta riippuvainen fyysinen kaavio Toteutus Tietokannat 4 2
Luokka- eli käsitekaavio Tärkein väline tietokannan suunnittelussa! Ominaisuudet, jotka kaavion tulisi täyttää täydellisyys oikeellisuus luettavuus minimaalisuus riittävyys normaalisuus Tietokannat 5 Käsitekaavio UML-luokkakaavio Voidaan käyttää ohjelmiston tietosisällön kuvaamiseen (ohjelmistotuotannon esitutkimus- ja määrittelyvaihe) Kommunikaatioväline ohjelmistoasiantuntijoiden ja asiakkaan välillä Käytetään myös tietokannan rakenteen tarkempaan suunnitteluun (ohjelmistotuotannon suunnitteluvaihe) Toimii relaatiotietokannan graafisena esityksenä Riippumaton tietokannan hallintajärjestelmästä Tietokannat 6 3
Esimerkkikaavio Matkanjärjestäjä nimi osoite järjestää Matka alkupvm loppupvm hinta sisältää Hotelli nimi huoneiden lkm luokitus.. suuntautuu.. on oikeuttaa Kohde paikka keskilämpötila Matkustaja nimi osoite.. omistaa Lippuvihko numero sijaitsee nimi Maa Kooste Lippu numero tyyppi Tietokannat 7 Käsitekaavio Käsite on samanlaiset ominaisuudet omaavien asioiden joukko (vrt. luokka) Käsitteen ilmentymä on yksittäinen tietyillä em. ominaisuuksien arvoilla varustettu tietoalkio (vrt. olio) Assosiaatiot kuvaavat käsitteiden välisiä yhteyksiä Käsitteille annetaan vain kaikki tarvittavat ominaisuudet ei enempää eikä vähempää Vältä redundanssia! Redundanssi = sama asia kahdella (tai useammalla) eri tavalla Tuhlaa tilaa ja tekee järjestelmän virhealttiiksi Tietokannat 8 4
Käsitekaavio Kaaviota voi testata esittämällä sopivia kysymyksiä ja hakemalla tulokset kaaviosta (navigointi) Käsitteiden väliset yhteydet kertovat tarvittavat viiteavaimet Käsitteiden ominaisuuksiin ei siis laiteta viiteavaimia Perusavaimia (esim. henkilö_id) ei myöskään kannata laittaa alustavaa tietosisältöä kuvaaviin malleihin Globaalisti näkyvistä (kaikkien käyttämistä) käsitteistä ei yleensä piirretä yhteyksiä Tietokannat 9 Miettimistauko: verkkokaupan käsitteitä? Tietokannat 0 5
Relaatio (taulu, table) Relaatiotietokannan tallennusrakenne on kaksiulotteinen taulu Koostuu kentistä (attribuutit, sarakkeet) ja tietueista (monikot, rivit) Relaation nimi on yksilöllinen Relaatiot perustetaan SQL-lauseella (CREATE TABLE) Esimerkki: Opiskelija taulu: Opiskelija_ID Etunimi Sukunimi Osoite Puhelinnro 00023 Olli Opiskelija Opiskelijankatu A 2 045 6789 02 00024 Outi Opiskelija Opiskelijankatu 2 A 044 5678 90 Tietokannat Relaation ominaisuuksia Jokainen relaation solu sisältää tasan yhden atomisen arvon Jokaisella attribuutilla on erillinen nimi Kaikilla attribuutin arvoilla on sama arvoalue Attribuuttien järjestyksellä ei ole väliä Jokainen monikko on erillinen Relaatio ei sisällä kahta samaa monikkoa Monikoiden järjestyksellä ei ole merkitystä Tietokannat 2 6
Ominaisuus, attribuutti (Attribute) Otsikko (nimetty sarake), joka ilmaisee arvon (sarakkeen) merkityksen relaatiossa Edustaa käsitteen ominaisuutta Monikko (Tuple) Järjestetty arvojen lista, jossa on yksi arvo kutakin relaatiokaaviossa nimettyä attribuuttia kohden (relaation rivi) Edustaa tiettyä yksikäsitteistä käsitteen ilmentymää Arvojoukko, arvoalue (Domain) Arvojen joukko, johon sarakkeen (attribuutin) arvot kuuluvat Esim. kokonaisluku, teksti, arvoluettelo Tietokannat 3 Avaimet Taulun rivit tunnistetaan avaimen avulla Jokaisella rivillä täytyy olla yksilöllinen avain Avainehdokas (candidate key) Yhdestä tai useammasta kentästä koostuvaa kokonaisuus, joka identifioi yksikäsitteisesti kunkin taulun riveistä Perusavain (primary key) Yksi avainehdokkaista valitaan taulun perusavaimeksi (pääavaimeksi) Perusavaimeksi ei kannata valita kenttää, jonka arvo tulee muuttumaan Tietokannat 4 7
Vierasavain, viiteavain (foreign key) Attribuutti tai attribuuttiyhdistelmä (sarakenimien yhdistelmä), jonka avulla voidaan osoittaa jokin tietokannan relaation yksittäinen monikko (rivi) käyttäen tämän perusavainta Viiteavaimen arvot viittaavat johonkin saman tai toisen taulun perusavainten arvoihin Vaihtoehtoinen avain, toissijainen avain (alternate key, secondary key) Avainehdokas, jota ei käytetä perusavaimena. Perusavaimen lisäksi taululle määritelty tai määriteltävissä oleva toissijainen avain (SQL:ssä unique-määre). Tietokannat 5 8