Relaatiomalli
Download
Report
Transcript Relaatiomalli
Relaatiomalli
5. Relaatiomalli
Käsitteet
Säännöt
Käyttö
6. Relaatioalgebra (EI TENTTIIN!)
Select, Project, Union, Difference, Join
7. (E)ER-mallin muuntaminen relaatioiksi
Kaava
2001 © Jukka Teuhola
2004 © Antti Tuomisto
Tietojenkäsittelytieteet
Turun yliopisto
Mikä on tietomalli?
Malli, jolla tietokannan rakenne ja sisältö
kuvataan
Mallinnuksen abstraktiotasot:
Käsitetaso,
esim. (E)ER-malli
Rakenteellinen käsitetaso, esim. relaatiomalli
Sisäinen taso, järjestelmäkohtainen
Vrt. Kolmikaava-arkkitehtuuri!
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
52
Relaatiomallin taustaa
Codd, 1970 (IBM Research)
Matemaattinen perusta
Yksinkertainen käsitteistö
Vähän
’rakennuspalikoita’
Helppo ja havainnollinen taulukkoesitys
Perustana suosituimmissa tietokantajärjestelmissä (Oracle, Informix, DB2, Sybase,
SQLServer,… myös Accessissä)
Relaatiomalli
sopii ohjelmoijille ja SQL-käyttäjille
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
53
Relaatiomallin käsitteitä 1/2
(kuva 5.1)
Relaatio = Taulu
Tupla (monikko) = Rivi
Attribuutti = Sarake
Edustaa reaalimaailman ’kohdetta’ tai ’faktaa’ (relaatioon
kootaan joukko samantyyppisiä kohteita / faktoja)
Järjestetty lista arvoja (esityksen yksinkertaistamiseksi,
loogisesti arvojen järjestyksellä ei väliä)
Samannimisiä relaation kohteiden ominaisuuksia
Arvot atomisia
Komponenttiattribuutit erillisinä
Moniarvoinen attribuutti omana relaationa
Arvojoukko = Attribuutin tietotyyppi (null?)
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
54
Relaatiomallin käsitteitä 2/2
(kuva 5.1)
Relaation aste = Attribuuttien lukumäärä
Relaatiokaava = Relaation nimi + attribuuttien
joukko
Tulkitaan
predikaattina (väite, tosiasia)
Relaation tila (instanssi*) = Tuplien joukko
Tuplien
järjestyksellä ei merkitystä (kuvat 5.1-5.3)
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
55
Merkinnät
Relaatiokaava: RELNIMI(Attrnimi1,..., Attrnimin)
Tupla t = <arvo1,...,arvon>
t [Attri] = tietyn attribuutin i arvo tuplassa t
Q, R, S,... = Relaatio
q, r, s,... = Relaation tila/instanssi
t, u, v,… = Tupla
Pelkkä relaation nimi viittaa kyseisen relaation sen hetkiseen
instanssiin
RELNIMI.Attrnimi ilmoittaa yksiselitteisesti attribuutin johon
viitataan
EMPLOYEE.Age
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
56
Relaatiomallin säännöt 1/2
1. Arvojoukkorajoite
Attribuutin
arvo on atominen ja kuuluu sille
määriteltyyn arvojoukkoon
Tyhjä arvo (NULL) sisältyy aina arvojoukkoon
2. Avainrajoite
Relaatiossa
ei saa olla tuplia, joiden kaikkien
attribuuttien arvot samat; relaatio on
matemaattinen joukko
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
57
Avaimiin liittyviä käsitteitä
Superavain = Attribuuttien joukko, jonka arvot eivät
ole samat kahdella eri tuplalla
Avain = Minimaalinen superavain
Ei voida poistaa yhtään attribuuttia siten, että jäljelle
jäisi superavain
Ehdokasavain = Attribuutti(ryhmä), joka on avain
Pääavain = Valitaan yksi ehdokasavaimista
Pääavain yleensä alleviivataan relaatio-kaavassa
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
58
Lisää avaimista
Avainominaisuus on relaation semantiikkaan
liittyvä asia, joka edellyttää sovelluksen
tuntemusta
Attribuutin tai attribuuttiryhmän satunnainen
yksikäsitteisyys jossakin relaatioinstanssissa ei
tee siitä avainta
Esim.
HLÖ=[Nimi, Ikä] taulun 4 instanssia:
(Elina, 26), (Jussi, 23), (Mikko, 21), (Anne, 23)
”Nimi” tuskin avain, mutta riippuu semantiikasta
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
59
Relaatiomallin säännöt 2/2
3. Olioeheys
Pääavaimen minkään komponentin arvo ei voi olla
NULL
4. Viite-eheys
Toiseen relaatioon viittaavan tuplan tulee viitata
olemassa olevaan tuplaan
Attribuutti(joukko) FK relaatiossa R1 on relaatioon R2
osoittava viiteavain, jos
FK:lla sama arvojoukko kuin R2:n pääavaimella
FK:n arvo relaation R1 tuplassa t1 esiintyy jonkin R2:n
tuplan t2 pääavaimena tai = NULL
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
60
Viiteavain (kuva 7.7)
Kutsutaan myös ’vierasavaimeksi’
Mahdollistaa relaatioiden väliset kytkökset
Relaatiomalli ei tunne varsinaisia osoittimia
Kaikki liittymät esitetään data-arvojen kautta
Esim.
Kurssi(knimi, lukukausi, opettajanimi)
Opettaja(opettajanimi, virka-asema)
Viiteavain määrittelee M:1 –suhteen viittaavan relaation ja
kohderelaation välille
Viittauksen kohteeseen voi olla useita viittauksia samasta tai eri
relaatiosta
Viiteavain voi viitata myös saman relaation pääavaimeen
Kyseessä on eräänlainen rekursiivinen suhde
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
61
Lisää viiteavaimista
Viiteavaimen merkintä
Yhden
attribuutin käsittävä viiteavain:
Kurssi(kurssino, kurssinimi, ope Opettaja)
Opettaja(hetu, nimi, laitos)
Attribuuttiyhdelmä
viiteavaimena:
Osallistuu(opno, nimi, (kurssino, vuosi)Kurssi)
Kurssi(kurssino, vuosi, kurssinimi, opettaja)
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
62
Semanttisia rajoitteita
Miten valvoa ja rajoittaa tietueiden arvojen sisältöä?
Tilarajoitukset
”Työntekijän palkan tulee olla pienempi kuin pomolla”
”Yläraja työntekijän projektien työtunneille viikossa on 56”
Muutosrajoitukset
”Työntekijän palkka voi vain nousta, ei laskea”
Toteutetaan
Kannassa ns. constraint specification language
Triggers and assertions
Sovellusohjelmassa (ohjelmointikielellä)
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
63
Relaatiotietokannan kaava
(kuva 5.5,5.6)
Nyt kohteena relaatioiden joukko
Relaatiotietokannan kaava koostuu
Relaatiokaavoista ja
Eheyssäännöistä
Relaatiotietokannan tilan/instanssin on koostuttava
relaatiokaavojen mukaisista relaation
tiloista/instansseista jotka toteuttavat em. eheyssäännöt
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
64
Relaatiotietokannan määrittely
Lyhyesti tietokannan määrittelyn vaiheet
Tietokannan
nimeäminen
Relaatioiden määrittely
Relaation nimi
Attribuutit
Avaimet
Eheyssäännöt
Arvojoukkojen
määrittely attribuuteille
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
65
Päivitysoperaatiot ja –ongelmat
Lisäys voi rikkoa:
Poisto voi rikkoa:
Arvojoukkorajoitetta, avainrajoitetta,
olioeheyttä, tai viite-eheyttä
Vain viite-eheyttä
Muutos voi rikkoa:
Ei-avainattribuutti: Arvojoukkorajoitetta
(Pää)avainattribuutti = ”poisto + lisäys”
Voi rikkoa kaikkia rajoitteita
Viiteavainattribuutti: Viite-eheyttä
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
66
Päivitysongelmien korjaaminen
Operaation estäminen
Operaation muuttaminen
Vyörytys: Päivitysoperaatio kohdistetaan myös
viittaaviin (tai viittauksen kohteena oleviin)
tupliin
Harjoituksia: Mieti seuraavan sivun päivityksiä,
niistä mahdollisesti aiheutuvia ongelmia ja
tarvittavia korjaustoimenpiteitä
Ks.
myös esimerkki s.143
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
67
Esimerkkejä (kuvat 5.6, 5.7)
Insert < ‘Sales’, Null, ‘987987987’, ‘02-FEB-91’> into DEPARTMENT
Insert < ‘Test’, 3, ’Houston’, 5 > into PROJECT
Insert < ‘123456789’, ‘Sue’, ‘Y’, ‘32-MAY-79’, ‘SON’ > into
DEPENDENT
Insert < ‘Modelling’, 7, ‘Memphis’, 3 > into PROJECT
Delete EMPLOYEE tuple with SSN='987654321'
Delete WORKS_ON tuple with ESSN='999887777’ and PNO=20
Delete PROJECT tuple with PNUMBER=3
Modify the DNO of the EMPLOYEE tuple with SSN='999887777' to 2
Modify PNUMBER of the PROJECT tuple with PNUMBER=3 to 4
Modify the SSN of the EMPLOYEE tuple with SSN='999887777' to
'987654321'
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
68
6. Relaatioalgebra
EI TENTTIIN!
Operaatiot relaatioiden käsittelyyn
Joukko-opin
operaatiot
Erityisoperaatiot relaatiotietokannoille
Operaation tulos on relaatio
Unaariset: Valinta, projektio, aggregaattifunktiot
Binääriset: Unioni, leikkaus, erotus,
karteesinen tulo, liitos
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
69
7.1-7.2 (E)ER-to-relational (1/14)
Tiivistelmä kirjan sivuista 192-203
Ks. myös taulu 7.1
Vaihe 1: Tavalliset entiteettityypit
Luo oma relaatio ja liitä siihen yksinkertaiset attribuutit
Liitä yhdistetyt attribuutit komponentteinaan
Valitse yksi avainattribuutti(joukko) pääavaimeksi
Viiteavaimia ei vielä tässä vaiheessa
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
70
... (E)ER-to-relational (2/14)
Vaihe 2: Heikot entiteettityypit
Käsittele
viimeiseksi ne heikot entiteetit, joiden
omistajana on toinen heikko entiteetti
Luo oma relaatio ja liitä yksinkertaiset attribuutit
Hajoita yhdistetyt attribuutit erillisiksi
Liitä
omistajaentiteetin pääavain viiteavaimeksi
Relaation pääavain on omistajan pääavain +
heikon entiteetin osittainen avain
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
71
... (E)ER-to-relational (3/14)
Vaihe 3: Binaariset 1:1 –liittymät
Valitse toinen entiteeteistä ja liitä toisen osapuolen pääavain
sen relaatioon viiteavaimeksi
Viiteavain on parempi liittää osapuoleen, jolla on täydellinen
riippuvuussuhde (ei esiinny NULL-arvoja)
Esim. [EMP] <manages> [DEPT]; viiteavain DEPT-relaatioon
Liitä liittymän yksinkertaiset attribuutit samaan relaatioon kuin
viiteavain
Toinen vaihtoehto: Molemmat entiteetit ja liittymä yhdeksi
relaatioksi
Erityisen sopiva, jos molempien riippuvuussuhteet täydellisiä ja
entiteeteillä ei muita liittymiä
Kolmas vaihtoehto: Kuten M:N -liittymät
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
72
... (E)ER-to-relational (4/14)
Vaihe 4: Binaariset 1:N –liittymät (ei heikko)
Liitä
”N”-puoleisen entiteetin relaation
viiteavaimeksi ”1”-puolen pääavain
Liitä liittymän yksinkertaiset attribuutit myös ”N”puoleiseen relaatioon
Toinen vaihtoehto: Kuten M:N –liittymät
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
73
... (E)ER-to-relational (5/14)
Vaihe 5: Binaariset M:N –liittymät
Luo oma relaatio
Liitä liittymään osallistuvien entiteettien pääavaimet relaation
viiteavaimiksi
Ovat yhdessä uuden relaation pääavain
Liitä myös liittymän yksinkertaiset attribuutit relaatioon
Aiemmat 1:1 ja 1:N –liittymät voidaan myös kuvata tällä tavalla
Jos liittymällä vähän instansseja, vältetään NULL-arvot
Relaation pääavain on yhden osallistuvan entiteetin
viiteavain
• (1:N):n tapauksessa ”N”-puoleinen
• (1:1):n tapauksessa se jolla täydellinen riippuvuus (jos on)
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
74
... (E)ER-to-relational (6/14)
Vaihe 6: Moniarvoiset attribuutit
Luo oma relaatio, jossa
Attribuutti joka vastaa moniarvoista attribuuttia
Entiteetin pääavain
Relaation pääavain on edellisten yhdistelmä
Jos moniarvoinen attribuutti on yhdistetty, se liitetään
komponentteinaan
Huom! Tapauskohtaisesti avain sisältää kaikki komponentit
tai osan komponenteista, kunhan avainominaisuus on
olemassa
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
75
... (E)ER-to-relational (7/14)
(kuva 7.3)
Vaihe 7: Liittymät joiden aste > 2
Luo oma relaatio
Liitä osallistuvien entiteettien pääavaimet attribuuteiksi
Liitä myös liittymän tavalliset attribuutit
Pääavain on kaikkien viiteavaimien yhdistelmä
Jos jonkun entiteetin osallistumisessa max=1 ei
pääavaimeen; muiden avainten yhdistelmä riittää
Huom! ”>2”-liittymät kannattaa muuttaa kaksiasteisiksi,
jos vain mahdollista (esim. kuva 4.11)
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
76
... EER-to-relational (8/14)
(kuva 7.4)
Em. on tärkeää omaksua! Jotta (E)ER-rakenteiden
mallinnus olisi luontevaa, on hallittava rakenteiden
toteuttaminen
Vaihe 8: Luokkahierarkioiden esittäminen
Merkitään PK(R) = relaation R pääavain (primary key)
Muunna erikoistamishierarkia, jossa
m aliluokkaa {S1 , S2 , ..., Sm}
(yleistetty) yliluokka C{k, a1 , a2 , ..., an}
PK(C) = k
... relaatiokaavoiksi käyttäen yhtä seuraavista optioista A,
B, C, tai D
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
77
... (E)ER-to-relational (9/14)
8A
Luo
C:lle relaatio L, jolla attribuutit {k, a1,..., an},
missä PK(L)=k
Luo jokaiselle aliluokalle Si oma relaatio Li , jolla
attribuutit {k} {Si :n attribuutit}; missä PK(Li)=k
Liitos jollekin Li :lle ja L:lle pääavaimen suhteen
tuottaa kaikki periytyvät ja Li :lle spesifiset attribuutit
Toimii sekä erillisillä, päällekkäisillä, täydellisillä että
osittaisilla optioilla
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
78
... EER-to-relational (10/14)
8B
Luo relaatio Li jokaiselle aliluokalle Si, jolla attribuutit {Si :n
attribuutit } {k, a1 , a2 , ..., an} ja PK(Li)=k
Toimii hyvin vain täydellisillä ja erilisillä optioilla
Ongelmatapaukset
Osittainen hierarkia & entiteetti ei kuulu mihinkään aliluokkaan
entiteetti menetetään
Päällekkäinen hierarkia entiteetti kuuluu moneen aliluokkaan
perityt attribuutit toistetaan alirelaatioissa Li redundanssia
Yliluokan entiteetit eivät esiinny suoraan missään relaatiossa
OUTER UNION kaikille tuottaa yliluokan entiteetit
Tietyn instanssin C haku vaatii kaikkien Li :den haun
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
79
... EER-to-relational (11/14)
8C
Luo
yksi relaatio L, jolla attribuutit {k, a1 , a2 , ...,
an} {Si :n attribuutit} ... {Sm:n attribuutit}
{t}; ja PK(L)=k
t = tyyppiattribuutti, joka ilmoittaa aliluokan johon
tupla kuuluu
Aliluokkien oltava erilliset
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
80
... EER-to-relational (12/14)
8D
Luo
yksi relaatio L, jolla attribuutit {k, a1 , a2 , ...,
an} {Si :n attribuutit} ... {Sm :n attribuutit}
{t1 , t2 , ..., tm}; ja PK(L)=k
ti = Boolen-attribuutti, joka ilmoittaa kuuluuko
tupla aliluokkaan Si
Päällekkäisille aliluokille
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
81
... EER-to-relational (13/14)
(kuva 7.5)
Ratkaisuista 8A-8D
C- ja D-kohtia ei suositella, jos aliluokilla on paljon
spesifisiä attribuutteja paljon NULL-arvoja
Jaettujen aliluokkien kuvaaminen relaatioiksi
Luokilla oltava sama avain, muuten mallinnetaan
kategoriana
Hierarkian ja hilan kuvauksessa voidaan käyttää eri osissa
eri optioita, yleensä vaihtoehto 8A
Katso kuva 7.5, jossa työntekijähila (kuva 4.7) on toteutettu
usealla tavalla
• Esim. ENGINEER_MANAGER
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
82
...EER-to-relational (14/14)
(kuva 7.6)
Vaihe 9: Kategorioiden kuvaaminen relaatioiksi
Voi olla useita avaimia yliluokilla (OWNER-esim;
kuva 4.8)
Jos eri avaimia: määritellään uusi (sijais)avain
joka esiintyy vierasavaimena yläluokkien
relaatioissa
Jos sama avain: ei tarvita ylimääräistä avainta
2004 © Antti Tuomisto, 2001 © Jukka Teuhola
muokattu 2005 (Tommi Tapanainen)
Tietojenkäsittelytieteet, Turun yliopisto
83