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