Informaatioteknologian instituutti IIZO3020 Tietokantojen perusteet Tietokantojen suunnittelu - suunnitteluputki käsiteanalyysistä toteutukseen S2008
S2008 2 Tietokantojen perusteissa osattava Käsiteanalyysin ja käsitemallinnuksen perusidea: Käsitteiden tunnistaminen Yhteyksien muodostaminen Tietojen eli ominaisuuksien lisääminen Moni-moneen-yhteyksien purkaminen Käsitemallin piirtäminen Tietokannan määrittely: Käsitteistä tulee tauluja Tiedoista sarakenimet tauluun Yhteyksien luominen perus- ja viiteavaimien avulla
S2008 3 Suunnitteluputki Käsitemalli Käyttäjien näkemykset Näytöt, raportit Käsiteanalyysi Tarveanalyysi Normalisointitarkistus Käsitemalli, täydennetty Perusavain Tieto1 Tieto2 Perusavain Tieto1 Tieto2 3. normaalimuodossa olevat käsitteet Tietokannan fyysinen suunnittelu Relaatiokanta Suorituskyvyn viritys
Tietokantaprojektin vaiheet: inkrementaalinen ja iteratiivinen lähestymistapa Määrittely Suunnittelu v a i h e e t Toteutus (ml. prototyypit/inkrementit) Käyttöliittymä Sovellus Tietokanta Testaus Käyttöönotto Ylläpito S2008 4 t
S2008 5 Tietokannan elinkaari Tietokantojen (TK) perusteet SQL TK-ohjelmointi TK-suunnittelu TK-käsittely Käsite-ja tarveanalyysi (Conceptual and logical design) Ohjelmistosuunnittelu DBMSympäristön suunn Normalisointi Tietoturva Varmistukset -suunn. Fyysinen suunn (Physical) Kannan toteutus Tietojenkeruu Suunn+testaus Mittaus, säädöt, muutokset Kuormitustesti Tuotantotesti Tietoturva Varmistukset Arkkitehtuurit Infra-suunn DBA Kehitys Tuotanto - OLTP - DW Helia / Martti Laiho; täydentänyt JAMK / Jouni Huotari
S2008 6 Käsitemalli on kuvaus tietokannan toteutusta varten Käsitemalli Tietokannan taulut
S2008 7 Käsitemalli Reaalimaailma Kohdealue Tietokanta Kohdealueen valinnasta käsitemallin kautta toteutettavaan tietokantaan
S2008 8 Systeemimetodologian malli
S2008 9 Termejä Käsite = kohde (Entity) = yksilö- tai oliotyyppi ~ luokka johdetaan yksittäisistä olioista (esiintymät, ilmentymät, instanssit) Käsiteanalyysi = kohdeanalyysi Käsitemalli (ER-malli, tietomalli) Ks. Tietoanalyysi (Soini) ER-kaavio ~ luokkakaavio: graafinen esitys Yhteys = riippuvuus = assosiaatio = suhde (Relationship) Ominaisuus = tieto = attribuutti (Attribute) Lukumääräsuhde = kardinaliteetti Notaatio = kuvaustekniikka
S2008 10 Käsiteanalyysi Käsiteanalyysi on tietokantoihin johtavan suunnitteluprosessin ensimmäisiä vaiheita Selvitetään, mitkä ovat tietokantaan talletettavat tiedot Aloitetaan karkealla tasolla; toisaalta yksittäisten olioiden tunnistaminen auttaa käsitteiden löytymistä Tuloksena on käsitemalli Mitkä ovat tietokantaan talletettavat tiedot ja niiden väliset riippuvuudet tietyllä karkeustasolla Tietokannan piirustukset Yhteinen näkemys (tai sopimus) kohdealueesta
S2008 11 Käsiteanalyysistä Selventää kohdealueen käsitteistöä yhteinen kieli kohdealueen sanakirja On täysin riippumaton tulevasta teknisestä toteutuksesta ja tietokannan hallintajärjestelmistä Kuvittele, että käsitemalli toimii äärettömän tehokkaassa koneessa ei suorituskykypohdintoja vielä kaikki tiedot esiintyvät vain kertaalleen - ei toistoa Käsiteanalyysiä ei kannata jatkaa liian pitkään tee välillä muita systeemityön alueita toteuta prototyyppi ja paranna käsitemallia
S2008 12 Käsitteen tunnistaminen Osoitettavissa oleva reaalimaailman objekti, kuten työntekijä, tuote, asiakas tai organisaatioyksikkö Abstrakti tai kuvitteellinen asia, kuten tulosyksikkö, vakuutuskorvaus tai budjettikuukausi Pysyvän luontoinen, kuten asiakas, tuote tai tapahtumatyyppinen, kuten tilausrivi, tilitapahtuma Käsite ilmaisee jotain asiaa, josta haluamme tallettaa tietoa tulevaa käyttöä varten Käsite on lauseessa substantiivi Asiakas tekee tilauksia
Tehtävä 1: käsitteiden tunnistaminen Tee lista opinnäytetöiden hallintaan liittyvistä käsitteistä (nk. käsite-ehdokkaiden kirjaus) Voit käyttää joko kynää ja paperia tai listata käsitteet tietokoneella Tee lista nopeasti miettimättä aluksi kovin tarkkaan mikä olisi paras nimitys eri käsitteille Lopuksi voit hieman ryhmitellä käsitteitä (esim. mind-map) ja miettiä oliko kirjaamasi käsite paras mahdollinen vaihtoehto Ratkaisuehdotus toisessa moduulissa (yhtä ainutta oikeata vastausta ei ole olemassa) Näistä käsite-ehdokkaista mietitään, mitkä käsitteet ovat yläkäsitteitä ja mitkä kuuluvat yläkäsitteen alle S2008 13
Käsitemallinnus
S2008 15 Esimerkkejä kuvaustekniikoista eli notaatioista Käsite ASIAKAS ASIAKAS ASIAKAS Yhteys eli riippuvuus ASIAKAS 1:1 tekee ASIAKAS ASIAKAS tekee 0:N TILAUS TILAUS TILAUS
Yhteys eli riippuvuus Riippuvuus ilmaisee yhteyttä tai suhdetta käsitteiden välillä Yhteyttä voi kuvata verbillä Isällä on monta lasta Asiakas tekee monta tilausta Myyjä myy monta tuotetta Tilin avaa yksi henkilö Muista lukea lause molempiin suuntiin ja kysyä (toimeksiantajalta) esim.: Voiko lapsella olla monta isää? Voiko yhdessä tilauksessa olla monta asiakasta Voiko samaa tuotetta myydä moni myyjä? Voiko yksi henkilö avata monta tiliä Mieti, mihin tarkoitukseen tietokanta tulee Tee myös päätös: halutaanko historiatietoa tallentaa (esim. tuotteen myyntihistoria) S2008 16
S2008 17 Yhteyksien merkintätapoja Yhden suhde moneen -yhteys, 1:M, voidaan ilmaista lukuisilla eri tavoilla riippuen käytettävästä notaatiosta, esim.
S2008 18 2 vaihtoehtoista suositusta yhteyksien kuvaamiseksi harakanvarvasnotaatio UML-notaatio yksi-yhteen yksi-moneen moni-moneen * * * crow s feet
S2008 19 Käsitemalli voidaan johtaa esiintymistä, esim. pankkitilit Esiintymiä: Pekka Joki 203040-43567 Pirkko Joki 203050-77564 Käsitemalli: HENKILÖ TILI
S2008 20 Mallinnustehtävä 2 a) Mallinna töidenhallintaan liittyvien käsitteiden ASIAKAS, TEKIJÄ ja TYÖ väliset yhteydet
S2008 21 Käsitemalli, versio 0.1 ASIAKAS * TEKIJÄ * * antaa toimeksiannoksi TYÖ *
S2008 22 Käsitemalli, versio 0.2 ASIAKAS AsiakasID AsiakasNimi Yhteyshenkilö AsiakasPuhelin ArvioTyöstä MuutTiedot * antaa toimeksiannoksi * TYÖ TyöID TyöAihe Työluokitus TyöAloitettava (pvm) TyönOltavaValmis (pvm) Budjetti LiiteDokumentti MuutTiedot TEKIJÄ TekijäID TekijäNimi TekijäPuhelin * *
S2008 23 Tiedot eli ominaisuudet Käsitteisiin liittyy tietoja eli ominaisuuksia (attribute) Käsitteellä on oltava yksilöivä tunniste eli perusavain (primary key, PK) pakollinen, yksilöivä tieto voi koostua useasta tiedosta voi olla luonnollinen tai ns. surrogaatti (johdettu) ei saa olla tyhjä; moniosaisen perusavaimen kohdalla edes osittain Voidaan merkitä esim. alleviivaamalla tai lihavoimalla Joukko tavallisia tietoja (non-key attributes) Viiteavaimet (foreign key, FK) voi olla osa perusavainta voidaan merkitä esim. laittamalla kirjaimet FK tai kursivoimalla Tiedot kuvaavat käsitettä, johon ne liittyvät
S2008 24 Esimerkkejä ASIAKAS asiakastunnus asiakas_nimi puhelinnumero asiakasluokka perustamispvm ASIAKAS asiakastunnus asiakas_nimi puhelinnumero asiakasluokka perustamispvm ASIAKASRYHMA Perusavain Muut tiedot Viiteavain ASIAKAS as_tunnus as_nimi as_osoite ryhmatunnus (FK) ryhmatunnus asryhmannimi
S2008 25 Mallinnustehtävä 2 (jatkuu) b) Mitä ominaisuuksia liittyy mallinnustehtävässä 2 a tunnistettuihin käsitteisiin? Kirjaa ne käsitteiden viereen.
S2008 26 Tarkempaa käsitemallinnusta Ehdollisuus; riippumattomat ja riippuvat käsitteet Moni-moneen-yhteys ja sen purkaminen Yksi-yhteen-yhteys Esimerkkejä Yhteys itseensä; hierarkkiset rakenteet Käsitteiden yhdistäminen
S2008 27 Yhteyksien pakollisuus / ehdollisuus OSASTO osasto_id osastonimi OSASTO osasto_id osastonimi voi kuulua HENKILO henkilotunnus etunimi Sukunimi osasto_id Henkilö voi kuulua osastoon (ei siis ole pakko kuulua) 0..1 0..* on kuuluttava HENKILO henkilotunnus etunimi Sukunimi osasto_id Henkilö kuuluu osastoon (ei voi tallettaa henkilöä antamatta samalla osastoa) 1..1 0..* 0:1 0:M
S2008 28 Käsitetyypit 1) Moni-moneen-yhteydet => assosiatiiviset käsitteet Esimerkiksi projektin ja henkilön välillä on moni-moneen-yhteys Tämän yhteyden nimi on esim. osallistuu Tästä voidaan johtaa assosiatiivinen käsite osallistuminen HENKILO PROJEKTI ptun pnimi osallistuu HENKILO htun etunimi sukunimi osoite PROJEKTI ptun pnimi htun etunimi sukunimi osoite OSALLISTUMINEN OsallistumisID ptun htun Tunnit KirjausPvm
S2008 29 Käsitetyypit (jatkoa) 2) Riippumattomat käsitteet eli ydinkäsitteet (Independent entities) Käsitteen perusavaimessa ei tarvita muiden käsitteiden tietoja Käsite ei ole riippuvainen muista käsitteistä (voi tallettaa tietoja muista välittämättä) 3) Riippuvat käsitteet eli karakteristiset käsitteet PROJEKTI ptun pnimi HENKILO htun etunimi sukunimi osoite Käsitteen moniosaisessa perusavaimessa on mukana isä-käsitteen perusavain Käsite ei voi olla olemassa, jos ei isää ole (ei voida tallettaa projektitunteja jollei projektia ole olemassa) OSALLISTUMINEN ptun htun Tunnit KirjausPvm
S2008 30 Suhteista Monta riippuvuutta samojen käsitteiden välillä: Asiakas omistaa käyttää => Jos on monta riippuvuutta, nimeä riippuvuudet Tili Moni-moneen-yhteys: muista purkaa, jos ollaan tekemässä relaatiotietokantaa! Asiakas Tili ASIAKAS TILI TILITAPAHTUMA Lapsen nimivaihtoehtoja: ASIAKAS_TILI Asiakkaan tilit
S2008 31 Mallinnustehtävä 2 c) Miten purat M:N-yhteydet ASIAKAS ja TYÖ => tehtiin tunnilla TYÖ ja TEKIJÄ => kotitehtävksi Kun M:N-yhteydet puretaan ja ominaisuudet lisätään, syntyy nk. kohdemalli Tee omasta harjoitustyöaiheestasi vaatimusmäärittely ja 1. käsitemalli
S2008 32 Esimerkki yksi-yhteen-yhteydestä MAA PÄÄ- KAUPUNKI
S2008 33 Esimerkki: osa tilaustenkäsittelystä UML:n luokkakaaviona Luokan nimi Omainaisuudet Minkälaisiin tilanteisiin oliopohjainen suunnittelu soveltuu? Metodit (toiminnot) Onko olemassa hybridiratkaisuja?
S2008 34 Esimerkki 4: Martinin ERD notaatio (kopio Vision helpistä)
S2008 35 4 mahdollista vaihtoehtoa OSASTO osasto_id osastonimi OSASTO osasto_id osastonimi OSASTO osasto_id osastonimi OSASTO osasto_id osastonimi HENKILO henkilotunnus etunimi sukunimi HENKILO henkilotunnus etunimi sukunimi HENKILO henkilotunnus etunimi sukunimi HENKILO henkilotunnus etunimi sukunimi
S2008 36 Hierarkiat ja BOM-rakenne kuuluu yhtiöön omistaa yhtiöitä YRITYS Yritystunnus Emon_yritystunnus (FK) Esimerkki hierarkiasta: yritys voi omistaa monta muuta yritystä; yksi yritys voi kuulua yhteen emoyhtiöön. YRITYS yritystun kauprekno nimi osoite puhelin tase liikevaihto Esimerkki BOM-rakenteesta (bill-of.material): Yritys voi omistaa monta muuta yritystä; yksi yritys voi kuulua moneen emoyhtiöön. YRITYS yritystun kauprekno nimi osoite puhelin tase liikevaihto kuuluu yhtiöön omistaa yhtiöitä YRITYSSUHDE yritystun1 yritystun2 omistuspros
S2008 37 Tietojen toistamista? ASIAKAS astun osoite Saaako asiakkaan osoitteen kopioida tilaukseen? Eikö ole kiellettyä toistamista? TILAUS tilnro toimitusosoite TILAUSRIVI tilnro rivinro hinta TUOTE tkoodi hinta Entä hinta?
S2008 38 Käsitteiden yhdistäminen Ennen: ASIAKAS YHTEISTYOKUMPPANI TOIMITTAJA Nyt: OSAPUOLI Ennen: 1_neljannes 2_neljannes 3_neljannes 4_neljannes tulos tase tulos tase tulos tase tulos tase Nyt: Neljannes neljannes_tunnus tulos tase
S2008 39 Määrittelyistä Yrityksemme kanssa liikesuhteessa oleva luonnollinen henkilö, yhteisö tai yritys. ESIM. Oy Kala Ab, Joutsenon kunta, Pekka Jokinen, Shakkipojat ry Anna käsitteille määritelmät + kirjoita esimerkkejä
S2008 40 Tähän päättyy Tietokantojen perusteet opintojakson suunnitteluosa Loput kalvot on tarkoitettu Tietokantojen suunnittelu opintojakson opiskelijoille ja niille, jotka haluavat tietää enemmän tietokantojen suunnittelusta ja siitä, kuinka käsitemallista luodaan varsinainen tietokanta (käsitteistä tulee tauluja )
S2008 41 Suunnitteluputki Käyttäjien näkemykset Näytöt, ikkunat Raportit Käsiteanalyysi Tarveanalyysi Normalisointitark. Tietokannan fyysinen suunnittelu Suorituskyvyn viritys Käsitemalli Käsitemalli, täydennetty Perusavain Tieto1 Tieto2 Perusavain Tieto1 Tieto2 3. normaalimuodossa olevat käsitteet Relaatiokanta
S2008 42 Tarveanalyysin tavoitteet Tarkistaa, että kaikki tietotarpeet toteutuvat käsitemallin pohjalta: mitä tietoja mistäkin käsitteistä Täydentää käsitemallia lisäämällä uusia tietoalkioita ja mahdollisesti myös uusia käsitteitä ja yhteyksiä Selvittää mitä hakuja ja missä järjestyksessä tieto-, käyttäjä- ja tapahtumamäärät (kuinka usein) tietoja haetaan ja päivitetään
S2008 43 Tietotarveanalyysi Käsitemalli Tietotarpeet Näytöt Ikkunat Eräajot Listat Raportit Tietotarpeita ovat suunnitellut sovelluksen ikkunat tai näytöt, raportit, eräajot ja kaikki muutkin ohjelmat, jotka tulevat käsittelemään tietokantaa. Pyydä toimeksiantajalta raportit ym. tiedostoina (esim. Word-asiakirjoina)
S2008 44 Analysoi tietotarpeet ja tee tarvittaessa muutokset käsitemalliin Näytöt Lomakkeet Käyttöliittymä Eräajot Listat Raportit Kortistot
S2008 45 Tarveanalyysi käytännössä 1. Ota käsittelyyn tietotarve, esimerkiksi jokin sovelluksen ikkuna. 2. Ota myös tämän hetkinen käsitemalli esille. 3. Tarkista, löytyvätkö kaikki ko. ikkunassa tarvittavat yksittäiset tiedot käsitemallista (useimmiten käsitemallin käsitteistä puuttuu vielä runsaasti tietoja käsitemallihan oli vielä karkealla tasolla). 4. Lisää puuttuvat tiedot käsitteiden yhteyteen. Joskus myös kokonainen käsite tai yhteys puuttuu ja ne on myös lisättävä käsitemalliin. 5. Ota seuraava tietotarve ja tee samat asiat (kohdat 2-4). 6. Näin jatketaan, kunnes kaikki tietotarpeet on läpikäyty
S2008 46 Esimerkkiraportti ja tehtävä Täydennä Demox Oy:n käsitemallia kuvan raportista löytämilläsi uusilla tiedoilla
S2008 47 Suunnitteluputki Käyttäjien näkemykset Näytöt, ikkunat Raportit Käsiteanalyysi Tarveanalyysi Normalisointitark. Tietokannan määrittely Suorituskyvyn viritys Käsitemalli Käsitemalli, täydennetty Perusavain Tieto1 Tieto2 Perusavain Tieto1 Tieto2 3. normaalimuodossa olevat käsitteet Relaatiokanta
S2008 48 Normalisoinnin tarkoitus Normalisointi (normalisation) on menetelmä, jonka avulla tietorakenteita voidaan jalostaa parempaan tallennusmuotoon Parempi tarkoittaa tässä yhteydessä rakennetta, jossa on tietojen toistaminen (redundanssi) minimoitu joka on tehokas päivitysten kannalta joka on helpompi pitää yhdenmukaisena, sillä tiedot tarvitsee päivittää vain yhteen paikkaan joka on muutosjoustava
S2008 49 Normalisointivaiheet 1. Normaalimuoto Erota toistuvat ryhmät ja moniarvoiset sarakkeet omaksi käsitteekseen 2. Normaalimuoto Jokaisen ei-avaintiedon tulee olla riippuvainen koko perusavaimesta 3. Normaalimuoto Poista sisäiset (ei-avaimeen kohdistuvat) riippuvuudet
S2008 50 1. Normaalimuoto HENKILÖ Htun Nimi Palkka Pvm_1 Palkka_1 Pvm_2 Palkka_2 1. Normaalimuoto : Poista toistuvat ryhmät ja moniarvoiset sarakkeet HENKILÖ PALKKAHISTORIA Htun Nimi Palkka Htun Pvm Palkka
S2008 51 Funktionaalinen riippuvuus A B Sarake B on funktionaalisesti riippuvainen A:sta, jos A:ta kohti on korkeintaan yksi B:n arvo kunakin ajanhetkenä. HENKILÖ ( Htun, Nimi, Osoite ) HENKILÖ ( Htun, Nimi, Osoite )?
S2008 52 2. Normaalimuoto TILAUS ToimNro Osanro Nimi Osoite Tilattu_kpl Mitä mieltä olet kenttien nimistä? Ymmärrätkö mitä ne tarkoittavat? 2. Normaalimuoto: Jos avain koostuu useasta sarakkeesta, on jokaisen muun sarakkeen oltava riippuvainen koko avaimesta. TOIMITTAJA ToimNro Nimi Osoite TILAUS ToimNro Osanro Tilattu_kpl Mitä jos näin ei tehdä? Ei voida tallettaa toimittajatietoja etukäteen Vanhoja tilauksia poistettaessa tietyn toimittajan tiedot voivat häipyä kokonaan Toimittajan osoitteen muutos tulee moneen paikkaan
3. Normaalimuoto TOIMITTAJA ToimNro Nimi Katuosoite Postinro Posti 122 Oy Fi Koekatu 3B 00530 Hki 3. Normaalimuoto: TOIMITTAJA Kaikkien sarakkeiden tulee olla riippuvia vain perusavaimesta. ToimNro Nimi Katuosoite Postinro 122 Oy Fi Koekatu 3B 00530 Mitä jos näin ei tehdä? POSTI Postinro 00530 Hki Postitoimipaikkoja ei voida tallettaa ennen toimittajan talletusta Postitoimipaikan nimen muutos tulee moneen paikkaan Postitoimip S2008 53
S2008 54 3NM ja Käsitteet Suunnitteluputkessa normalisoidaan käsitteitä Normalisointi voi tarvittaessa myöhemmin kohdistua tauluihin, tietueisiin jne. Käsitemallin normalisointi tarkistetaan käsite käsitteeltä Melko työlas operaatio, mutta vaivannäkö yleensä kannattaa Yhteenvetona (NM = normaalimuoto): kaikkien eiavaintietojen tulee olla funktionaalisesti riippuvia perusavaimesta (1. NM), koko perusavaimesta (2. NM) ja vain perusavaimesta (3. NM)
S2008 55 Tehtävä: normalisointi Tarkista tekemäsi käsitemalli (Demox Oy tai Formulaesimerkki) missä normaalimuodossa malli on? olisiko järkevää normalisoida mallia pitemmälle? mitä etuja tai haittoja pitkälle normalisoidusta ratkaisusta on? Vinkki: usein tehdään nk. ideaalimalli, jossa normalisointi on ulotettu kaikkiin tilanteisiin ja sen jälkeen tehdään perustellut rajaukset siitä, mikä tulee olemaan toteutettava ratkaisu (ts. palataan lähelle toista normaalimuotoa) Lisätehtävä: Tee kirjan (Hovi et. al. 2003) harjoitukset 9 ja 10 (sijaitsevat myös R5:ssä).
S2008 56 Suunnitteluputki Käyttäjien näkemykset Näytöt, ikkunat Raportit Käsiteanalyysi Tarveanalyysi Normalisointitark. Tietokannan määrittely Käsitemalli Käsitemalli, täydennetty Perusavain Tieto1 Tieto2 Perusavain Tieto1 Tieto2 3. normaalimuodossa olevat käsitteet Relaatiokanta Suorituskyvyn viritys
S2008 57 Käsitteistä tauluiksi Käsitteistä tulee taulu! OSASTO Osastotunnus Osaston_nimi Osastot Osastotunnus Osaston_nimi Käsitteen tiedot (ominaisuudet) sarakkeiksi (kentiksi, field) Käsitteen yksilöivä tieto taulun perusavaimeksi (primary key)
S2008 58 Riippuvuudet Isä-lapsisuhteesta (1:M) tulee viiteavain lapsitauluun OSASTO osastotun osastonimi jne. OSASTO osastotun osastonimi jne Käsitemallin yhden-suhde-moneen yhteys muunnetaan lapsi-taulun viiteavaimeksi (isätaulun perusavain) HENKILO htun sukunimi etunimi HENKILO htun sukunimi etunimi osastotun HUOM. jos viiteavain on jo lapsitaulussa perusavaimen osana, ei viiteavainta tietenkään enää tarvitse lisätä.
S2008 59 Sarakkeiden roolit Taulun sarake voi olla Perusavain Viiteavain Toissijainen hakuavain tarvitaan nopea haku edellyttää usein indeksin Tavallinen tieto Sarake voi kuulua moniosaiseen perusavaimeen ja olla samalla viiteavain (ks. seuraava kuva)
S2008 60 PROJEKTI ptun pnimi HENKILO htun etunimi sukunimi osoite Perusavain OSALLISTUMINEN ptun htun tunnit Viiteavain Projektiin Viiteavain Henkilöön Perusavain voi muodostua viiteavaimista
S2008 61 Useita yhteyksiä: useita viiteavaimia ASIAKAS tilaa vastaanottaa maksaa KULJETUS- TILAUS kolme viiteavainta tilausnro pvm... as tun_tilaaja as tun_maksaja astun_vast_ottaja
S2008 62 Perusavain-resepti Määrittele perusavain pakolliseksi CREATE TABLE lasku (laskunro integer NOT NULL,. Määrittele perusavain SQL:lla, PRIMARY KEY (htun, ptun),. Joissakin tuotteissa on vielä perustettava UNIQUEindeksi esim. DB2, SQLBase Oracle ja SQL Server perustavat automaattisesti perusavainindeksin CREATE UNIQUE INDEX prhe_ind ON PRHE(ptun, htun)
S2008 63 Viiteavain-resepti Määrittele viiteavaimet pakollisiksi (NOT NULL) vain, jos viiteavain ei saa puuttua Kuvan mukaan ei-pakollinen yhteys, Henkilö-taulussa: ostun CHAR (4), -- ei siis NOT NULL CONSTRAINT henkilo_os_fk FOREIGN KEY (ostun) REFERENCES Osasto(ostun)... Perusta viiteavaimille indeksi; yleensä ei UNIQUE parantaa liitosten tehokkuutta huomattavasti voi kuulua Osasto Henkilö ostun htun ostun (FK)
S2008 64 Suunnitteluputki Käyttäjien näkemykset Näytöt, ikkunat Raportit Käsiteanalyysi Tarveanalyysi Normalisointitark. Tietokannan määrittely Käsitemalli Käsitemalli, täydennetty Perusavain Tieto1 Tieto2 Perusavain Tieto1 Tieto2 3. normaalimuodossa olevat käsitteet Relaatiokanta Suorituskyvyn viritys
S2008 65 Suorituskyvyn viritys Ennen kuin tietokanta otetaan tuotantokäyttöön, pitäisi sen suorituskyky testata todellisilla volyymeillä (mielellään jo protoiluvaiheessa) Useissa tietokantatuotteissa on erillinen performance analyzer, joka antaa suosituksia mm. indeksien perustamiseksi
S2008 66 Lisätietoja Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003, 2005) Hovi, Ari. SQL-opas, Docendo (2004) Connolly & Begg: Database Systems, Addison Wesley (2003) Soini, Tapani. Tietoanalyysi, Weilin&Göös (1984)