Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, k 2006 relaatioalgebra. Harri Laine 1

Samankaltaiset tiedostot
Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2004 Tietokannan suunnittelusta. Harri Laine 1

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokannan suunnittelusta Harri Laine 1

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (17) Outi Virkki Tiedonhallinta

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokannan suunnittelu

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

HELIA 1 (17) Outi Virkki Tiedonhallinta

Relaatiomalli ja -tietokanta

Nimi: Henkilötunnus: {id} {+id}

CSE-A1200 Tietokannat

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

HELIA TIKO-05 1 (20) ICT03D Tieto ja tiedon varastointi O.Virkki

3. Käsiteanalyysi ja käsitekaavio

Relaatioalgebra. Kyselyt:

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

HELIA 1 (20) Outi Virkki Tiedonhallinta

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Näkökulmat tietoon. Abstraktiotasot tiedon käsittelyssä

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Helsingin yliopisto/tktl Tietokantojen perusteet, k 2003 Relaatiomallin peruskäsitteet Harri Laine 1. Tietomallit. Näkökulmat tietoon

2. Käsiteanalyysi ja relaatiomalli

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HARJOITUS 2. Kasvattamot ja mittaukset

Normalisointi. Jouni Huotari & Ari Hovi. kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003, 2005) luku 5

Tietokannat II -kurssin harjoitustyö

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

HELIA 1 (11) Outi Virkki Tiedonhallinta

Yhdiste, leikkaus, erotus ym.

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

millainen on se kohde, jota tiedoilla pitäisi kuvata asiat, joita pitäisi esittää Mitä tietoelementtien arvot tarkoittavat

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 ER-mallin peruskäsitteet.

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra Harri Laine 1. Relaatioalgebra

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

SELECT-lauseen perusmuoto

Talousmatematiikan perusteet: Luento 11. Lineaarikuvaus Matriisin aste Käänteismatriisi

HELIA 1 (12) Outi Virkki Tiedonhallinta

UML - unified modeling language

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

HAAGA-HELIA Heti-09 1 (27) ICT05 Tiedonhallinta ja Tietokannat O.Virkki

Haaga-Helia / TIKO-05 1 (12) Tietokannan suunnittelu ja Toteutus Outi Virkki

Kyselyn yleisrakenne:

PALKKA-AINEISTON SIIRTOTIEDOSTO

TURVAPUHELINPALVELU TILAUSLOMAKKEEN TÄYTTÖOHJEET

HELIA 1 (14) Outi Virkki Tiedonhallinta

YHTEYSSUHDE (assosiation)

Tietokantakurssit / TKTL

Opintopiiritehtävä 3: Verkkohuutokauppa

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto.

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki Relaatiomalli

Vertti. Verituotteiden tilaus. Versio 2.1

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

Tietokannat II -kurssin harjoitustyö

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 29

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

Liitokset - haut useaan tauluun

1. Tarkastellaan seuraavaa kaaviota

Johdatus logiikkaan I Harjoitus 4 Vihjeet

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

Luento 3 Tietokannan tietosisällön suunnittelu

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Talousmatematiikan perusteet: Luento 10. Lineaarikuvaus Matriisin aste Determinantti Käänteismatriisi

Transkriptio:

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia toistuva tieto vie turhaa tilaa ylläpito muodostuu hankalaksi kaikki kopiot päivitettävä ylläpito-operaatioilla voi olla odottamattomia sivuvaikutuksia. Toisaalta toistosta on etuakin tiedon haku saattaa nopeutua Esimerkki taulusta, joka ei käyttäydy hyvin: EMP_DEPT: E_no E_name E_bdate D_no D_name D_location M.Seppä.3.59 3 Myynti Helsinki 2 D.Leivo 4.0.40 3 Myynti Helsinki 3 K.Koivu 30..66 4 Hallinto Lahti 4 B.Oja 2.5.65 4 Hallinto Lahti 5 O.Itä 0.2.55 6 Tuotanto Helsinki Avain: E_no Jos O.Itä poistetaan, häviää tieto tuotantoosastosta Toistettava jokaisen osaston tt:n kohdalla Jos Hallinto muuttaa Espooseen om muutettava useita rivejä 2 Ei tarpeetonta toistoa E_no E_name E_bdate D_no M.Seppä.3.59 3 2 D.Leivo 4.0.40 3 3 K.Koivu 30..66 4 4 B.Oja 2.5.65 4 5 O.Itä 0.2.55 6 D_no D_name D_location 3 Myynti Helsinki 4 Hallinto Lahti 6 Tuotanto Helsinki Tietokannan suunnittelun vaiheita ovat tietosisällön kartoitus käsiteanalyysi kartoittamalla attribuutit ja niiden väliset riippuvuudet loogisten rakenteiden suunnittelu ja teknisten rakenteiden suunnittelu. Parempi ratkaisu Loogisen rakenteen suunnittelun tavoite on sijoittaa yhteenkuuluvat tiedot samaan taulu 3 4 Muunnos käsitekaaviosta relaatiokaavioon Käsiteanalyysi tuottaa tietosisällön määrittelyn käsitekaavion muodossa Käsitekaavio kuvaa tällöin järjestelmän pysyväisluonteisia (persistent) tietoja - tietojen on säilyttävä ohjelman suorituskertojen välillä Muunnos käsitekaaviosta relaatiokaavioon Lähtökohtana normalisoitu käsitekaavio = tiettyjä sääntöjä noudattava kaavio Yhteydet näkyviä, ei attribuuteiksi piilotettuja Kukin asia esitetään vain kertaalleen Ei johdettavissa / pääteltävissä olevaa tietoja Yhteydet määritelty oikeiden osapuolten välillä 5 6 Harri Laine

Yhteydet piilotettu Olioiden välinen kytkentä esitetään aina yhteytenä, sitä ei piiloteta ominaisuudeksi (attribuutiksi) Yhteyden piilotus Olioiden välinen kytkentä esitetään aina yhteytenä, sitä ei piiloteta ominaisuudeksi (attribuutiksi) Opettajan_ Opettaja Nimi Opettajan_ Opettaja Nimi Kytkentä on piilotettuna kurssin attribuuttiin opettajan_ opetus 7 8 Asiat esitetään vain kertaalleen Samaa asiaa ei pidä esittää sekä yhteytenä että ominaisuutena Tilaus Tilaajan_ tilaaja Asiakas Nimi Ei esitetä johdettavissa olevaa tietoa tulisi selvittää mitkä tiedot ovat perustietoja ja mitkä voidaan päätellä (laskea) muiden tietojen perusteella attribuutin tai yhteyden olemassaolo voi olla pääteltävissä ilmoittautunut ilmoittautuneiden_lkm Opiskelija. laskettavissa 9 0 Ei esitetä johdettavissa olevaa tietoa kurssilla..n..n Harjoitusryhmä..n Opiskelija ryhmässä lla-yhteys on pääteltävissä, jos jokaisen kurssin osanottajan on oltava jossain ryhmässä Muunnoksen perussäännöt: Kutakin tietokohdetta (ä) vastaa samannen taulu Kullakin kohteen yksiisella attribuutilla on samannen vastinsarake kohdetta vastaavassa taulussa Kohteen tunnistavia attribuutteja vastaavat sarakkeet kuuluvat kohdetta vastaavan taulun avaimeen 2 Harri Laine 2

Luokkakaavio: Vippi oy Relaatiorakenteen ydin - jokaista luokkaa vastaa taulu {id} {id} kuitti{id}..* pvm {id}..* arvioija hyväksyjä {id} {id}..* {+id} {id}..* 3 kuitti pvm 4 Kokoelma-attribuutit Kutakin kokoelma-attribuuttia (moniista) vastaa taulu, jonka sarakkeina ovat viiteavain kokoelmasen attribuutin sisältävää kohdetta vastaavaan tauluun, sarake attribuutin a varten. Taulun kaikki sarakkeet kuuluvat avaimeen Kokoelma-attribuutit Vippi oy:n esimerkissä ei ole kokoelmaattribuutteja esim: (id) oppi [ ] moniinen viiteavain oppi oppi 5 6 Monen suhde moneen yhteydet Monen suhde moneen yhteydet Kutakin monen suhde moneen yhteyttä vastaa taulu Taulun = yhteyden Taulun sarakkeina ovat yhteyden osapuoliin osoittavat viiteavaimet. Taulun kaikki sarakkeet kuuluvat taulun pääavaimeen monen suhde moneen yhteys on yhteys, jossa kummankin osapuolen maksimiosallistumisrajoite on suurempi kuin. (id) kuitti (id)..* arvioija 7 8 Harri Laine 3

Monen suhde moneen yhteydet Yhden suhde moneen yhteydet kuitti arvioija kuitti _ pvm Vaihtoehto : Lisää yhteyskumppaniin osoittava viiteavain sitä osapuolta vastaavaan tauluun, jolla on korkeintaan yksi kumppani Jos kookoonpano-yhteydessä kokoonpanon osien tunnistamiseen tarvitaan tieto kokonaisuudesta, niin lisätty viiteavain kuuluu taulun avaimeen. Tällaisessa tilanteessa ei ole muita vaihtoehtoja. 9 20 Yhden suhde moneen yhteydet Yhden suhde moneen yhteydet Vaihtoehto 2: Toimi kuten monen suhde moneen yhteyksien kohdalla ja tee yhteyttä varten erillinen taulu Taulujen määrän minimoimiseksi vaihtoehtoa tulisi suosia, ellei siitä seuraa epäedullisia viittaussyklejä taulujen välille. (id) (id)..n kuitti (id) arvioija hyväksyjä..n pvm (id*) (id)..n (id*)..n 2 22 Yhden suhde yhteen yhteydet kuitti arvioija kuitti _ hyväksyjä pvm 23 Vaihtoehtoja: Lisää yhteyskumppaniin osoittava viiteavain yhteyden toista osapuolta vastaavaan tauluun ensisijaisesti sille, jolle yhteys on pakollinen jos yhteys on pakollinen molemmille, valitse kumpi tahansa Tee erillinen taulu, kuten monen suhde moneen tapauksessa. jos yhteys on molemmille osapuolille valinnainen 24 Harri Laine 4

Yhden suhde yhteen yhteydet Yleistyshierarkia (id) naimisissa vaimo aviomies 0.. vaimo 0.. naimisissa 0.. aviomies ajokortti ajokortti (id)... ajokortti ajokortti... 25 Vaihtoehto : Taulu sekä ala- että ylätyypille. Alatyypin tauluun sijoitetaan ylätyypin tauluun osoittava viiteavain. Jos ylätyypillä on käyttäjän määrittelemiä tunnistavia attribuutteja otetaan viiteavain alatyypin taulun avaimeksi. Jos ylätyypin taululla ei ole käyttäjän määrittämää tunnistavaa attribuuttia, joudutaan sille luomaan keinotekoinen avain. Tätä ei oteta alatyypin taulun avaimeksi, jos alatyypille on määritelty tunnistavia attribuutteja. 26 Yleistyshierarkia Yleistyshierarkia käytetty keinotekoista avainta oik_ omist. osake nippu (id) oik_ oh_ omist. osake rekno nippu (id) yritys rekno (id) oh_ yritys rekno oh_ pienyritys upotettu yläluokan avain pienyritys rekno 27 28 Yleistyshierarkia Vaihtoehto 2: Alatyypille ei tehdä omaa taulua, vaan alatyypin tauluun loogisesti kuuluvat sarakkeet upotetaan ylätyypin tauluun. työntekijä (id) johtaja alaisten lukumäärä työntekijä alaisten_lukumäärä Loogisen rakenteen suunnittelun tavoite on sijoittaa yhteenkuuluvat tiedot samaan tauluun Relaatiomalliin liittyvässä suunnitteluteoriassa yhteenkuuluvuus määritellään riippuvuuksien avulla Keskeinen riippuvuus: funktionaalinen riippuvuus Attribuutti B on funktionaalisesti riippuva attribuutista A (A määrää funktionaalisesti B:n), jos ja vain jos kaikissa relaatiokaavion R ilmentymissä toteutuva kuvaus A:n joukolta B:n joukolle on funktionaalinen. 29 30 Harri Laine 5

Kuvaus f:v(a)->v(b) on funktionaalinen, jos kaikissa relaatiokaavion R ilmentymissä jokainen A:n kuvautuu yhdelle B:n lle eli, jos riveillä r ja s attribuutilla A on sama (r.a=s.a), niin näillä riveillä täytyy myös B-attribuuteilla olla keskenään sama (r.b=s.b). Funktionaalinen riippuvuus tarkoittaa sitä, että attribuutin B on ykssitteisesti selvitettävissä, kun tiedetään attribuutin A. Selvittäminen voisi tapahtua kyselyllä select distinct B from R where A=a; (tuloksena olisi enintään yksi rivi) Funktionaalista riippuvuutta, jossa A määrää B:n merkitään A B. Attribuuttia A kutsutaan määrääjäksi. Yksittäisen attribuutin A tilalla voi olla myös attribuuttiyhdistelmä. Tavoitteena on kuitenkin löytää yhdistelmät, joissa on minimaalinen määrä attribuutteja, Jos A B, voidaan määrääjään lisätä m tahansa attribuutti x ja pätee Ax B. Avain määrää funktionaalisesti kaikki relaatiokaavan attribuutit (= kun tietoa haetaan avaimen arviolla saadaan vastaukseksi enintään yksi rivi) Riippuvuudet ilmaisevat jonkin kuvattavaan todellisuuteen liittyvän säännön 3 32 Tarkastellaan relaatiokaaviota lainen( koodi, Hetu, OpiskelijaNimi, Nimi, TehtavaLkm). Oletetaan, että relaatio sisältää tietoja useista opiskelijoista ja useista kursseista ja kuvaa opiskelijoiden osallistumista kursseille. Hetu OpiskelijaNimi Yhtä tunnusta kohden on vain yksi Opiskelija Henkilötunnuksen perusteella on selvitettävissä opiskelijan koodi Nimi Yhtä kurssikoodia kohti on vain yksi kurssi Hetu, koodi TehtäväLkm Yhtä tunnus & kurssikoodi yhdistelmää kohti on vain yksi tehtävälukumäärä = Henkilön tekemien tehtävien lukumäärä on kurssikohtainen Yhtä tunnusta kohti voi olla useita tehtävämääriä (opiskelija on monella kurssilla) Yhtä kurssikoodia kohti voi olla monta tehtävämäärää (kurssilla on monta opiskelijaa) 33 34 Mitkä sarakkeet samaan relaatiokaavioon? Erilaisia kriteerejä Yhteenkuuluvuussääntönä, ns. Boyce-Codd normaalimuodon sääntö: relaatiokaavion R attribuutit kuuluvat yhteen, jos ja vain jos relaatiokaavioon R ei liity yhtään sellaista funktionaalista riippuvuutta, jossa määrääjä ei sisältäisi relaation avainta. lainen relaation avain on pari koodi, Hetu => Kaikki attribuutit eivät BC-säännön mukaan kuulu yhteen koska Hetu OpiskelijaNimi ja koodi Nimi rikkovat BC-sääntöä Attribuutit on uudelleenjärjesteltävä relaatiokaavioiksi, joissa yhteenkuuluvuussäännöt ovat voimassa. päädytään relaatiokaavioihin Opiskelija(Hetu, OpiskelijaNimi) (koodi, Nimi) Osallistuminen(Hetu,koodi, TehtäväLkm). 35 36 Harri Laine 6

Jako Boyce-Codd normaalimuotoon Miten järjestellään: Karsi riippuvuusjoukko minimaaliseksi poista johdettavissa olevat riippuvuudet (materiaalissa sääntöjä) Ryhmitä riippuvuudet yhteisen määrääjän (vasen puoli) perusteella. Muodosta jokaista ryhmää kohti oma relaatio Jos alkupisen kaavion yksän avain ei sisälly muodostuneisiin relaatiokaavioihin tee sille oma kaavio Anna relaatiokaavioille nimet Taulurakenteen laadunvalvontaa Määrittele taulussa voimassaolevia funktionaalisia riippuvuuksia Määrää taulun avain avaimeen sisältyvät ainakin kaikki sarakkeet, jotka eivät esiinny missään funktionaalisessa riippuvuudessa vasemmalla puolella (= eivät riipu mistään) Jos löytyy yksikin riippuvuus, jossa määräjä ei sisällä taulun avainta relaatio ei ole BCNFmuodossa ja on mietittävä sen jakamista 37 38 Tilauslomaketta analysoitaessa löydettiin seuraavat attribuutit: lomakenumero, tilaajan tunnus, tilaajan, tilaajan, tilaajan puhelinnumero, toimitus, rivinumero, tavaran koodi, tavaran, tilattu määrä, ja tilauspäivä. 39 lomakenumero tilaajan tunnus (lomakkeella voidaan ilmoittaa vain yksi tilaaja) tilaajan tunnus tilaajan (tunnus identifioi tilaajan, joten sen perusteella saamme selville kaikki tilaajaan liittyvät tiedot) tilaajan tunnus tilaajan, tilaajan tunnus tilaajan puhelinnumero, lomakenumero toimitus (lomakkeella voidaan tilata tavaroita vain yhteen paikkaan) lomakenumero tilauspäivä (lomakkeeseen liittyy ykssitteinen tilauspäivä 40 tavaran koodi tavaran (tavaran koodi on tavaran tunniste, jonka kautta päästään kaikkiin tavaran tietoihin) lomakenumero, rivinumero tavaran koodi (lomakkeen rivillä voi ilmoittaa yhden tilattavan tavaran koodin) lomakenumero, rivinumero tilattu määrä (lomakkeen rivillä voi ilmoittaa yhden tilattavan tavaran määrän) Jako relaatioihin yhteisen määrääjän perusteella (jos riippuvuuksissa sama määrääjä, niin niissä esiintyvät attribuutit samaan relaatioon) X(tilaajan tunnus, tilaajan, tilaajan, tilaajan puhelinnumero) Y(tavaran koodi, tavaran ) Z(lomakenumero, tilauspäivä, tilaajan_tunnus, toimitus) T(lomakenumero, rivinumero, tavaran koodi, tilattu määrä) 4 42 Harri Laine 7

Jos kaavioille löytyy kuvaava, jako on onnistunut: tilaaja(tilaajan tunnus, tilaajan, tilaajan, tilaajan puhelinumero) tavara(tavaran koodi, tavaran ) tilaus(lomakenumero,tilauspäivä,tilaajan_tunnus, toimitus) tilausrivi(lomakenumero, rivinumero, tavaran koodi, tilattu määrä) tilaaja tilaajan tunnus tilaajan tilaajan tilaajan puhelinumero tilaus lomakenumero tilauspäivä tilaajan_tunnus toimitus tavara tavaran koodi tavaran tilausrivi lomakenumero rivinumero tavaran koodi tilattu määrä 43 44 Harri Laine 8