TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 4 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1
Relaatiotietokannan suunnitteluprosessin vaiheet Vaihe Tavoite Tehtävät Tuotokset Käsitteellinen mallintaminen Looginen mallintaminen Fyysinen mallintaminen Selvittää kohdealueen keskeiset käsitteet, niiden ominaisuudet ja väliset suhteet Esittää käsitemallin sisältö relaatiomallin mukaisesti Fyysinen tallennusratkaisu relaatiotietokantatuotteella Käsiteanalyysi Käsitekaavion suunnittelu Relaatiomallin normalisointi Relaatiokaavion suunnittelu Tietokannan toteutuksen suunnittelu Käsitekaavio Relaatiokaavio Eheysmäärittelyt SQL-lauseet tietokannan luomiseksi Pasi Ranne Metropolia Ammattikorkeakoulu 2
Tietokannan suunnittelu: Looginen mallintaminen
Looginen mallintaminen Vaihe Tavoite Tehtävät Tuotokset Käsitteellinen mallintaminen Looginen mallintaminen Fyysinen mallintaminen Selvittää kohdealueen keskeiset käsitteet, niiden ominaisuudet ja väliset suhteet Esittää käsitemallin sisältö relaatiomallin mukaisesti Fyysinen tallennusratkaisu relaatiotietokantatuotteella Käsiteanalyysi Käsitekaavion suunnittelu Relaatiomallin normalisointi Relaatiokaavion suunnittelu Tietokannan toteutuksen suunnittelu Käsitekaavio Relaatiokaavio Eheysmäärittelyt SQL-lauseet tietokannan luomiseksi Pasi Ranne Metropolia Ammattikorkeakoulu 4
Looginen mallintaminen Tehdään käsitemallin pohjalta relaatiokaavio Käsitteistä tulee taulu Käsitteen attribuutit (ominaisuudet) sarakkeiden nimeksi Käsitteen yksilöivä attribuutti taulun pääavaimeksi (primary key) Jos ei luonnollista attribuuttia, luodaan keinotekoinen tunniste(numero) Yhteydet luodaan viiteavaimien avulla Pasi Ranne Metropolia Ammattikorkeakoulu 5
Yhteydet 1 : M suhteesta tehdään viiteavain suhteen M-puolen tauluun Pasi Ranne Metropolia Ammattikorkeakoulu 6
Viiteavaimen määrittely Määrittele viiteavaimen arvo pakollisiksi eli älä salli tyhjää arvoa avainkenttään (NOT NULL), jos yhteys on pakollinen Salli tyhjä arvo, jos yhteys ei ole pakollinen Indeksoi viiteavainsarakkeet, koska se parantaa taulujen liitosten tehokkuutta huomattavasti Pasi Ranne Metropolia Ammattikorkeakoulu 7
Viiteavaimista koottu pääavain Pää/perusavain voi muodostua kahdesta tai useammasta viiteavaimesta Huotari Pasi Ranne Metropolia Ammattikorkeakoulu 8
Tietokannan suunnittelu: Normalisointi
Relaatiomallin normalisoinnin tavoitteet Normalisointi on menetelmä, jonka avulla relaatiomallin rakenne voidaan (mahdollisesti) saattaa parempaan muotoon tietojen toistaminen on minimoitu tehokas päivitysten kannalta yksinkertainen päivitysten kannalta (tieto vain yhdessä paikassa) rakenne on joustavasti muutettavissa Normalisointi perustuu nk. normaalimuotoihin Normaalimuodot ovat asteittain tiukkenevia ehtoja, jotka relaatioiden on täytettävä (kukin normaalimuoto rakentuu edeltäjänsä päälle) Normaalimuotoja tunnetaan kaikkiaan kuusi Kolmas normaalimuoto on usein riittävä taso Pasi Ranne Metropolia Ammattikorkeakoulu 10
Attribuuttien riippuvuus Ylempien normaalimuotojen kohdalla joudutaan tarkastelemaan attribuuttien riippuvuutta Funktionaalinen riippuvuus Attribuutti B on funktionaalisesti riippuva attribuutti A:sta, jos A:n arvo määrää yksikäsitteisesti B:n arvon Toisin sanoen; jokaista A:n arvoa vastaa kullakin hetkellä korkeintaan yksi B:n arvo Merkitään: A -> B esim. sotu -> henkilön nimi Moniarvoinen riippuvuus Attribuutin A arvoon voi liittyä useita attribuutin B arvoja Merkitään: A ->> B esim. projektiid ->> työntekijäid Jos A -> B, niin ei välttämättä B -> A Riippuvuus voi olla toiseen suuntaan funktionaalinen ja toiseen suuntaan moniarvoinen esim. sotu<<-> henkilön nimi Pasi Ranne Metropolia Ammattikorkeakoulu 11
Normalisoinnin vaiheet lyhyesti 1. Ensimmäinen normaalimuoto Erota toistuvat ryhmät ja moniarvoiset attribuutit omiksi käsitteikseen 2. Toinen normaalimuoto Jokaisen ei-avaintiedon tulee olla riippuvainen koko perusavaimesta 3. Kolmas normaalimuoto Poista sisäiset (ei-avaimeen kohdistuvat) riippuvuudet Pasi Ranne Metropolia Ammattikorkeakoulu 12
Ensimmäinen normaalimuoto (1NF, 1NM) Relaatio on ensimmäisessä normaali-muodossa, jos kaikki arvot ovat atomisia l. jakamattomia Tämä tarkoittaa että relaatiossa ei saa olla moniarvoisia attribuutteja (attribuutin on oltava jakamaton kokonaisuus) toistuvia attribuutteja (osoite1, osoite2, ) Moniarvoiset ja toistuvat attribuutit tulee purkaa relaatioiksi viiteavainten avulla. Pasi Ranne Metropolia Ammattikorkeakoulu 13
Ensimmäinen normaalimuoto - esimerkki Kuljetus1 (k_id, lahto, perilla, matk1, matk2, matk3, matk4) Kuljetus1 k_id lahto perilla matk1 matk2 matk3 matk4 1 Lahnus, 20.3.2011 8:00 Hki, 20.3.2011 8:45 Lea Kai 2 Hki, 20.3.2011 16:30 Lahnus, 20.3.2011 17:30 Kim Lea Kai Kuljetus2 (k_id, lahto, perilla, matkustajat) Kuljetus2 k_id lahto perilla matkustajat 1 Lahnus, 20.3.2011 8:00 Hki, 20.3.2011 8:45 Kai, Lea 2 Hki, 20.3.2011 16:30 Lahnus, 20.3.2011 17:30 Kai, Lea, Kim Esimerkki normalisoidusta ratkaisusta: Matkustaja (m_id, nimi, osoite, puhno) Ajo (k_id, lahtopaikka, lahtoaika, tulopaikka, tuloaika) Kuljetus (m_id, k_id) Pasi Ranne Metropolia Ammattikorkeakoulu 14
Toinen normaalimuoto (2NF) Ensimmäisessä normaalimuodossa oleva relaatio on toisessa normaalimuodossa, jos kaikki attribuutit ovat funktionaalisesti riippuvia koko perusavaimesta (huom. moniosaiset perusavaimet). Mikään perusavaimen osa ei saa määritellä attribuutin arvoa. Toista normaalimuotoa on tarpeen tutkia vain jos perusavain koostuu useammasta kuin yhdestä attribuutista. Pasi Ranne Metropolia Ammattikorkeakoulu 15
Toinen normaalimuoto - esimerkki Tilaus (asiakasnro, tuotenro, tuotenimi, maara, pvm, nimi, osoite) Onko 1. normaalimuodossa? nimi, osoite? Onko 2. normaalimuodossa? asiakasnro nimi, osoite tuotenro tuotenimi Normalisointi: Asiakas (asiakasnro, nimi, osoite) Tuote (tuotenro, tuotenimi) Tilaus (asiakasnro, tuotenro, maara, pvm) Jos ei normalisoida, niin Ei voi tallentaa asiakkaan tietoja etukäteen Vanhoja tilauksia poistettaessa asiakkaan tiedot voivat kadota Asiakkaan osoitteen muutos tallennettava moneen paikkaan Pasi Ranne Metropolia Ammattikorkeakoulu 16
Kolmas normaalimuoto (3NF) Toisessa normaalimuodossa oleva relaatio on kolmannessa normaalimuodossa, jos jokainen eiavainattribuutti on funktionaalisesti riippuva vain perusavaimesta (eikä mistään nk. tavallisista attribuuteista). Pasi Ranne Metropolia Ammattikorkeakoulu 17
Kolmas normaalimuoto - esimerkki Henkilo (htun, sukunimi, etunimi, lahiosoite, postinumero, postitoimipaikka) Onko toisessa normaalimuodossa? On. Onko kolmannessa normaalimuodossa? Ei, koska postinumero postitoimipaikka Pasi Ranne Metropolia Ammattikorkeakoulu 18
Kolmas normaalimuoto - esimerkki Henkilo (htun, sukunimi, etunimi, lahiosoite, postinumero, postitoimipaikka) Normalisointi kolmanteen normaalimuotoon: Henkilo (htun, sukunimi, etunimi, lahiosoite, postinumero) Posti (postinumero, postitoimipaikka) Jos ei normalisoida Postitoimipaikkoja ei voi tallentaa ennen henkilön tallentamista Postitoimipaikan nimen muutos tulee moneen paikkaan Pasi Ranne Metropolia Ammattikorkeakoulu 19
Normalisointi - yhteenveto Suunnittelussa normalisoidaan käsitteitä Käsitemallin normalisointi tarkistetaan käsite käsitteeltä Melko työläs operaatio, mutta vaivannäkö yleensä kannattaa Käytännössä 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) Yhteenvetona: kaikkien ei-avaintietojen tulee olla funktionaalisesti riippuvia perusavaimesta (1NF), koko perusavaimesta (2NF) ja vain perusavaimesta (3NF) Pasi Ranne Metropolia Ammattikorkeakoulu 20
Tietokoneavusteinen suunnittelu CASE (Computer Aided Software Engineering, tietokoneavusteinen ohjelmistotuotanto) CASE-työkalut ovat ohjelmia, joiden avulla voi organisoida ja visualisoida ohjelmistotuotannon prosesseja Tuotteita - perusmallinnus ja kaavioiden piirto PowerDesigner, MS Visio, ER/studio, MagicDraw, ArgoUML, Poseidon, DBDesigner, Kehittyneitä mallinnus- ja ohjelmointityökaluja Prosa: http://www.insoft.fi/fin/index.htm MetaEdit: http://www.metacase.com Rational Rose: http://www.rational.com/ MySQL Workbench: http://dev.mysql.com/downloads/workbench/5.0.html Pasi Ranne Metropolia Ammattikorkeakoulu 21