Adatbá Adatbázis rendszerek I Relá Reláció ciós adatmodell műveleti ré rész (relá (reláció ciós algebra)
Dr. Ková Kovács
MEME- GEIAL
Lá László szló
Relá Reláció ciós adatmodell
adatmodell
strukturá strukturális ré rész
tárolá rolási struktú struktúra séma R(m1,m2,… R(m1,m2,…)
integritá integritási ré rész
érté rték korlá korlátozá tozás PK, REF, NN, C, UN
műveleti ré rész
igé igényelt adatelem kinyeré kinyerése relá reláció ciós algebra
művelet orientá orientált
relá reláció ciós kalkulus
tulajdonsá tulajdonság orientá orientált
GEIAL Kovács László
1
Relá Reláció ciós algebra A relá reláció ciós algebra alaptulajdonsá alaptulajdonságai Nyersanyag kod
nev
ar
lejarat
1253
Dió
783
01.I.8
4433
Mogyi
6233
Bab
Zárt a relá reláció ciók halmazá halmazára Relá Reláció ciókat relá reláció cióba ké képez
97.II.11 79
75.X.2
A mű műveletek lá láncolható ncolhatók Imperatí Imperatív szemlé szemléletű letű
Eredmé Eredmény A relá reláció ciók egyes ré részeit emeli ki kod
nev
1253
Dió
4433
Mogyi
Egy vagy kétoperandusú toperandusú operá operátorai vannak Az SQL nyelv alapjá alapját ké képezi
GEIAL Kovács László
Relá Reláció ciós algebra A relá reláció ciós algebrai mű műveletek áttekinté ttekintése
egy operandusú operandusú
{
szelekció szelekció projekció projekció kiterjeszté kiterjesztés aggregá aggregáció ció csoportké csoportképzé pzés
két operandusú operandusú
{
join metszet unió unió osztá osztás különbsé nbség
GEIAL Kovács László
2
Relá Reláció ciós algebra A szelekció szelekció művelete Szelekció Szelekció: a megadott felté feltételnek eleget té tévő rekordok kerü kerülnek át az eredmé eredmény relá reláció cióba
jele:
σX ΘY(r) AUTÓ rsz tipus
σfelt(r)
= { t ∈ r | t(X) Θ t(Y)}
szín
r1
Fiat
zöld
r2 r6
Opel Mazda
kék piros
r4 r9
Skoda Suzuki
kék piros
rsz r2
tipus Opel
szín kék
r4 r6
Skoda Mazda
kék piros
szelekció (AUTO) OR tipus= =‘Mazda’ tipus Mazda feltétel: szín = 'piros' VAGY tipus =’ 'Mazda'
σszin= szin=‘kék’
GEIAL Kovács László
Relá Reláció ciós algebra A projekció projekció művelete Projekció Projekció: a kijelö kijelölt mező mezők kerü kerülnek csak át az eredmé eredmény relá reláció cióba
jele:
Π X (r)
Πmlista(r)
= {t(X) ∈ r | t ∈ r}
AUTÓ rsz r1 r2 r6 r4 r9
tipus Fiat Opel Mazda Skoda Suzuki
szín zöld kék piros kék piros
tipus Fiat Opel Mazda projekció Πkijelölt (AUTO) tipus, , rsz= tipus, tipusmezõk rsz
szín zöld kék piros
Skoda kék Suzuki piros
GEIAL Kovács László
3
Relá Reláció ciós algebra A mű műveletek kombiná kombinálása Az eredmény reláció bemenete lehet egy újabb műveletnek
AUTÓ rsz tipus r1 Fiat r2 Opel r6 r4 r9
szín zöld kék
Mazda Skoda Suzuki
Π
rsz
piros kék piros
szelekció feltétel: szín='piros' VAGY szín='kék'
rsz r2 r6 r4 r9
projekció kijelölt mezõk = rsz
(σszin= szin=‘kék’
OR szin= szin=‘piros’ piros’
(AUTO) )
GEIAL Kovács László
Relá Reláció ciós algebra A join művelet Alap Join: Join: ké két relá reláció ció rekordjainak pá párosai
jele: r1 >< r2 DescartesDescartes-szorzat AUTÓ rsz tulaj r1 3 r4 1 r6 4
r1 >< r2 = {(t,s) | t ∈ r1 , s ∈ r2}
összekapcsolás
EMBER id név 1 Laci 2 Ágota 3 János GEIAL Kovács László
4
Zoltán
AUTO >< EMBER
rsz r1 r4 r6 r1 r4
tulaj 3 1 4 3 1
id 1 1 1 2 2
név Laci Laci Laci Ágota Ágota
r6 r1 r4 r6 r1 r4
4 3 1 4 3 1
2 3 3 3 4 4
Ágota János János János Zoltán Zoltán
r6
4
4
Zoltán
4
Relá Reláció ciós algebra A join művelet Szelekció Szelekciós Join: Join: a ké két relá reláció ció rekordpá rekordpárosaibó rosaiból a felté feltételnek eleget té tévő párosokat adja eredmé eredményké nyként
jele: r1 >
<
felt
r2 = σfelt(r1 >< r2 )
Natural Join: join, , mely az azonos Join: olyan szelekció szelekciós join elnevezé elnevezésű mező mezők érté rtékegyező kegyezőségén alapszik
jele: r1 ><= r2 r1 ><
=
r2 = Π
(R1 U R2)
(σr1.X
= r2.X
(r1 >< r2 ))
GEIAL Kovács László
Relá Reláció ciós algebra A join művelet Outer Join: Join: olyan szelekció szelekciós join, join, melyben az illeszkedő illeszkedő pár nélkü lküli rekodok is bekerü bekerülnek az eredmé eredmény halmazba (üres étékekkel kiegé kiegészí szítve)
jele: r1 +>
jele: r1 ><+felt r2 jele: r1 +><+felt r2
Az üres érté rték szimbó szimbóluma: NULL GEIAL Kovács László
5
Relá Reláció ciós algebra A join művelet Righr outer join végrehajtá grehajtása
Könyv kod
cim
32
c1
1253
46
c2
4463
nev
1253
K1
4433
K2
4463
K3
><+ ><+
kod
cim
kiadó
ID
nev
32
c1
1253
1253
K1
46
c2
4463
4463
K3
NULL
NULL
NULL
4433
K2
Kiadó kiado=ID kiado=ID Kiadó
kiadó
Kiadó Kiadó ID
Könyv
GEIAL Kovács László
Relá Reláció ciós algebra A join művelet Semi Join: Join: olyan szelekció szelekciós join, join, melyben az illeszkedő illeszkedő párokbó rokból csak a megadott oldal mező mezői szerepelnek
jele: r1 >
R2(r1
>
tipusai: tipusai: - left semi join - right semi join
Az illeszkedő illeszkedő párral rendelkező rendelkező rekordokat adja vissza
GEIAL Kovács László
6
Relá Reláció ciós algebra A kiterjesz kiterjesztés művelet Kiterjeszté Kiterjesztés: a relá reláció ció kibő kibővítése szá származtatott mező mezőkkel
jele:
εmlista(r)
Az mező mező érté rtékének a tö többi mező mező érté rtékéből kell meghatá meghatározó rozódnia
AUTÓ rsz
tipus
ár
kiterjesztés
rsz
tipus
ár
r1
Fiat
1200
új mezõ: ár/100
r1
Fiat
1200
12
r2
Opel
930
r2
Opel
930
9.3
r6
Mazda
870
r6
Mazda
870
8.7
r4
Skoda
1500
r4
Skoda
1500
15
r9
Suzuki
1400
r9
Suzuki
1400
14
εar/100 ar/100(AUTO)
ár/100
GEIAL Kovács László
Relá Reláció ciós algebra A halmaz mű műveletek Unió Unió: azonos sé sémájú relá reláció ciók rekordhalmazá rekordhalmazának egyesí egyesítése
jele: r1 ∪ r2 Metszet: azonos sé sémájú relá reláció ciók rekordhalmazá rekordhalmazának metszete
jele: r1 ∩ r2 Különbsé nbség: azonos sé sémájú relá reláció ciók rekordhalmazá rekordhalmazának kü különbsé nbsége
jele: r1 \ r2 FIÚK id
név 1
Laci
2 3
Tibor János
4
Zoltán
VERSENYZÕK id 21
3 GEIAL Kovács László
id
Tibor Zoltán
név 1 3
név
Erika 2 4
különbség Laci János
FIUK \ VERSENYZOK
Éva
7
Relá Reláció ciós algebra Az osztá osztás mű művelete Osztá Osztás: a Descartes szorzat inverze, azon legnagyobb relá reláció ció, melynek Descartes szorzata r2r2-vel benne van r1r1-ben
jele: r1 ÷ r2 HOBBY hobby
név
foci
Laci
tenisz
Tibor
foci
János
futás
Zoltán
futás
Laci
foci
Zoltán
tenisz
Gábor
HOBBY ÷ SPORTAG
osztás név Laci Zoltán
SPORTÁG hobby foci futás
GEIAL Kovács László
Relá Reláció ciós algebra Az osztá osztás mű művelete Osztá Osztás levezeté levezetése az alapmű alapműveletekbő veletekből: r1 ÷ r2
= {t
| t ∈ ΠR1\ R1\R2(r1) ,
t >< r2
⊂ r1}
a ‘minden’ minden’ kvantorhoz kapcsoló kapcsolódik a jelenté jelentése Az eredmé eredmény levezeté levezetése: Jelö Jelöltek: ΠR1\ R1\R2 (r1) A jó jó jelö jelöltek szorzata benne van r1r1-ben: ΠR1\ R1\R2(r1) >< r2 A rossz jelö jelöltek: ΠR1\ (ΠR1\ R1\R2( (Π R1\R2(r1) >< r2)\r1 r1 ÷ r2 = ΠR1\ (ΠR1\ R1\R2 (r1) \ ΠR1\ R1\R2( (Π R1\R2(r1) >< r2)\r1) GEIAL Kovács László
8
Relá Reláció ciós algebra Az aggregá aggregáció ció művelete Aggregá Aggregáció ció: a relá reláció cióból összesí sszesítő rekordot állí llít elő elő
jele: Γaggregációs-lista (r) aggregá aggregáció ciós függvé ggvények: SUM(mez.kif SUM(mez.kif) mez.kif) COUNT(mez.kif COUNT(mez.kif) mez.kif) MIN(mez.kif MIN(mez.kif) mez.kif) AUTÓ rsz tipus r1 Fiat
GEIAL Kovács László
ár 1200
r2 r6 r4
Opel Mazda Skoda
930 870 1500
r9 r7 r11 r8
Suzuki Opel Fiat Opel
1400 2570 850 1000
AVG(mez.kif AVG(mez.kif) mez.kif) MAX(mez.kif MAX(mez.kif) mez.kif)
csoportképzés kifejezés: Count() 8 kiírandó: COUNT()
count(*) (AUTO) Γcount(*)
Relá Reláció ciós algebra A csoportké csoportképzé pzéses aggregá aggregáció ció művelete Csoportké Csoportképzé pzés és aggregá aggregáció ció: a relá reláció ció rekodjait csoportokba rendezi, s minden csoportra egy összesí sszesítő rekordot állí llít elő elő
jele: Γcsoport képzési kifejezésaggregációs-lista (r) Azon rekordok kerü kerülnek egy csoportba, melyekre a csoport képzé pzési kifejezé kifejezés azonos érté rtékű AUTÓ rsz tipus r1 Fiat
ár 1200
r2 r6 r4 r9
Opel Mazda Skoda Suzuki
930 870 1500 1400
r7 r11 r8
Opel Fiat Opel
2570 850 1000
GEIAL Kovács László
csoportképzés kifejezés: tipus
kiírandó: tipus, AVG(ár)
tipus, Γtipostipus,
count(*) count(*)
tipus
AVG(ár)
Fiat Opel Mazda Skoda
1025 1500 870 1500
Suzuki
1400
(AUTO)
9
Relá Reláció ciós algebra Speciá Speciális szelekció szelekciós operá operátorok Halmaz és logikai operá operátorok is élnek: ∈ : tartalmaz ∉ : nem tartalmaz ∀ : minden kvantor ∃ : lé létezik kvantor AlAl-szelekció szelekciók: A szelekció szelekciós felté feltételben is szerepelhet relá reláció ciós algebrai kifejezé kifejezés
Γcount(*)(σ fiz> (Γavg(fiz)(DOLG)) (DOLG)) GEIAL Kovács László
Relá Reláció ciós algebra Kifejezé Kifejezés felé felépítésének lé lépései 1. Mely relá reláció ciókbó kból emelhető emelhetők ki az igé igényel informá információ ciók? 2. Milyen az illeszté illesztési felté feltétel
a join eseté esetén?
3. Milyen szű szűkítések vannak az alaprelá alapreláció ciókon? 4. Szü Szüksé kség vanvan-e alal-szelekció szelekciókra? kra? 5. Szü Szüksé kség vanvan-e csoportké csoportképzé pzésre és ha igen, mi alapjá alapján? 6. Milyen aggregá aggregáció ciós kifejezé kifejezést kell szerepeltetni? 7. Milyen mező mezők szerepeljenek az eredmé eredmény relá reláció cióban? GEIAL Kovács László
10
Relá Reláció ciós algebra Mintapé Mintapélda Séma: BOROK(kod BOROK(kod, kod, nev, nev, gyarto, gyarto, fajta, ar) ar) VEVO(vkod VEVO(vkod, vkod, nev, nev, cim) cim) RENDELES(vevo RENDELES(vevo, vevo, bor, mennyiseg, mennyiseg,datum) datum) 1. Az 50005000-nél drá drágább borok nevei
Πmev(σar>5000 (BOROK)) 2. A vevő vevők neve és rendelé rendelésének összmennyisé sszmennyisége
Γnevnev, sum(mennyiseg)(RENDELES >< rendeles.vevo = vevo.vkod VEVO) GEIAL Kovács László
Relá Reláció ciós algebra Mintapé Mintapélda
1. azon vevő vevők, akik rendeltek Bikavé Bikavért
Πnev(σborok.kod = rendeles.bor AND rendeles.vevo = vevo.vkod AND borok.fajta = ‘Bikaver’ (BOROK >< RENDELES >< VEVO)) 2. Melyik gyá gyártó rtó termel 55-nél tö több vö vörös bort
Πgyarto(σcount(*)>5 (Γgyartogyarto,count(*)(σ fajta=‘voros’(BOROK)))) 3. Az átlagná tlagnál drá drágább borok darabszá darabszáma
Γcount(*)(σ ar> (Γavg(ar)(BOROK))(BOROK)) GEIAL Kovács László
11