Adatbázisok I A relációs algebra Relációs algebra Az adatmodell műveleti része definiálja a rendelkezésre álló operátorokat. Műveletek típusai: -adat definiáló(ddl) Data DefinitionLanguage -adatkezelő(dml) Data ManipulationLanguage -lekérdező(dql) Data QueryLanguage -vezérlő(dcl) Data ControlLanguage 2
Mit nevezünk algebrának? Egy algebra általában műveleteket és atomi operandusokat tartalmaz. Az algebra lehetővé teszi kifejezések megfogalmazását az atomi operandusokon és az algebrai kifejezéseken végzett műveletek alkalmazásával kapott relációkon. Fontos tehát, hogy minden művelet végeredménye reláció, amelyen további műveletek adhatók meg. A relációs algebra atomi operandusai a következők: A relációkhoz tartozó változók, Konstansok, amelyek véges relációt fejeznek ki. 3 Relációs algebra jellemzői A műveletek operandusai és eredményeik is relációk, azaz azonos típusú rekordok halmaza. Az elsőből következik, hogy operátorai zártak a relációk halmazára. Fő erőssége és különlegessége a lekérdezési rész. Egy és két operandusú operátorok léteznek, a lekérdezési műveletek láncolhatók. Deszkriptív(leíró), az eredmény relációhoz vezető műveletsor lépéseit kell megadni a lekérdezés megfogalmazásánál. 4
A relációs algebra A hagyományos relációs algebrai műveletek négy osztályba sorolhatók: Halmazműveletek Egyesítés (Unio) Metszet Különbség A reláció egyes részeit eltávolító műveletek Kiválasztás (szelekció) Vetítés 5 A relációs algebra A hagyományos relációs algebrai műveletek négy osztályba sorolhatók (folytatás): Két reláció sorait kombináló műveletek Descartes szorzat Összekapcsolás Átnevezés : nem befolyásolja a reláció sorait, de megváltoztatja a reláció sémáját, azaz az attribútumok neveit és/vagy a reláció nevét 6
Relációkon értelmezett halmazműveletek Egyesítés (Unió): R S R és S egyesítése azon elemek halmaza, amelyek vagy az R-ben vagy az S-ben vannak. Egy elem csak egyszer szerepel az egyesítésben, még akkor is, ha jelen van R-ben és S-ben is. Metszet: R S R és S metszete azon elemek halmaza, amelyek az R-ben és az S-ben is benne vannak. R-S különbség: R és S különbsége azon elemek halmaza, amelyek benne vannak R-ben, de nincsenek S-ben. 7 Relációkon értelmezett halmazműveletek Feltételek: Az R és S relációk sémájának ugyanazt az attribútumhalmazt kell tartalmazniuk, illetve a típusoknak (értéktartományoknak) az összes megfelelő attribútumpárra meg kell egyezniük R- ben és S-ben. A műveletek végrehajtása előtt az R és S oszlopait rendezni kell úgy, hogy az attribútumok sorrendje egyforma legyen mindkét reláció esetében. 8
UNIÓ: R S R : Lányok Név Kód Anna 1 Judit 3 Mária 5 S : Fiúk Név Kód Zsolt 11 Gábor 21 Józsi 17 R S Név Kód Anna 1 Judit 3 Mária 5 Zsolt 11 Gábor 21 Józsi 17 9 R S R S R S Származtatott művelet: r s=r-(r-s) 10
R S vagy R - S 11 (Kiválasztás) 12
(Vetítés) 13 14
Descartes- szorzat A Descartes-szorzat is értelmezhető (ezt nem tekintjük alapműveletnek, csak a természetes összekapcsolást). Itt természetesen nem fontos az attribútumok egyenlősége. A két vagy több reláció azonos nevű attribútumait azonban meg kell különböztetni egymástól. r s := { t t[r] r es t[s] s } Példa: r s. 15 Természetes összekapcsolás Természetes összekapcsolás: R(A1,,An), S(B1,,Bm) sémájú r és s táblák esetén r X s azon sorpárokat tartalmazza r-ből illetve s-ből, amelyek R és S azonos attribútumain megegyeznek. r, s sémái R(A1,,An,B1,,Bk), illetve S(B1,,Bk,C1,,Cm) R X s = ρ P(A1,,An,B1,,Bk,C1,,Cm) Π A1,,An,R.B1,,R.Bk,C1,,Cm σ R.B1=S.B1 R.Bk=S.Bk (r s) A B 0 0 2 1 1 2 B C 0 0 0 2 1 3 4 3 = A B C 0 0 0 0 0 2 2 1 3 16
Példa Felszolgál Kocsma Szomjas tüzér Kispipa Kispipa Sör Dreher Szalonbarna Gössel Látogat Név kocsma Jancsi Szomjas tüzér Józsi Kispipa A természetes összekapcsolás kifejezhető a többi alapművelettel: R S Π L (σ C (R S)) Kocsma Szomjas tüzér Kispipa Kispipa Sör Dreher Szalonbarna Gössel név Jancsi Józsi Józsi Ahol C: F.kocsma=L.kocsma, azaz a közös attribútumok egyenlőségét írja elő. L: mely attribútumokra vetítünk (kocsma, sör, név), csak egyszer veszi fel a közös attribútumokat. 17 Átnevezés 18
Théta összekapcsolás Szelekciós join-nak is nevezik 19 Théta összekapcsolás Egyen-összekapcsolás (equi join): ha a théta-összekapcsolásban a Θ helyen = szerepel. 20
(Félig-összekapcsolás) 21 Outer JOIN Kivezet a modellből, nem relációs algebrai művelet NULL 22
23 24
A relációs algebra kiterjesztése multihalmazokra 25 26
27 28
Feladatok Tantárgy tkód cím kredit oktató Oktató oktkód név tanszék fizetés 29 Feladatok 1. 5 kreditnél többet érő tantárgyak kódja és címe: Π tkód,cím (σ kredit > 5 (Tantárgy)) 2. Oktatók neve és tantárgyaik címe: Π név, cím (Oktató>< oktkód=oktató Tantárgy) 3. A Matematika tanszéken oktatók neve és tantárgyaik címe: Π név,cím (σ tanszék= Matematika (Oktató) >< oktkód=oktató Tantárgy) 4. A Matematika tanszéken oktatott, 5 kreditnél többet érő tantárgyak kódja: Π tkód (σ tanszék= Matematika AND kredit > 5 (Oktató >< oktkód=oktató Tantárgy)) 30
Feladatok 5. Minden oktató neve és tantárgyaik címe: Π név, cím (Oktató+>< oktkód=oktató Tantárgy) (outerjoin) 6. Azoknak az oktatóknak a neve, akiknek nincs tantárgya: Π név (Oktató) \Π név (Oktató>< oktkód=oktató Tantárgy) 7. Azoknak az oktatóknak a neve, akiknek nincs 5 kreditnél többet érő tantárgya: Π név (Oktató) \Π név (Oktató>< oktkód=oktató (σ kredit > 5 (Tantárgy))) 31 Feladatok 8. Az átlagos kreditpontszám: Γ avg(kredit) (Tantárgy) 9. A Matematika tanszéken oktatók létszáma: Γ count(*)( σ tanszék= Matematika (Oktató)) 10.A legnagyobb kreditpontszámú tantárgyak címe: Π cím (σ kredit=γ max(kredit) (Tantárgy) (Tantárgy)) 32
Feladatok 11. Az átlagnál alacsonyabb kreditpontú tantárgyak címe és oktatóik neve: Π cím, név (σ kredit<γ avg(kredit) (Tantárgy) (Tantárgy) >< oktkód=oktató Oktató) 12.Tanszékenként az oktatók létszáma: Γ tanszék tanszék, count(*) (Oktató) 13. Azon oktatók, akiknek 2-nél több tantárgyuk van: Π név (σ db>2 (Γ név név, count(*) db (Oktató>< oktkód=oktató Tantárgy))) 33 Feladatok 14. Az az oktató, akinek a legtöbb tantárgya van: X = Γ név név, count(*) db (Oktató>< oktkód=oktató Tantárgy) Π név (σ db=γ max(db) (X) (X)) 15. Azon oktatók minden adata, akiknek van tantárgya: Oktató >< oktkód=oktató Tantárgy (semijoin) 16. Saját tanszékükre jellemző átlagnál kevesebbet kereső oktatók neve: Π o1.név (σ o1.fizetés < Γ avg(o2.fizetés) ( σ o1.tanszék = o2.tanszék (Oktató2) ) (Oktató1)) 34