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