CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

Samankaltaiset tiedostot
CS-A1150 Tietokannat CS-A1150 Tietokannat / 54

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

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

CSE-A1200 Tietokannat

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

CSE-A1200 Tietokannat

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

CS-A1150 Tietokannat

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

Relaatioalgebra. Kyselyt:

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

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.

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

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

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

MS-A0402 Diskreetin matematiikan perusteet

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

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

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

CS-A1150 Tietokannat

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

3. Käsiteanalyysi ja käsitekaavio

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

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

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

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

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

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

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

Joukot. Georg Cantor ( )

Tietokantojen suunnittelu, relaatiokantojen perusteita

2. Käsiteanalyysi ja relaatiomalli

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

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

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (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.

Matematiikan tukikurssi

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

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

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

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

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

HELIA 1 (12) Outi Virkki Tiedonhallinta

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

Matematiikan tukikurssi, kurssikerta 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.

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

Johdatus graafiteoriaan

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

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

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38

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

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

Luku 8. Aluekyselyt. 8.1 Summataulukko

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

9. Lineaaristen differentiaaliyhtälöiden ratkaisuavaruuksista

HARJOITUS 2. Kasvattamot ja mittaukset

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

CS-A1150 Tietokannat

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.

kaikille a R. 1 (R, +) on kommutatiivinen ryhmä, 2 a(b + c) = ab + ac ja (b + c)a = ba + ca kaikilla a, b, c R, ja

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

Transkriptio:

CS-A1150 Tietokannat 7.3.2017 CS-A1150 Tietokannat 7.3.2017 1 / 51

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. CS-A1150 Tietokannat 7.3.2017 2 / 51

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 CS-A1150 Tietokannat 7.3.2017 3 / 51

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. CS-A1150 Tietokannat 7.3.2017 4 / 51

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) CS-A1150 Tietokannat 7.3.2017 5 / 51

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) CS-A1150 Tietokannat 7.3.2017 6 / 51

Relaatioiden avaimista Yksilöjoukoista muodostetuilla relaatioilla avainattribuutit ovat samat kuin yksilöjoukolla. Monesta moneen -suhteesta muodosteluillla relaatiolla avainattribuuteiksi tulevat suhteen yhdistävien yksilöjoukkojen avainattribuutit. Monesta yhteen -suhteesta muodosteluilla yksilöjoukolla avainattribuutiksi tulevat vain monesta-puolen yksilöjoukon avaimet. Esimerkiksi suhteesta BelongsTo tehdyn relaation avaimen muodostavat yhdessä attribuutit orderno, number, kun taas OrderedBy-suhteesta muodostetun relaation avaimeksi riittää attribuutti orderno yksin. Heikot yksilöjoukot ja perintähierarkia aiheuttavat poikkeuksia, joita käsitellään myöhemmin. CS-A1150 Tietokannat 7.3.2017 7 / 51

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 CS-A1150 Tietokannat 7.3.2017 8 / 51

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. CS-A1150 Tietokannat 7.3.2017 8 / 51

Relaatioiden 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. CS-A1150 Tietokannat 7.3.2017 9 / 51

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) CS-A1150 Tietokannat 7.3.2017 10 / 51

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 CS-A1150 Tietokannat 7.3.2017 11 / 51

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. CS-A1150 Tietokannat 7.3.2017 12 / 51

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.) CS-A1150 Tietokannat 7.3.2017 13 / 51

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. CS-A1150 Tietokannat 7.3.2017 14 / 51

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. CS-A1150 Tietokannat 7.3.2017 15 / 51

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. CS-A1150 Tietokannat 7.3.2017 16 / 51

Heikot yksilöjoukot, esimerkki Tarkastellaan viime luennolla esitetyn ER-kaavion size color name number Versions Version of Products description price muuntamista relaatioiksi. CS-A1150 Tietokannat 7.3.2017 17 / 51

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. CS-A1150 Tietokannat 7.3.2017 17 / 51

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. CS-A1150 Tietokannat 7.3.2017 18 / 51

Heikko yksilöjoukko tavallisen suhteen osapuolena Oletetaan, että verkkokaupassa joitakin tuotteen versioita on tarjolla vain määräaikaisissa kampanjoissa. start end size color name number Campaigns OfferedIn Versions Version of Products name description price CS-A1150 Tietokannat 7.3.2017 19 / 51

Heikko yksilöjoukko tavallisen suhteen osapuolena Oletetaan, että verkkokaupassa joitakin tuotteen versioita on tarjolla vain määräaikaisissa kampanjoissa. start end size color name number Campaigns OfferedIn Versions Version of Products name description price Yksilöjoukoista Products ja Versions muodostetaan samat relaatiot kuin edellä. Yksilöjoukosta Campaigns tehdään suoraviivaisesti relaatio Campaigns(name, start, end) Kun suhteesta OfferedIn muodostetaan relaatio, otetaan relaatioon mukaan yksilöjoukkojen Versions ja Campaigns avainattribuutit. Heikon yksilöjoukon Versions avainattribuutteihin kuuluun tällöin myös yksilöjoukon Products avainattribuutti. Saadaan OfferedIn(prodNo, size, color, campaignname, start) CS-A1150 Tietokannat 7.3.2017 19 / 51

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. CS-A1150 Tietokannat 7.3.2017 20 / 51

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 CS-A1150 Tietokannat 7.3.2017 21 / 51

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. CS-A1150 Tietokannat 7.3.2017 22 / 51

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. CS-A1150 Tietokannat 7.3.2017 23 / 51

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. CS-A1150 Tietokannat 7.3.2017 24 / 51

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 CS-A1150 Tietokannat 7.3.2017 25 / 51

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. CS-A1150 Tietokannat 7.3.2017 26 / 51

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ä. CS-A1150 Tietokannat 7.3.2017 27 / 51

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. CS-A1150 Tietokannat 7.3.2017 28 / 51

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. CS-A1150 Tietokannat 7.3.2017 29 / 51

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. CS-A1150 Tietokannat 7.3.2017 30 / 51

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) CS-A1150 Tietokannat 7.3.2017 31 / 51

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 CS-A1150 Tietokannat 7.3.2017 32 / 51

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 CS-A1150 Tietokannat 7.3.2017 33 / 51

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. CS-A1150 Tietokannat 7.3.2017 34 / 51

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. CS-A1150 Tietokannat 7.3.2017 35 / 51

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. CS-A1150 Tietokannat 7.3.2017 36 / 51

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 CS-A1150 Tietokannat 7.3.2017 37 / 51

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? CS-A1150 Tietokannat 7.3.2017 38 / 51

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. CS-A1150 Tietokannat 7.3.2017 39 / 51

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. CS-A1150 Tietokannat 7.3.2017 40 / 51

Relaatioiden avaimet, jatkoa Tarkastellaan relaatiota Orders1(orderNo, deliver, status, custno, productno, count). Mikä on tämän relaation avain? CS-A1150 Tietokannat 7.3.2017 41 / 51

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. CS-A1150 Tietokannat 7.3.2017 41 / 51

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ä. CS-A1150 Tietokannat 7.3.2017 42 / 51

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). CS-A1150 Tietokannat 7.3.2017 43 / 51

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. CS-A1150 Tietokannat 7.3.2017 44 / 51

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. CS-A1150 Tietokannat 7.3.2017 45 / 51

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. CS-A1150 Tietokannat 7.3.2017 45 / 51

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 } + CS-A1150 Tietokannat 7.3.2017 46 / 51

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 } +. CS-A1150 Tietokannat 7.3.2017 47 / 51

Attribuuttien sulkeuman laskeminen, esimerkki Tarkastellaan relaatiota R(A, B, C, D, E, F ), jolla on riippuvuudet B C A D, A B C, D E ja C F B. Mikä on {A, B} +? CS-A1150 Tietokannat 7.3.2017 48 / 51

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

Attribuuttien sulkeuman laskeminen, ratkaisu jatkuu Aloitetaan asettamalla X = {A, B}. Kolmannen riippuvuuden perusteella voidaan lisätä X :ään C, siis X = {A, B, C}. Toisen 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} CS-A1150 Tietokannat 7.3.2017 49 / 51

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. CS-A1150 Tietokannat 7.3.2017 50 / 51

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. CS-A1150 Tietokannat 7.3.2017 51 / 51