CSE-A1200 Tietokannat

Samankaltaiset tiedostot
CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

CS-A1150 Tietokannat CS-A1150 Tietokannat / 54

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 29

CS-A1150 Tietokannat CS-A1150 Tietokannat / 35

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 32

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 39

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CSE-A1200 Tietokannat

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

2. Käsiteanalyysi ja relaatiomalli

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

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

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

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

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

CS-A1150 Tietokannat

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Karteesinen tulo. Olkoot A = {1, 2, 3, 5} ja B = {a, b, c}. Näiden karteesista tuloa A B voidaan havainnollistaa kuvalla 1 / 21

Relaatioalgebra. Kyselyt:

MS-A0402 Diskreetin matematiikan perusteet

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

Diskreetin Matematiikan Paja Tehtäviä viikolle 2. ( ) Jeremias Berg

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

3. Käsiteanalyysi ja käsitekaavio

Algoritmit 2. Luento 6 Ke Timo Männikkö

HELIA 1 (12) Outi Virkki Tiedonhallinta

Algoritmit 2. Luento 6 To Timo Männikkö

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

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

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, )

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

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

CS-A1150 Tietokannat

Tietokantojen suunnittelu, relaatiokantojen perusteita

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

13. Loogiset operaatiot 13.1

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

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

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö

Joukot. Georg Cantor ( )

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

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

y x1 σ t 1 = c y x 1 σ t 1 = y x 2 σ t 2 y x 2 x 1 y = σ(t 2 t 1 ) x 2 x 1 y t 2 t 1

Olkoon R X Y. Sen käänteisrelaatio R 1 on joukosta Y joukkoon X määritelty relaatio, jonka laki on. yr 1 x xry.

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

Olkoon R X Y. Sen käänteisrelaatio R 1 on joukosta Y joukkoon X määritelty relaatio, jonka laki on. yr 1 x xry.

Matematiikan tukikurssi

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

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

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

Ohjelmoinnin peruskurssi Y1

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

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

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

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

Matematiikan tukikurssi, kurssikerta 2

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

Johdatus graafiteoriaan

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

Matematiikan tukikurssi, kurssikerta 1

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Relaatiomalli ja -tietokanta

MS-A0401 Diskreetin matematiikan perusteet

Algoritmit 1. Luento 13 Ti Timo Männikkö

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Transkriptio:

CSE-A1200 Tietokannat 8.3.2016 CSE-A1200 Tietokannat 8.3.2016 1 / 49

Oppimistavoitteet: tämän luennon jälkeen Osaat muuttaa ER-kaavion relaatiomalliin. Toisin sanoen: jos sinulla on valmis ER-kaavio, niin tiedät, mitä relaatioita tietokantaan pitää määritellä ja mitä attribuutteja näillä relaatioilla pitää olla (tietokantakaavio). Osaat kertoa, miksi jokin tietokantakaavio on parempi kuin toinen samaa asiaa kuvaava tietokantakaavio. Ymmärrät joukon asioita, joita tarvitaan, kun huono tietokantakaavio muutetaan paremmaksi (tästä lisää ensi viikolla), esimerkiksi: funktionaalinen riippuvuus relaation avaimen suhde funktionaalisiin riippuvuuksiin attribuuttien sulkeuma. CSE-A1200 Tietokannat 8.3.2016 2 / 49

ER-kaavion muuttaminen relaatiokaavioiksi Mitä relaatioita määrittelisit tietokantaan tämän kaavion perusteella? name phone Manufacturers name number ID deliver Made by Belongs to Products description price Orders count name custno orderno status Ordered by Customers born bonus address email CSE-A1200 Tietokannat 8.3.2016 3 / 49

ER-kaavion muuttaminen relaatiokaavioiksi, jatkoa Perusperiaatteet: Jokaisesta yksilöjoukosta tehdään relaatio, jolla on samat attribuutit kuin yksilöjoukolla. Jokaisesta suhteesta tehdään relaatio, jonka attribuutteina ovat suhteen yhdistämien yksilöjoukkojen avaimet sekä mahdolliset suhteen omat attribuutit. Erikoistapaukset (joita ei voida muuttaa suoraan em. perusperiaatteiden mukaan): Heikot yksilöjoukot pitää käsitellä eri tavalla. Aliluokat ja isa-suhteet pitää käsitellä eri tavalla. Joskus voidaan yhdistää kaksi perussääntöjen perusteella muodostuvaa relaatiota. CSE-A1200 Tietokannat 8.3.2016 4 / 49

Esimerkki perustapauksesta Kalvon 3 ER-kaaviossa on neljä yksilöjoukkoa: Customers, Products, Manufacturers ja Orders. Näistä kaikista muodostetaan relaatiot, joilla on samat attribuutit kuin yksilöjoukoilla: Customers(custNo, name, born, bonus, address, email) Products(number, name, description, price) Manufacturers(ID, name, phone) Orders(orderNo, deliver, status) CSE-A1200 Tietokannat 8.3.2016 5 / 49

Esimerkki perustapauksesta, jatkuu Kaaviossa on kolme suhdetta, Made-by, Belongs-to ja Ordered-by. Kaikista niistä tehdään oma relaatio. Kahdella suhteella ei ole omia attribuutteja, joten näiden relaatioiden attribuuteiksi tulevat suhteen yhdistämien yksilöjoukkojen avaimet. Suhteesta Belongs-to tehdylle relaatiolle tulee lisäksi suhteen oman attribuutti. Relaatiot: MadeBy(number, ID) BelongsTo(orderNo, number, count) OrderedBy(orderNo, custno) CSE-A1200 Tietokannat 8.3.2016 6 / 49

Toinen esimerkki Jos sama yksilöjoukko liittyy suhteeseen useammin kuin kerran, tulevat yksilöjoukon avaimet suhteesta muodostettavaan relaatioon uudelleen jokaista eri roolia kohti. Samannimiset attribuutit pitää nimetä uudelleen sekaannusten välttämiseksi. Tarkastellaan esimerkkinä seuraavaa ER-kaaviota: Artists Albums Contracts Regular company Producing company Companies CSE-A1200 Tietokannat 8.3.2016 7 / 49

Toinen esimerkki Jos sama yksilöjoukko liittyy suhteeseen useammin kuin kerran, tulevat yksilöjoukon avaimet suhteesta muodostettavaan relaatioon uudelleen jokaista eri roolia kohti. Samannimiset attribuutit pitää nimetä uudelleen sekaannusten välttämiseksi. Tarkastellaan esimerkkinä seuraavaa ER-kaaviota: Artists Albums Contracts Regular company Producing company Companies Suhteesta Contracts muodostettaisiin nyt relaatio Contracts(artistName, albumname, regularcompany producingcompany) Yksilöjoukon Companies avain siis esiintyy relaatiossa kahteen kertaan eri rooleissa. CSE-A1200 Tietokannat 8.3.2016 7 / 49

Relaatioden yhdistämisestä Tarkastellaan vielä ensimmäistä esimerkkiä. ER-kaavion pohjalta luotiin mm. relaatiot Products(number, name, description, price) Manufacturers(ID, name, phone) MadeBy(number, ID) Relaatio MadeBy on syntynyt monesta yhteen -suhteesta: yhteen tuotteeseen voi liittyä korkeintaan yksi valmistaja. Relaatiot Products ja MadeBy voidaan yhdistää yhdeksi relaatioksi lisäämällä relaatioon Products tieto valmistajan tunnuksesta. Products(number, name, description, price, ID) Relaatio Manufacturers jää entiselleen. CSE-A1200 Tietokannat 8.3.2016 8 / 49

Relaatioden yhdistämisestä, jatkoa Vastaavasti voidaan yhdistää relaatiot Orders ja OrderedBy. Sen sijaan relaatiota BelongsTo ei voida yhdistää toiseen relaatioon, koska se on syntynyt monesta moneen -suhteesta. Lopulliset relaatiot (joidenkin attribuuttien nimiä on muutettu selvyyden vuoksi): Customers(custNo, name, born, bonus, address, email) Products(number, prodname, description, price, manufid) Manufacturers(ID, manufname, phone) Orders(orderNo, deliver, status, custno) BelongsTo(orderNo, prodno, count) CSE-A1200 Tietokannat 8.3.2016 9 / 49

Relaatioden yhdistämisestä, jatkoa Olkoon ER-kaaviossa yksilöjoukko E, josta on monesta yhteen -suhde R toiseen yksilöjoukkoon F. Jos E:n ja R:n perusteella muodostetaan relaatiot E ja R, on E :n kaaviossa attribuutit E:n avaimen muodostavat attribuutit E:n loput attribuutit R :n kaaviossa on taas attribuutit E:n avaimen muodostavat attribuutit F :n avaimen muodostavat attribuutit R:n mahdolliset omat attribuutit Koska jokaiseen E:n yksilöön liittyy suhteen kautta korkeintaan yksi F :n yksilö, määräävät E:n avainattribuuttien arvot kaikki muut R :n attribuutit. Sen vuoksi E ja R voidaan yhdistää yhdeksi relaatioksi, jonka attribuutteina ovat Kaikki E:n attribuutit F :n avainattribuutit Mahdolliset R:n omat attribuutit CSE-A1200 Tietokannat 8.3.2016 10 / 49

Relaatioden yhdistämisestä, jatkoa Relaatiot voidaan yhdistää kuitenkin vain siinä tapauksessa, että suhde R on monesta yhteen. Jos R on monesta moneen, relaatioiden yhdistäminen johtaisi siihen, että sama tieto toistetaan moneen kertaan. Tarkastellaan esimerkkinä tapausta, jossa BelongsTo-relaatio yhdistettäisiin Orders-relaatioon. Tuloksena olisi relaatio Orders(orderNo, deliver, status, custno, prodno, count) Koska samaan tilaukseen voi kuulua useita tuotteita, johtaisi yhdistäminen tilanteeseen, jossa saman tilauksen toimitustapa, tila ja tilaajan asiakasnumero olisi tallennettu tietokantaan useaan kertaan. Yhdestä yhteen -suhde on monesta yhteen -suhteen erikoistapaus, joten myös yhdestä yhteen -suhteesta tehty relaatio voidaan yhdistää toiseen relaatioon. CSE-A1200 Tietokannat 8.3.2016 11 / 49

Koska relaatioiden yhdistäminen on järkevää? Monesta yhteen -suhteesta tehty relaatio voidaan siis yhdistää monesta-puolen relaatioon. Koska näin kannattaa tehdä? Relaatioiden yhdistäminen johtaa siihen, että tietokantakaaviossa on vähemmän relaatioita. Tämä yksinkertaistaa relaatiokaaviota, mikä on yleensä toivottavaa. Usein siis yhdistäminen on järkevää. Jos kuitenkin vain hyvin pieni osa yksilöjoukon yksilöistä liittyy suhteen kautta toisen yksilöjoukon yksilöön, johtaa yhdistämineen relaatioon, jossa on useimmilla monikoilla NULL-arvoja suhteen kautta tulevien attribuuttien paikalla. Tällöin yhdistäminen ei välttämättä kannata, koska: Suhteen kautta tulevien attribuuttien tallentaminen vie ylimääräistä tilaa, jos lähes kaikilla monikoilla ko. attribuuttien arvo on NULL. Jos suhteen tietoihin tehdään paljon kyselyitä, voi olla nopeampaa tehdä kyselyt pelkästään suhdetta kuvaavaan relaatioon, jos sen koko on selvästi pienempi kuin yksilöjoukkoa kuvaavan relaation koko. (Tämä riippuu kuitenkin siitä, mitä muita relaatioita kyselyssä tarvitaan.) CSE-A1200 Tietokannat 8.3.2016 12 / 49

Esimerkki 1 Verkkokauppaesimerkissä useimmilla tuotteilla on tieto siitä, mikä valmistaja ne on tuottanut. Tällöin kannattaa ilman muuta yhdistää MadeBy-suhteesta syntyneen relaation tiedot relaatioon Products, koska tietokantakaavio yksinkertaistuu ja lähes jokaisella Products-relaation monikolla on arvo tarvittavalle manufid-attribuutille. CSE-A1200 Tietokannat 8.3.2016 13 / 49

Esimerkki 2 Oletetaan, että työpaikalla on mentorointiohjelma, jossa osalla työntekijöistä on nimetty mentori työpaikan ulkopuolelta. Yhdellä työntekijällä voi olla korkeintaan yksi mentori, mutta yli 90 %:lla työntekijöistä ei ole lainkaan mentoria name number name firm Employees MentoredBy Mentors address occupation ID Koska vain pienellä osalla työntekijöistä on mentori, kannattaa suhteesta MentoredBy tehdä todennäköisesti oma relaationsa eikä yhdistää sitä relaatioon Employees. CSE-A1200 Tietokannat 8.3.2016 14 / 49

Heikon yksilöjoukon esittäminen relaationa Heikko yksilöjoukko muutetaan relaatioksi seuraavasti: 1. Heikon yksilöjoukon omien attribuuttien lisäksi otetaan relaatioon niiden yksilöjoukkojen avainattribuutit, joihin heikko yksilöjoukko on yhdistetty kaksinkertaisella vinonelilöllä kuvatulla suhteella. (Toisin sanoen mukaan otetaan ne heikon yksilöjoukon avainattribuutit, jotka kuuluvat toiseen yksilöjoukkoon.) 2. Jos heikko yksilöjoukko on osallisena jossakin suhteessa, niin kyseisestä suhteesta muodostetun avaimen täytyy sisältää kaikki heikon yksilöjoukon avainattribuutit. 3. Niistä suhteista, joiden kautta heikko yksilöjoukko saa osan avainattribuuteistaan (kaksinkertaisilla vinoneliöillä kuvatut suhteet) ei muodosteta lainkaan relaatioita. CSE-A1200 Tietokannat 8.3.2016 15 / 49

Heikot yksilöjoukot, esimerkki Tarkastellaan viime luennolla esitetyn ER-kaavion size color name number Versions Version of Products description price muuntamista relaatioiksi. CSE-A1200 Tietokannat 8.3.2016 16 / 49

Heikot yksilöjoukot, esimerkki Tarkastellaan viime luennolla esitetyn ER-kaavion size color name number Versions Version of Products description price muuntamista relaatioiksi. Yksilöjoukosta Products muodostetaan suoraviivaisesti relaatio Products(number, name, description, price) Kun heikosta yksilöjoukosta Versions muodostetaan relaatio, pitää siihen ottaa mukaan myös Products-joukon avainattribuutti, sillä se kuuluu heikon yksilöjoukon avainattribuutteihin. Nimetään kuitenkin attribuutti uudelleen sekaannusten välttämiseksi, joten saadaan relaatio Versions(prodNo, size, color) Suhteesta Version-of ei muodosteta lainkaan relaatiota, sillä suhteen tiedot käyvät ilmi jo Versions-relaatiosta. CSE-A1200 Tietokannat 8.3.2016 16 / 49

Heikosta yksilöjoukosta muodostetun relaation attribuutit Jos W on heikko yksilöjoukko, niin W :stä muodostetaan relaatio, jolla on seuraavat attribuutit: W :n kaikki attribuutit. Avainattribuutit kaikista niistä yksilöjoukoista, joihin W on yhdistetty kaksinkertaisilla vinonelilöillä kuvatuilla suhteilla. Kaikki attribuutit niistä kaksinkertaisilla vinoneliöillä kuvatuista suhteista, joihin W on yhdistetty. CSE-A1200 Tietokannat 8.3.2016 17 / 49

Aliluokkien esittäminen relaatioina Yksilöjoukko ja sen aliluokat muodostavat hierarkian. Yksilöjoukkoa, jolla ei ole yliluokkaa, kutsutaan hierarkian juuriyksilöjoukoksi. Juuriyksilöjoukolla on avain, joika avulla voidaan identifioida mikä tahansa hierarkiaan kuuluva yksilö (myös aliluokkien yksilö). Yksilöllä voi olla komponentteja, jotka kuuluvat mihin tahansa hierarkian alipuun yksilöjoukkoon niin kauan, kun alipuuhun kuuluu juuriyksilöjoukko. Äänikirja voi olla sekä kirja että CD. Tarkastellaan edellisen luennon esimerkkiä, johon on lisätty vielä tieto siitä, että verkkokauppa voi tarjota tietokoneen ostaville asiakkaille tietokoneen huoltosopimuksia eri yrityksiin. Samalla konemallilla voi olla useita sopimusvaihtoehtoja eri yritysten kanssa. Sopimus solmitaan määräajaksi, ja ajan pituus on suhteen attribuuttina. Yksilöjoukko Firms ei kuulu perintähierarkiaan, vaan se on mukana hierarkian ulkopuolisena joukkona, johon on suhde jostain perintähierarkian yksilöjoukosta. CSE-A1200 Tietokannat 8.3.2016 18 / 49

Aliluokkien esittäminen relaatioina, jatkoa number name description price Products isa isa isa ram length address CDs Books Computers Maintains Firms artist length author pages speed harddisk firmid CSE-A1200 Tietokannat 8.3.2016 19 / 49

Aliluokkien esittäminen relaatioina, jatkoa Aliluokkahierarkian muuttamiseksi relaatioiksi on kolme erilaista strategiaa (jotka siis johtavat erilaisiin relaatioihin). 1. Noudata ER-mallia. Muodosta hierarkian jokaisesta yksilöjoukosta E relaatio, joka sisältää juuriyksilöjoukon avainattribuutit ja lisäksi kaikki E:n omat attribuutit. 2. Kohtele yksilöitä olioina, jotka voivat kuulua vain yhteen luokkaan. Tee hierarkian jokaisesta mahdollisesta alipuusta, joka sisältää juuriyksilöjoukon, yksi relaatio, jonka kaavio sisältää kaikkien alipuuhun kuuluvien yksilöjoukkojen attribuutit. 3. Käytä null-arvoja. Tee yksi relaatio, joka sisältää kaikkien hierarkian yksilöjoukkojen attribuutit. Kutakin yksilöä esitetään yhdellä monikolla. Tällä monikolla on erityisarvo null niillä attribuuteilla, joita yksilöllä ei ole lainkaan. Seuraavaksi katsotaan tarkemmin näitä eri vaihtoehtoja. CSE-A1200 Tietokannat 8.3.2016 20 / 49

ER-mallia noudattava muunnos Hierarkian jokaista yksilöjoukkoa kohti tehdään oma relaatio. Jos yksilöjoukko E ei ole hierarkian juuriyksilöjoukko, sitä vastaavan relaation attribuutteihin tulee E:n omien attribuuttien lisäksi juuriyksilöjoukon avainattribuutit identifioimaan yksilö. Jos yksilöjoukko E kuuluu johonkin suhteeseen, tulee tätä suhdetta kuvaavaan relaatioon juuriyksilöjoukon avainattribuutit identifioimaan suhteeseen kuuluva yksilö. Huomaa kuitenkin, että isa-suhteista ei muodosteta relaatioita. Toisin kuin muut suhteet, isa-suhde ei yhdistä kahta eri yksilöä, vaan saman yksilön komponentteja. CSE-A1200 Tietokannat 8.3.2016 21 / 49

ER-mallia noudattava muunnos, esimerkki Tuotehierarkian yksilöjoukoista muodostetaan tällä tavalla neljä eri relaatiota: Products(number, name, description, price) CDs(number, artist, length) Books(number, author, pages) Computers(number, speed, ram, harddisk) Huomaa, että relaatiot CDs, Books ja Computers ovat saaneet yliluokan avainattribuutin. Lisäksi relaatioilla on niiden omat attribuutit. Lisäksi on tarvitaan relaatio kuvaamaan suhdetta Maintains. Maintains(number, firmid, length) Relaation attribuutteina ovat relaatioiden Computers ja Firms avaimet sekä lisäksi suhteen oma attribuutti. Jokainen tuoteyksilö kuuluu kaikkiin niihin relaatioihin, joihin se ominaisuuksiensa puolesta kuuluu. Esimerkiksi äänikirjalla on sitä vastaavat monikot sekä Products-, CDs- että Books-relaatioissa. CSE-A1200 Tietokannat 8.3.2016 22 / 49

Oliosuuntautunut lähestymistapa Tässä lähestymistavassa luetellaan kaikki mahdolliset perintähierarkian alipuut, jotka sisältävät juuriyksilöjoukon. Jokaista mahdollista alipuuta kohti tehdään oma relaatio. Relaation kaaviossa on attribuutteina kaikki sitä vastaavassa alipuussa esiintyvät komponentit. Edellisessä esimerkissä on kahdeksan mahdollista alipuuta: 1. Products yksinään. 2. Products ja CDs 3. Products ja Books 4. Products ja Computers 5. Products, CDs ja Books 6. Products, CDs ja Computers 7. Products, Books ja Computers 8. Products, CDs, Books ja Computers CSE-A1200 Tietokannat 8.3.2016 23 / 49

Oliosuuntautunut lähestymistapa, jatkoa Näistä tulee kahdeksan relaatioita, ja lisäksi yksi suhteesta Maintains: Products(number, name, description, price) ProductsCD(number, name, description, price, artist, length) ProductsB(number, name, description, price, author, pages) ProductsC(number, name, description, price, speed, ram, harddisk) ProductsCDB(number, name, description, price, artist, length, author, pages) ProductsCDC(number, name, description, price, price, artist, length, speed, ram, harddisk) ProductsBC(number, name, description, price, author, pages, speed, ram, harddisk) ProductsCDBC(number, name, description, price, artist, length, author, pages, speed, ram, harddisk) Maintains(number, firmid, length) Kutakin tuotetta vastaa monikko vain yhdessä kahdeksasta ensimmäisestä relaatiosta. CSE-A1200 Tietokannat 8.3.2016 24 / 49

NULL-arvojen käyttö Kolmannessa lähestymistavassa tehdään kaikista perimyshierarkian yksilöjoukoista vain yksi yhteinen relaatio. Sillä on attribuutteina kaikki mahdolliset hierarkiassa esiintyvät ominaisuudet. Jos jollain yksilöllä ei kyseistä ominaisuutta ole, annetaan vastaavalle attribuutille tätä yksilöä edustavassa monikossa arvoksi erikoisarvo NULL, joka kertoo, että attribuutille ei ole määritelty arvoa. Esimerkkitapauksessa tehtäisiin kaikkia tuotteita edustamaan yksi relaatio Products(number, name, description, price, artist, length, author, pages, speed, ram, harddisk) Esimerkiksi tuotteilla, jotka eivät ole kirjoja, attribuuttien author ja pages arvot ovat NULL. Lisäksi suhdetta Maintains varten tehdään oma relaatio samoin kuin edellä. CSE-A1200 Tietokannat 8.3.2016 25 / 49

Lähestymistapojen vertailua Kyselyissä, jotka koskevat kaikkia tuotteita, voi olla eduksi, että joudutaan käsittelemään mahdollisimman vähän eri relaatioita (yleensä kysely on hitaampi suorittaa, jos se koskee suurempaa joukkoa relaatioita). Toisaalta kyselyissä, jotka koskevat vain esimerkiksi kirjoja, on edullisempaa, jos kirjat ovat omassa relaatiossaan. Yleensä relaatioiden määrän ei haluta olevan kovin suuri, koska se tekee tietokannasta monimutkaisemman. ER-malliin perustuvan ja nolla-arvoja käyttävän lähestymistavan ero tässä ei ole kuitenkaan kovin suuri. Sen sijaan oliosuuntaunut lähestymistapa voi aiheuttaa relaatioiden määrän kasvamisen nopeasti: jos perimyshierarkiassa on n + 1 yksilöjoukkoa, on mahdollisten alipuiden määrä 2 n. CSE-A1200 Tietokannat 8.3.2016 26 / 49

Lähestymistapojen vertailua, jatkuu On toivottavaa minimoida tilan käyttö ja välttää saman tiedon toistaminen. Tässä suhteessa oliosuuntautunut lähestymistapa on hyvä: kutakin yksilöä kohti on vain yksi monikko ja sillä on vain tarvittavat attribuutit. Myös nolla-arvoja käyttävässä tavassa on vain yksi monikko yksilöä kohti, mutta monikolla voi olla tarpeettomia attribuutteja. ER-malliin perustuvassa lähestymistavassa saman yksilön tiedot voivat olla useassa monikossa, mutta vain avainarvot on toistettu eri monikoissa. CSE-A1200 Tietokannat 8.3.2016 27 / 49

Funktionaaliset riippuvuudet ja tietokannan normalisointi Ongelma edelleen: Mitä relaatioita tietokantaan pitäisi määritellä ja mitä attribuutteja näillä pitäisi olla? Samat tiedot voidaan esittää useilla eri tietokantakaavioilla (= tietokantaan kuuluvien relaatiokaavioiden sekä eheysehtojen yhdistelmä). Jotkin niistä ovat parempia kuin toiset. ER-kaavion tai jonkin toisen korkeamman tason suunnittelumenetelmän tuottaman tuloksen suoraviivainen muuntaminen relaatiomalliin ei aina johda parhaaseen mahdolliseen lopputulokseen. Relaatiokaaviot voidaan muuttaa parempaan muotoon normalisoimalla. Tällä tarkoitetaan relaatioiden jakamista uusiksi relaatioiksi niin, että kokonaisuus on parempi. Normalisoinnissa tarvitaan tietoa relaatioiden attribuuttien funktionaalisista riippuvuuksista. CSE-A1200 Tietokannat 8.3.2016 28 / 49

Esimerkki Tarkastellaan kahta eri tapaa esittää tuotteita ja niiden valmistajia. Ensimmäisessä tavassa tiedot on tallennettu relaatioon Products1(number, prodname, description, price, manufid, manufname, phone) Toisessa tavassa tiedot on jaettu kahteen relaatioon Products(number, prodname, description, price, manufid) Manufacturers(ID, manufname, phone) CSE-A1200 Tietokannat 8.3.2016 29 / 49

Esimerkki jatkuu Relaatioiden instanssit voisivat olla esim. seuraavat: Relaatio Products1 number prodname description price manufid manufname phone T-33441 Galaxy A5 cellphone 250.0 S123 Samsung 020-7300 S-65221 Brasserie 24 pan 33.50 F542 Fiskars 020-43910 T-33442 NX 300 Smart camera 399.0 S123 Samsung 020-7300 T-33455 Cyber-shot camera 463.0 L711 Sony 020-6500 R-43118 Samsung LT 24 TV 169.0 S123 Samsung 020-7300 R-27113 Sony 32 KDL TV 347.0 L711 Sony 020-6500 CSE-A1200 Tietokannat 8.3.2016 30 / 49

Esimerkki jatkuu Relation Products number prodname description price manufid T-33441 Galaxy A5 cellphone 250.0 S123 S-65221 Brasserie 24 pan 33.50 F542 T-33442 NX 300 Smart camera 399.0 S123 T-33455 Cyber-shot camera 463.0 L711 R-43118 Samsung LT 24 TV 169.0 S123 R-27113 Sony 32 KDL TV 347.0 L711 Relation Manufactures ID manufname phone S123 Samsung 020-7300 L711 Sony 020-6500 F542 Fiskars 020-43910 CSE-A1200 Tietokannat 8.3.2016 31 / 49

Esimerkki: tietokantakaavioiden eroja Ensimmäisessä tietokantakaaviossa tiedot valmistajien nimistä ja puhelinnumeroista esiintyvät useaan kertaan, toisessa tietokantakaaviossa vain yhteen kertaan. Jos esim. valmistajan puhelinnumeroa muutetaan, pitää päivitys ensimmäisessä kaaviossa tehdä useaan monikkoon, toisessa vain yhteen. Jos ensimmäisessä kaaviossa halutaan poistaa tieto tuotteesta S-65221, häviävät samalla kaikki tiedot valmistajasta Fiskars. Toisessa kaaviossa valmistajan tiedot säilyvät, vaikka tieto tuotteesta poistetaan. Toinen tietokantakaavio on siis selvästi parempi kuin ensimmäinen. CSE-A1200 Tietokannat 8.3.2016 32 / 49

Huonon suunnittelun aiheuttamia ongelmia Tietokannan huonosta rakenteesta johtuvia tietokannan käyttäytymisen poikkeavuuksia kutsutaan anomalioiksi (anomaly). Keskeiset anomaliat: Tiedon toisteisuus (redundancy) Päivitysanomaliat (update anomalies): jos sama tieto on esitetty useaan kertaan, täytyy muutokset tehdä jokaiseen esityskohtaan. Poistoanomaliat (deletion anomalies): monikoiden poistolla voi olla sivuvaikutuksia. Jos esimerkiksi tuotteiden ja niiden valmistajien tiedot on yhdistetty samaan relaatioon, voi tuotteen poistaminen poistaa myös informaation valmistajan nimestä ja puhelinnumerosta. CSE-A1200 Tietokannat 8.3.2016 33 / 49

Funktionaalisen riippuvuuden määritelmä Olkoon relaatiolla R attribuutit A 1, A 2,..., A n, B, C 1, C 2,..., C k. Attribuutit A 1, A 2,..., A n määräävät funktionaalisesti attribuutin B, jos seuraava ehto on voimassa: Jos kahdella relaation R monikolla on samat arvot kaikilla attribuuteilla A 1, A 2,..., A n, niin silloin niillä on samat arvot myös attribuutilla B. Attribuutit A 1, A 2,..., A n määräävät funktionaalisesti attribuutin B merkitään A 1 A 2... A n B Jos kahdella relaation R monikolla on samat arvot kaikilla attribuuteilla A 1, A 2..., A n, niin niillä on siis samat arvot myös attribuutilla B. Huomaa kuitenkin, että R:llä voi olla myös muita attribuutteja C 1, C 2,..., C k, joiden arvot voivat poiketa toisistaan. Funktionaalisen riippuvuuden ehdon pitää päteä kaikille mahdollisille R:n monikoille, ei vain kaikille tällä hetkellä R:n instanssissa oleville monikoille. CSE-A1200 Tietokannat 8.3.2016 34 / 49

Funktionaalinen riippuvuus, määritelmä yleisemmin Olkoon relaatiolla R attribuutit A 1, A 2,..., A n, B 1, B 2,..., B m, C 1, C 2,..., C k. Attribuutit A 1, A 2,..., A n määräävät funktionaalisesti attribuutit B 1, B 2,..., B m, jos seuraava ehto on voimassa: Jos kahdella relaation R monikolla on samat arvot kaikilla attribuuteilla A 1, A 2,..., A n, niin silloin niillä on samat arvot myös kaikilla attribuuteilla B 1, B 2,..., B m. Merkitään A 1 A 2... A n B 1 B 2... B m CSE-A1200 Tietokannat 8.3.2016 35 / 49

Funktionaalinen riippuvuus, esimerkki Olkoon määritelty relaatio Products1(number, prodname, description, price, manufid, manufname, phone) Tässä siis kunkin tuotteen tietojen yhteyteen on tallennettu myös tuotteen valmistajan kaikki tiedot. Mitä funktionaalisia riippuvuuksia relaatiolla on? CSE-A1200 Tietokannat 8.3.2016 36 / 49

Funktionaalinen riippuvuus, esimerkki jatkuu Koska tuotteen numero yksilöi, mistä tuotteesta on kysymys, määrää se tuotteen nimen, kuvauksen, hinnan, valmistajan tunnuksen, valmistajan nimen ja valmistajan puhelinnumeron. Tämä esitetään number prodname description price manufid manufname phone Valmistajan tunnus yksiöi valmistajan, joten se määrää valmistajan nimen ja puhelinnumeron. Merkitään Sen sijaan esim. riippuvuus manufid manufname phone manufid number prodname ei ole voimassa, koska samalla valmistajalla voi olla useita eri tuotteita. CSE-A1200 Tietokannat 8.3.2016 37 / 49

Relaatioiden avaimet Yksi tai useampi attribuutti {A 1,..., A n } on relaation R avain, jos 1. nämä attribuutit funktionaalisesti määräävät kaikki muut relaation R attribuutit. 2. mikään tämän attribuuttijoukon aito osajoukko ei funktionaalisesti määrää kaikkia muita relaation R attribuutteja. Edellisen kalvon esimerkissä attribuutti number on relaation Products1 avain. Sen sijaan esim. attribuutti manufid ei kelpaa tämän relaation avaimeksi, koska se ei funktionaalisesti määrää kaikkia relaation attribuutteja. CSE-A1200 Tietokannat 8.3.2016 38 / 49

Relaatioiden avaimet, jatkoa Tarkastellaan relaatiota Orders1(orderNo, deliver, status, custno, productno, count). Mikä on tämän relaation avain? CSE-A1200 Tietokannat 8.3.2016 39 / 49

Relaatioiden avaimet, jatkoa Tarkastellaan relaatiota Orders1(orderNo, deliver, status, custno, productno, count). Mikä on tämän relaation avain? Attribuutit {orderno, prodno} muodostavat relaation Orders1 avaimen, koska 1. jos kaksi monikkoa yhtyvät avainattribuuttien osalta, niin niillä on samat arvot myös lopuille attribuuteille deliver, status, custno ja count 2. aidot osajoukot {orderno} ja {prodno} eivät määrää relaation kaikkia muita attribuutteja. Huom: Relaatiolla voi olla myös useampi kuin yksi mahdollinen avain. Tällöin yksi avain valitaan ensisijaiseksi avaimeksi (primary key). Yliavain (superkey) on attribuuttijoukko, joka sisältää avaimen (mutta voi sen lisäksi sisältää muitakin attribuutteja). Myös avain itse on yliavain. CSE-A1200 Tietokannat 8.3.2016 39 / 49

Funktionaalisten riippuvuuksien päättelystä Funktionaaliset riippuvuudet voidaan usein esittää monella eri tavalla. Hyvien relaatiokaavioiden etsimisessä on usein olennaista tietää, mitkä riippuvuudet seuraavat toisistaan. Olkoon S ja T kaksi funktionaalisten riippuvuuksien joukkoa. Riippuvuuksien joukko S seuraa (follows) riippuvuuksista T, jos jokainen relaatioinstanssi, joka täyttää kaikki T :n riippuvuudet, täyttää myös kaikki S:n riippuvuudet. Riippuvuuksien joukot S ja T ovat ekvivalentit, jos S seuraa T :stä ja T seuraa S:stä. CSE-A1200 Tietokannat 8.3.2016 40 / 49

Ositus/yhdistämissääntö Olkoon voimassa funktionaalinen riippuvuus A 1 A 2... A n B 1 B 2... B m Tämä riippuvuus on ekvivalentti seuraavan funktionaalisten riippuvuuksien joukon kanssa: A 1 A 2... A n B 1 A 1 A 2... A n B 2... A 1 A 2... A n B m Funktionaalinen riippuvuus A 1 A 2... A n B 1 B 2... B m voidaan siis korvata joukolla funktionaalisia riippuvuuksia A 1 A 2... A n B i, i = 1, 2,..., m. (Ositussääntö, splitting rule) Vastaavasti joukko funktionaalisia riippuvuuksia A 1 A 2... A n B i, i = 1, 2,..., m voidaan korvata yhdellä funktonaalisella riippuvuudella A 1 A 2... A n B 1 B 2... B m (yhdistämissääntö, combining rule). CSE-A1200 Tietokannat 8.3.2016 41 / 49

Riippuvuuksien luokittelua Tarkastellaan riippuvuutta A 1 A 2... A n B 1 B 2... B m Riippuvuus on triviaali (trivial), jos kaikki B:t ovat A:iden osajoukko Riippuvuus on epätriviaali (nontrivial), jos vähintään yksi B ei sisälly A:iden joukkoon. Riippuvuus on täysin epätriviaali (completely nontrivial), jos mikään B ei sisälly A:iden joukkoon. Esimerkiksi riippuvuus orderno prodno prodno count on epätriviaali, mutta ei täysin epätriviaali. Riippuvuuden oikealta puolelta voidaan aina poistaa sellaiset attribuutit, jotka esiintyvät myös sen vasemmalla puolella. CSE-A1200 Tietokannat 8.3.2016 42 / 49

Transitiivisuussääntö Tarkastellaan relaatiota R(A, B, C, D). Jos on voimassa funktionaaliset riippuvuudet A B ja B C, niin silloin on voimassa myös riippuvuus A C. CSE-A1200 Tietokannat 8.3.2016 43 / 49

Transitiivisuussääntö Tarkastellaan relaatiota R(A, B, C, D). Jos on voimassa funktionaaliset riippuvuudet A B ja B C, niin silloin on voimassa myös riippuvuus A C. Todistus: Olkoon R:n instanssissa kaksi monikkoa, joilla on samat arvot attribuutille A: (a, b 1, c 1, d 1 ) ja (a, b 2, c 2, d 2 ). Koska R:lle pätee A B, täytyy tällöin olla b1 = b 2. Koska nyt molemmilla monikoilla on sama arvo attribuutille B ja B C, täytyy myös monikoiden C arvot olla samat: c 1 = c 2. On siis todistettu, että jos kahdella monikolla on sama arvo attribuutille A, niillä on myös sama arvo attribuutille C eli funktionaalinen riippuvuus A C pätee. CSE-A1200 Tietokannat 8.3.2016 43 / 49

Attribuuttien sulkeuma Olkoon annettu attribuuttijoukko {A 1, A 2,..., A n } ja joukko funktionaalisia riippuvuuksia S. Haluamme tietää kaikki ne attribuutit, jotka jotka riippuvat funktionaalisesti joukosta {A 1, A 2,..., A n }. Näiden attribuuttien joukkoa sanotaan joukon {A 1, A 2,..., A n } sulkeumaksi riippuvuusjoukon S suhteen. Täsmällisemmin: joukon {A 1, A 2,..., A n } sulkeuma riippuvuusjoukon S suhteen on maksimaalinen attribuuttijoukko B siten että A 1 A 2... A n B Attribuuttijoukon {A 1, A 2,..., A n } sulkeumaa merkitään seuraavasti: {A 1, A 2,..., A n } + CSE-A1200 Tietokannat 8.3.2016 44 / 49

Attribuuttien sulkeuman laskeminen, algoritmi Algoritmin syötteenä on attribuuttien joukko {A 1, A 2,..., A n } ja funktionaalisten riippuvuuksien joukko S. Sulkeuman voi laskea seuraavasti: 1. Jaa tarvittaessa funktionaaliset riippuvuudet käyttämällä ositussääntöä niin, että jokaisen riippuvuuden oikealla puolella esiintyy vain yksi attribuutti. 2. Olkoon X joukko, joka lopulta sisältää sulkeuman. Aseta X aluksi joukko {A 1, A 2,..., A n }. 3. Etsi jokin funktionaalinen riippuvuus B 1 B 2... B m C siten, että kaikki B 1, B 2,..., B m sisältyvät joukkoon X, mutta C ei sisälly. Lisää C joukkoon X. 4. Toista kohtaa kolme, kunnes X :ää ei enää voi kasvattaa. 5. Joukko X on nyt {A 1, A 2,..., A n } +. CSE-A1200 Tietokannat 8.3.2016 45 / 49

Attribuuttien sulkeuman laskeminen, esimerkki Tarkastellaan relaatiota R(A, B, C, D, E, F ), jolla on riippuvuudet A B C, B C A D, D E ja C F B. Mikä on {A, B} +? CSE-A1200 Tietokannat 8.3.2016 46 / 49

Attribuuttien sulkeuman laskeminen, esimerkki Tarkastellaan relaatiota R(A, B, C, D, E, F ), jolla on riippuvuudet A B C, B C A D, D E ja C F B. Mikä on {A, B} +? Ratkaisu: Jaetaan ensin toinen riippuvuus kahdeksi riippuvuudeksi. Saadaan siis riippuvuudet: A B C B C A B C D D E C F B (jatkuu seuraavalla kalvolla) CSE-A1200 Tietokannat 8.3.2016 46 / 49

Attribuuttien sulkeuman laskeminen, ratkaisu jatkuu Aloitetaan asettamalla X = {A, B}. Ensimmäisen riippuvuuden perusteella voidaan lisätä X :ään C, siis X = {A, B, C}. Kolmannen riippuvuuden perusteella lisätään D, jolloin X = {A, B, C, D}. Nyt neljännen riippuvuuden perusteella voidaan lisätä E, joten X = {A, B, C, D, E}. Tämän jälkeen X :n kasvattaminen ei enää onnistu minkään riippuvuuden avulla. {A, B} + on siis {A, B, C, D, E} CSE-A1200 Tietokannat 8.3.2016 47 / 49

Miksi laskea attribuuttien sulkeuma? Attribuuttien sulkeuman perusteella voidaan päätellä, seuraako jokin riippuvuus A 1 A 2... A n B annetusta funktionaalisten riippuvuksien joukosta S: Lasketaan ensin {A 1, A 2,..., A n } +. Jos B kuuluu sulkeumaan, niin A1 A 2... A n B seuraa S:stä, jos B ei kuulu sulkeumaan, niin tarkasteltu riippuvuus ei seuraa joukosta S. Näin voidaan päätellä, seuraako jokin riippuvuuksien joukko toisesta riippuvuuksien joukosta, tai ovatko annetut kaksi riippuvuuksien joukkoa ekvivalentteja. Sulkeuman avulla voidaan myös päätellä, onko annettu attribuuttijoukko relaation yliavain. Lasketaan attribuuttijoukon sulkeuma. Jos relaation kaikki attribuutit kuuluvat sulkeumaan, attribuuttijoukko on relaation yliavain. CSE-A1200 Tietokannat 8.3.2016 48 / 49

Minimaaliset riippuvuusjoukot Joukosta riippuvuuksia voidaan johtaa uusia riippuvuuksia. Yleensä relaation osittamista varten haluaisimme mahdollisimman pienen joukon riippuvuuksia, jotka kuitenkin riittävät kuvaamaan kaiken olennaisen relaation riippuvuuksista. Riippuvuusjoukkoa, josta voidaan johtaa kaikki relaation riippuvuudet, kutsutaan relaation kannaksi (basis). Kanta B on minimaalinen kanta, jos seuraavat ehdot pätevät: 1. Kaikissa B:n riippuvuuksissa on oikealla puolella vain yksi attribuutti. 2. Jos mikä tahansa B:n riippuvuus poistetaan, B ei ole enää kanta. 3. Jos mistä tahansa B:n riippuvuuksista poistetaan vasemmalta puolelta yksi tai useampi attribuutti, B ei ole enää kanta. CSE-A1200 Tietokannat 8.3.2016 49 / 49