HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

Samankaltaiset tiedostot
Luento L: Normalisointi

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

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

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (17) Outi Virkki Tiedonhallinta

Relaatiomalli ja -tietokanta

HELIA 1 (12) Outi Virkki Tiedonhallinta

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CSE-A1200 Tietokannat

5.1 Normalisoinnin tarkoitus 5.2 Funktionaalinen riippuvuus 5.3 Normaalimuodot. Luku 5. Normalisointi. ITKA204 kevät

Tietokantojen suunnittelu, relaatiokantojen perusteita

CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

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

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

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

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

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

HELIA 1 (11) Outi Virkki Tiedonhallinta

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

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

HELIA 1 (20) Outi Virkki Tiedonhallinta

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 29

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

HELIA 1 (15) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa

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

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

TIETOKANNAT JOHDANTO

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

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

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

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

Tietokannan suunnittelu

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

Tietokantakurssit / TKTL

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

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (14) Outi Virkki Tiedonhallinta

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Opintopiiritehtävä 3: Verkkohuutokauppa

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

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

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

Kari Aalto Saariston IT

Luento 3 Tietokannan tietosisällön suunnittelu

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Lisensointikuulumisia - Kustannustehokkuus Oracle lisensoinnissa

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

FYYSINEN SUUNNITTELU

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 32

IIO10200 Tietokantaohjelmointi (4 op)

Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine Centre for Language and Communication Studies

Information on preparing Presentation

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 39

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

OUGF syysseminaari Back to Basics

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

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

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

3. Käsiteanalyysi ja käsitekaavio

Information on Finnish Courses Autumn Semester 2017 Jenni Laine & Päivi Paukku Centre for Language and Communication Studies

Information on Finnish Language Courses Spring Semester 2017 Jenni Laine

CSE-A1200 Tietokannat

Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

SQL - STRUCTURED QUERY LANGUAGE

2. Käsiteanalyysi ja relaatiomalli

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

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

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

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

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

Tietohakemisto ja Transaktionkäsittely

TIETOKANTOJEN SUUNNITTELU

Johdanto. Rough Sets. Peruskäsitteitä

Viikko

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Transkriptio:

HELIA 1 (19) Luento 7 Normaalimuodot jatkuu... 2 Boyce/Codd normaalimuoto BCNF... 2 4. normaalimuoto 4NF... 4 Itsenäisyys... 6 5. normaalimuoto 5NF... 7 Yhteenveto... 9 Esimerkki... 11 Denormalisointi?... 18 Riskit... 18

HELIA 2 (19) Normaalimuodot jatkuu Boyce/Codd normaalimuoto BCNF Ns. vahva 3NF Relaatio R on Boyce-Codd -normaalimuodossa, jos jokaisessa (ei-triviaalissa) funktionaalisessa riippuvuudessa X -> A attribuuttijoukko X on relaation R yliavain Relaatio R on 3. normaalimuodossa, jos jokaisessa funktionaalisessa riippuvuudessa X -> A joko a) attribuuttijoukko X on relaation R yliavain tai b) A on avainattribuutti Attribuuttijoukko X on relaation R yliavain, mikäli X määrää funktionaalisesti relaation attribuuttien joukon Avainattribuutti on jokainen avainehdokkaisiin sisältyvä attribuutti Relaatio R on BC-normaalimuodossa jos sen on 3NF:ssa ja jokainen determinantti on avainehdokas Determinantti = attribuutti tai attribuuttiryhmä, josta joku muu ominaisuus on täysin funktionaalisesti riippuvainen Mikään funktionaalisen riippuvuuden oikealla puolella ei määrää mitään funktionaalisen riippuvuuden vasemmalla puolella

HELIA 3 (19) Esim 1: 3NF ei BCNF R(A, B, C) AB on yliavain C ei ole yliavain, A on avainattribuutti Esim 2: 3NF ei BCNF Kussakin tiimissä kutakin oppilasta ohjaa vain 1 ohjaaja oppilas_id, tiimi_id -> ohjaaja_id Kukin ohjaaja ohjaa vain yhden tiimin jäseniä Ohjaaja_id -> tiimi_id OPPILAS_ID TIIMI_ID OHJAAJA_ID Totti Tekniikka Väätäinen Totti Talous Vihanti Tuuteri Tekniikka Väätäinen Tuuteri Hallinto Vakka Tapiainen Hallinto Vakkuri Jos jossakin tiimissä on vain vain1 jäsen ja ko. ainokainenkin päättää lopettaa, mitä tapahtuu tiedolle ko. tiimin ohjaajasta? Ratkaisu? R2(ohjaaja_id, tiimi_id) R12(oppilas_id, ohjaaja_id) Informaatiota voi kadota!

HELIA 4 (19) 4. normaalimuoto 4NF Mielekäs vain jos ER-mallissa on 3 - n asteen suhteita muissa tapauksissa BCNF on automaattisesti myös 4NF (ja 5NF) Tulee yleensä tehtyä intuitiivisesti jo suunnittelun alkuvaiheessa R(X, Y, Z) X ->> Y ja X >> Z X ja Y voivat olla joko yksittäisiä attribuutteja tai attribuuttijoukkoja William Kent, "A Simple Guide to Five Normal Forms in Relational Database Theory", Communications of the ACM 26(2), Feb.1983, 120-125. http://home.earthlink.net/~billkent/doc/simple5.htm Relaatio R on 4 normaalimuodossa joss se on BCNF ja sillä on korkeintaan yksi itsenäinen moniarvoinen riippuvuus Moniarvoinen riippuvuus N:M henkilö ->> julkaisu Julkaisu ->> henkilö 1:N äiti ->> lapsi

HELIA 5 (19) Esim: Kurssin opet ja materiaali Kurssi ->> Ope Kurssi ->> Kirja OPPI Kurssi Ope Kirja Tietovarastot 1 Lahtinen Access 1 Tietovarastot 1 Lahtinen SQL 1 Tietovarastot 1 Virkki Access 1 Tietovarastot 1 Virkki SQL 1 Tietovarastot 2 Lahtinen SQL 1 Tietovarastot 2 Lahtinen SQL 2 Tietovarastot 2 Lahtinen SQL 3 Jos Tietovarastot 2 kurssille tulee 2. Opettaja, montako riviä relaatioon on lisättävä? Mitä pitää tehdä, jos Lahtinen lopettaa Tietovarastot 2 kurssin opetuksen? Ratkaisu? R1(kurssitunnus, opetunnus) R2(kurssitunnus, kirjatunnus)

HELIA 6 (19) Itsenäisyys Esim: 1 itsenäiset ominaisuudet Taidon ja kielen välillä on yhteys vain henkilön kautta ts. se. ne liittyvät samaan henkilöön HLÖ Hlo_tunnus Taito Kieli Väinö Luku Suomi Väinö Luku Englanti Väinö Kirjoitus Suomi Väinö Kirjoitus Englanti Väinö Opetus Suomi Väinö Opetus Englanti Esim: 2 keskenään riippuvat ominaisuudet Taidon ja kielen välillä on yhteys ts. se. henkilöllä on tietty taito vain tietyllä kielellä HLÖ Hlo_tunnus Taito Kieli Väinö Luku Suomi Väinö Luku Englanti Väinö Kirjoitus Suomi Väinö Kirjoitus Englanti Väinö Opetus Suomi

HELIA 7 (19) 5. normaalimuoto 5NF Relaatio on 5. Normaalimuodossa joss se on 4NF eikä sitä voi jakaa pienemmiksi osiksi informaation katoamatta. Esim: MYYJÄ YRITYS TUOTE Myyjä edustaa useampaa yritystä Yritys valmistaa useampia tuotteita ja Myyjä myy useita tuotteita Kuka myy mitäkin tuotetta minkäkin yrityksen lukuun? MYYNTI Myyjä_tunnus Yritys_tunnus Tuote_tunnus Väinö Renault Henkilöauto Väinö Renault Traktori Väinö Volvo Henkilöauto Risto Volvo Traktori Risto Volvo Bussi

HELIA 8 (19) Mikäli on olemassa sovellusalueen sisäinen eheyssääntö, Jos myyjä myy tietyn tuotteen ja edustaa tiettyä yritystä, joka valmistaa ko. tuotetta, niin hän myy ko. tuotetta ko. yrityksen lukuun. Relaatio voidaan jakaa osiin: R1(myyjä, yritys) R2(myyjä, tuote) R3(yritys, tuote) Mikäli tämäntyyppistä eheyssääntöä ei ole määritelty 4NF on automaattisesti myös 5NF 5NF-normalisointi tulee harkittavaksi, mikäli relaation R(A,B,C) ominaisuudet eivät ole keskenään riippumattomia 5NF-normalisoinnin tuloksena on siten aina 3 tai useampia relaatioita

HELIA 9 (19) Yhteenveto Relaatioiden ja kohdealueen objektien välille pyritään saamaan läheinen rakenteellinen vastaavuus Minimoidaan tietokantaan sisältyvää käsitteellistä ja talletettavista tiedoista aiheutuvaa redundanssia Tietokannan päivitysten yhteydessä mahdollisten anomalioiden välttäminen (lisäysanomalia, päivitysanomalia, poistoanomalia)

HELIA 10 (19) Poista toistuvat ryhmät: Siirrä moniarvoiset attribuutit omiksi relaatioikseen Määritä kullekin relaatiolle pääavain 1NF Ei toistuvia ryhmiä kaikki attribuutit riippuvat pääavaimesta Poista osittaiset riippuvuudet: Siirrä pääavaimen osasta riippuvat attribuutit omiksi relaatioikseen 2NF 1NF + ei osittaisia riippuvuuksia pääavaimesta Poista transitiiviset riippuvuudet: Siirrä avaimesta epäsuorasti riippuvat ominaisuudet omiksi relaatioikseen 3NF 2NF + ei transitiivisia riippuvuuksia avaimesta Erota determinantti, joka ei ole avainehdokas omaksi relaatiokseen BCNF 3 NF + jokainen determinantti on avainehdokas Erota itsenäiset moniarvoiset riippuvuudet: Siirrä toisistaan riippumattomat moniarvoiset riippuvuudet omiksi relaatiokseen 4NF BCNF + korkeintaan 1 moniarvoinen riippuvuus Erota epäitsenäiset moniarvoiset riippuvuudet, mikäli se on mahdollista informaation katoamatta sovellukseen määritellyn eheyssäännön perusteella 5NF 4NF + ei ole jaettavissa osiin informaation katoamatta

HELIA 11 (19) 1. Eliminate Repeating Groups Make a separate table for each set of related attributes, and give each table a primary key. 2. Eliminate Redundant Data If an attribute depends on only part of a multi-valued key, remove it to a separate table. 3. Eliminate Columns Not Dependent On Key If attributes do not contribute to a description of the key, remove them to a separate table. 4. Isolate Independent Multiple Relationships No table may contain two or more 1:n or n:m relationships that are not directly related. 5. Isolate Semantically Related Multiple Relationships There may be practical constrains on information that justify separating logically related many-to-many relationships.

HELIA 12 (19) Esimerkki Tiedonhallintaseuran jäsenluettelo Nimi Tietokannat Oracle, Access Martti Laiho Solid, Allbase Leena Lahti Solid, Access Normalisoimatonta tietoa 1NF JÄSEN DB_KOKEMUS Hlö_id Hlö_nimi Hlö_id Db_id Db_nimi 1 1 2 Oracle 2 Martti Laiho 1 3 Access 3 Leena Lahti 2 1 Solid 2 4 Allbase 3 1 Solid 3 3 Access

HELIA 13 (19) DB_KOKEMUS Hlö_id Db_id Db_nimi 1 2 Oracle 1 3 Access 2 1 Solid 2 4 Allbase 3 1 Solid 3 3 Access 1 1 Solid 2NF DB_KOKEMUS DB Hlö_id Db_id taso Db_id Db_nimi 1 2 Hyvä 1 Solid 1 3 Hyvä 2 Oracle 2 1 Hyvä 3 Access 2 4 Hyvä 4 Allbase 3 1 Hyvä 3 3 Hyvä 1 1 Huono

HELIA 14 (19) JÄSEN Hlö_id Hlö_nimi Yritys Kunta 1 HELIA HKI 2 Martti Laiho HELIA HKI 3 Leena Lahti HELIA HKI 4 Kaati Karkimo TAY TRE Kukin yritys sijaitsee vain yhdessä kunnassa 3NF JÄSEN YRITYS Hlö_id Hlö_nimi Y_id Y_id Y_kunta 1 HELIA HELIA HKI 2 Martti Laiho HELIA TAY TRE 3 Leena Lahti HELIA 4 Kaati Karkimo TAY

HELIA 15 (19) DB_KOKEMUS Hlö_id Db_id taso arvioija 1 2 Hyvä OUGF 1 3 Hyvä Tieturi 2 1 Hyvä @B 2 4 Hyvä HP 3 1 Hyvä @B 3 3 Hyvä Tieturi 1 1 Huono Tieto Tietyn tietokantatuotteen arviointioikeus on annettu monelle yritykselle. Samalla yrityksellä voi olla vain 1 tuotteen arviointioikeudet. BCNF DB_KOKEMUS DB_ARVIOIJA Hlö_id arvioija taso Db_id arvioija 1 OUGF Hyvä 1 @B 1 Tieturi Hyvä 2 OUGF 2 @B Hyvä 3 Tieturi 2 4 Hyvä 4 HP 3 @B Hyvä 1 Tieto 3 Tieturi Hyvä 1 Tieto Huono

HELIA 16 (19) TAPAHTUMA Tap_id Päivä Aihe 1 2.3.1999 Tietoturva 1 2.3.1999 Hajautus 1 3.3.1999 Tietoturva 1 3.3.1999 Hajautus 2 1.5.1999 Vappu 3 1.10.1999 Rekrytointi 3 2.10.1999 Rekrytointi 4 1.11.1999 DW 4 1.11.1999 tilastotieto 4 1.11.1999 tietopalvelu Päivällä ja aiheella ei ole keskinäistä riippuvuutta. 4NF TAP_PAIVA TAP_AIHE Tap_id Päivä Tap_id Aihe 1 2.3.1999 1 Tietoturva 1 3.3.1999 1 Hajautus 2 1.5.1999 2 Vappu 3 1.10.1999 3 Rekrytointi 3 2.10.1999 4 DW 4 1.11.1999 4 tilastotieto 4 tietopalvelu

HELIA 17 (19) tietty henkilö voi edustaa useita tiimejä tietty tiimi on edustettuna useassa tapahtumassa tietyssä tapahtumassa edustavat useat henkilöt EDUSTUS Hlö_id T_id Tap_id 1 Sanasto DB-98 1 Sanasto DB-99 2 Sanasto DB-97 2 Koulutus DB-98 2 Koulutus Koulu-97 2 Koulutus Koulu-98 Jos on voimassa sääntö (constraint), että Jos hlö on mukana tietyssä tapahtumassa ja edustaa jotakin tiimiä, joka on mukana ko. tapahtumassa, hän edustaa ko. tiimiä ko. tapahtumassa 5NF Hlö_id T_tap Hlö_tap Hlö_id T_id T_id Tap_id Hlö_id Tap_id 1 Sanasto Sanasto DB-98 1 DB-98 2 Sanasto Sanasto DB-99 1 DB-99 2 Koulutus Sanasto DB-97 2 DB-97 Koulutus DB98 2 DB98 Koulutus Koulu-97 2 Koulu-97 Koulutus Koulu-98 2 Koulu-98

HELIA 18 (19) Denormalisointi? Riskit Parempi suorituskyky Yksinkertaisemmat kyselyt Esim. 1 1NF Kurssin perustietoihin kirjataan vastuuhenkilön nimi varaudutaan 3 vastuuhenkilöön. Entä kun joskus tulee 4-n.? Sovellusohjelmaa joudutaan muuttamaan Esim. 2 2NF & 3 NF & 4NF Projektin perustietoihin kirjataan osastonumeron lisäksi osaston nimi, jotta ad hoc kyselyjä tekevät saisivat kyselyihinsä mukaan myös osaston nimen. Entä kun osaston nimi muuttuu Kaikkien ko. tiedon päivitysten yhteydessä on (ohjelmoijan) muistettava päivittää ko. tieto kaikkiin sen kopioihin! Mikäli sama tieto kopioidaan vielä 2. Paikkaan, on muutettava kaikkia ohjelmia, joissa ko. tietoa päivitetään. + Mikäli tiedosta on kopioita, ristiriitaisen tiedon mahdollisuus kasvaa + Mikäli samasta tiedosta on kopioita useissa tauluissa, ko. tiedon päivitys synnyttää kirjoituslukituksia kaikkiin ko. tauluihin ja todennäköisesti hidastaa järjestelmän toimintaa mikäli ko. tietoa päivitetään usein

HELIA 19 (19) Ohjelmien tietoriippumattomuus menetetään Tietokannan ristiriidattomuus ja luotettavuus riskeerataan Suorituskyky saattaa heiketä Loogisen suunnittelun vaiheessa ei denormalisointia edes harkita Tavoitetila: 3NF Tietokannan suunnittelun ja testauksen yhteydessä denormalisointia voi harkita mikäli suorituskyky näyttää huonolta Loppukäyttäjän kyselyjen helpottamiseksi kannattaa tuottaa näkymä, joka kokoaa yhteen tietoja useammasta relaatiosta