Adatbázis rendszerek 1. 2. Ea: Viszonyított betűszámtan Relációs algebra alapok 52/1 B ITv: MAN 2015.09.08
Témakörök Relációs algebra Ellenőrző kérdések 52/2
Relációs algebra Műveletek Gyakorlás 52/3
Relációs algebra Algebrai módszerek arra, hogy miként építhetünk új relációkat a régi relációkból. A kifejezések alapja (operandusai) a relációk. Kevés, egyszerű művelet A halmazműveletek csak azonos szerkezetű relációkon hajthatók végre! A relációk megadása: 1. 2. 3. rsz típus szín r1 Fiat zöld r2 Opel kék r5 Fiat kék 52/4 AUTÓ [ rsz, típus, szín ] AUTÓ rsz típus szín
A relációs algebra műveletei Szelekció Projekció Kiterjesztés Aggregáció Csoportképzés Join Metszet Különbség Unió Osztás }Halmazműveletek } Egy operandusú } Két operandusú 52/5
Szelekció (kiválasztás) Szelekció: a megadott feltételnek eleget tévő rekordok kerülnek át az eredmény relációba. Jele: felt (r) Feladat: Megoldás: Formálisan: X Y (r) = { t r t(x) t(y)} A kék színű, vagy a Mazda típusú autó adatai szín= kék OR típus= Mazda (AUTÓ) AUTÓ 52/6 rsz típus szín r1 Fiat zöld r2 Opel kék r6 Mazda piros r4 Skoda kék r9 Lada piros rsz típus szín r2 Opel kék r6 Mazda piros r4 Skoda kék
Projekció (vetítés) Projekció: csak a kijelölt mezők jelennek meg az eredmény relációban. Jele: mlista (r) Formálisan: X (r) = {t(x) r t r} Feladat: Megoldás: A típus és a szín mezők megjelenítése típus, szín (AUTÓ) rsz típus szín típus szín AUTÓ r1 Fiat zöld r2 Opel kék Fiat Opel zöld kék r6 Mazda piros Mazda piros r4 Skoda kék Skoda kék 52/7 r9 Lada piros Lada piros
A szelekció és a projekció kombinálása Feladat: Megoldás: A kék színű, vagy a Mazda típusú autó rendszámai rsz ( szín= kék OR típus= Mazda (AUTÓ) ) AUTÓ rsz típus szín r1 Fiat zöld r2 Opel kék r6 Mazda piros r4 Skoda kék r9 Lada piros rsz r2 r6 r4 52/8 szelekció projekció
Kiterjesztés Kiterjesztés: új, származtatott adatok kiírása Jele: mezőlista (r) Az új mezőérték a többi mező értékéből számítható. AUTÓ Feladat: Megoldás: rsz típus lóerő r1 Opel 110 r2 Merci 320 r5 Trabi 29 Autók teljesítményadója adó: lóerő/0.005 (AUTO) lóerő 110 320 29 52/9
Kiterjesztés Kiterjesztés: meglévő és származtatott adatok kiírása Jele: mezőlista (r) A mezőlistában megadható az új mező neve, képlete. AUTÓ Feladat: Megoldás: rsz típus lóerő r1 Opel 110 r2 Merci 320 r5 Trabi 29 Autók adatai és teljesítményadója rsz, típus, lóerő, adó: lóerő/0.005 (AUTO) rsz típus lóerő adó r1 Opel 110 22000 r2 Merci 320 64000 r5 Trabi 29 5800 52/10
Aggregáció 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) Összeg AVG(mez.kif) Átlag COUNT(mez.kif) Darabszám MAX(mez.kif) Legnagyobb érték MIN(mez.kif) Legkisebb érték 52/11
Aggregáció Feladat: Az autók összára Feladat: Az autók száma Megoldás: sum(ár) (AUTÓ) Megoldás: count(*) (AUTÓ) AUTÓ AUTÓ rsz típus ár rsz típus ár r1 Opel 4000 sum(ár) r1 Opel 4000 count(*) r2 Merci 12000 16035 r2 Merci 12000 3 r5 Trabi 35 r5 Trabi 35 52/12
Csoportképzés Csoportképzés és aggregáció: a reláció rekordjait csoportokba rendezi, és minden csoportra egy összesítő rekordot állít elő. Jele: aggregációs-lista (r) AUTÓ csoport képző Feladat: Megoldás: Az autók átlagára típusonként típus, avg(ár) típus (AUTÓ) rsz típus ár r1 Opel 3200 r2 Fiat 3800 r3 Opel 2400 r4 Opel 4000 r5 Merci 8000 r6 Fiat 2200 52/13 típus avg(ár) Opel 3200 Fiat 3000 Merci 8000
Join (szorzat, illesztés) Join: a két reláció rekordjainak párosait adja eredményként. Alap join: (Descartes-szorzat): r 1 r 2 = {(t,s) t r 1, s r 2 } Jele: r 1 r 2 vagy r 1 x r 2 Feladat: Megoldás: Az autók és a tulajdonosok teljes variációja AUTÓ EMBER AUTÓ EMBER rsz típus szín r1 Fiat zöld r2 Opel kék r5 Fiat kék név kor Pali 36 Anna 29 52/14 rsz típus szín név kor r1 Fiat zöld Pali 36 r2 Opel kék Pali 36 r5 Fiat kék Pali 36 r1 Fiat zöld Anna 29 r2 Opel zöld Anna 29 r5 Fiat kék Anna 29
Szelekciós join (feltételes illesztés) Szelekciós join: a két reláció rekordpárosaiból a feltételnek eleget tévő párosokat adja eredményként. Jele: r 1 felt r 2 Formálisan: r 1 felt r 2 = felt (r 1 r 2 ) Feladat: Megoldás: Az autó tulajdonosok listája AUTÓ tulaj=id EMBER AUTÓ rsz tulaj r1 3 r2 1 r5 4 52/15 EMBER név id Béla 1 Jenő 2 Pali 3 Anna 4 rsz tulaj név id r1 3 Pali 3 r2 1 Béla 1 r5 4 Anna 4
Natural join (természetes illesztés) Natural join: olyan szelekciós join, mely az azonos elnevezésű mezők értékegyezőségén alapszik. Jele: r 1 = r 2 Feladat: Megoldás: Az autó tulajdonosok listája AUTÓ = EMBER AUTÓ rsz id r1 3 r2 1 r5 4 52/16 EMBER név id Béla 1 Jenő 2 Pali 3 Anna 4 rsz id név r1 3 Pali r2 1 Béla r5 4 Anna
Outer join (külső illesztés) Outer join: olyan szelekciós join, melyben az illeszkedő pár nélküli rekordok is bekerülnek az eredmény halmazba (üres étékekkel kiegészítve). Jele: r 1 + feltétel r 2 Típusai: Left Right Full 52/17 Feladat: Lista az emberekről, ha van autójuk, arról is. Megoldás: EMBER + ember.id=autó.tulaj AUTÓ EMBER AUTÓ név id rsz tulaj Béla 1 r1 3 Jenő 2 r2 1 Pali 3 r5 4 Anna 4 név id rsz tulaj Béla 1 r2 1 Jenő 2 Pali 3 r1 3 Anna 4 r5 4
Semi join (félillesztés) Semi join: olyan szelekciós join, melyben az illeszkedő párokból csak a megadott oldal mezői szerepelnek. Jele: r 1 feltétel r 2 Típusai: Left Right Feladat: Lista azon emberekről, akiknek van autójuk. Megoldás: EMBER EMBER AUTÓ ember.id=autó.tulaj AUTÓ név id rsz tulaj név id Béla 1 Jenő 2 Pali 3 r1 3 r2 1 r5 4 Béla 1 Pali 3 Anna 4 52/18 Anna 4
Unió (egyesítés) Unió: azonos sémájú relációk rekordhalmazának egyesítése. A B Jele: r 1 r 2 Feladat: Megoldás: Az összes ember adata EMBER1 EMBER2 A B 52/19 EMBER1 név id Béla 1 Jenő 2 Anna 3 EMBER2 név id név id Béla 1 Géza 4 Jenő 2 Ödön 5 Anna 3 Zoli 6 Géza 4 Ödön 5 Zoli 6
Metszet (közös rész) Metszet: azonos sémájú relációk rekordhalmazának metszete. A B Jele: r 1 r 2 Feladat: Megoldás: Azok a futók, akik síelnek is Futók Síelők A B Futók név id Béla 1 Jenő 2 Anna 3 Síelők név id Géza 4 Jenő 2 Béla 1 név id Béla 1 Jenő 2 52/20
Különbség Különbség: azonos sémájú relációk rekordhalmazának különbsége. A Jele: r 1 \ r 2 B Feladat: Megoldás: Azok a futók, akik nem síelnek Futók \ Síelők A \ B Futók név id Béla 1 Jenő 2 Anna 3 Síelők név id Géza 4 Jenő 2 Béla 1 név id Anna 3 52/21
Osztás Osztás: a Descartes szorzat inverze, azon legnagyobb reláció, melynek Descartes szorzata r2-vel benne van r1-ben. Jele: r 1 r 2 Feladat: Megoldás: Azok, akik miden sportágat űznek Emberek Sportág Ember sport foci bringa bringa foci futás név Béla Béla Géza Jenő Zoli Sportág sport foci bringa név Béla Jenő foci Zoli 52/22 bringa Jenő
Relációs algebra Műveletek Gyakorlás 52/23
Gyakorló feladat: Termék-Vásárló Az adatbázis ER modellje: Tkód Név Azonosító Név Vásárlás Termék Vásárló Ár Leírás Dátum Darab Lakcím FizMód Irsz. Város Cím 52/24
Gyakorló feladat: Termék-Vásárló 2. Az adatbázis relációs modellje: Termék Vásárlás Tkód C5 Név C25 Ár N6 Leírás C30 Kód C5 Dátum D Darab N6 Azon C5 Vásárló Azonosító C5 Név C25 Irsz C4 Város C40 Cím C30 FizMód C15 52/25 Séma: Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ] Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ]
Gyakorló feladat: Termék-Vásárló 3. Séma: Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ] Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 1. Termékek neve: П név (termék) 2. A 2000 Ft-nál olcsóbb termékek neve: П név (σ ár<2000 (termék)) 3. A Kis Rozi által vásárolt termékek neve: П termék.név (σ vásárló.név= Kis Rozi (vásárló azonosító=azon vásárlás kód=tkód termék)) 52/26
Gyakorló feladat: Termék-Vásárló 4. Séma: Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ] Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 4. Azon termékek neve, amelyeket már vásároltak: П név (termék tkód=kód vásárlás) 5. Azon termékek neve, amelyeket még nem vásároltak: П név (termék) \ П név (termék tkód=kód vásárlás) 6. Hány féle termék van? Γ count(*) (termék) 7. A legdrágább termék(ek) neve, ára: 52/27 П név,ár (σ ár= Γ max(ár) (termék) termék)
Gyakorló feladat: Termék-Vásárló 5. Séma: Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ] Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 8. Hányszor vásároltak a t605-ös kódú termékből? Γ count(*) (σ kód= t605 (vásárlás)) 9. Összesen hány darabot vásároltak a t605-ös kódú termékből? Γ sum(darab) (σ kód= t605 (vásárlás)) 10. Összesen hány darabot vásároltak az egyes termékből? Γ kód, sum(darab) (vásárlás) 52/28 kód
Gyakorló feladat: Termék-Vásárló 6. Séma: Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ] Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 11. Az egyes városokban hány vásárló van? Γ város, count(*) (vásárló) város 12. Összesen mennyit fizetett Kis Rozi? Γ sum(ár*darab) (σvásárló.név= Kis Rozi (vásárló azonosító=azon vásárlás kód=tkód termék)) 13. 2010 májusában mennyi volt a bevétel? Γ sum(ár*darab) (σdátum= 2010.05.* (vásárlás kód=tkód termék)) 52/29
Gyakorló feladat: Oktató-Tantárgy-Hallgató neptunkód név kód kredit Oktató oktat Tárgy megnevezés tanszék félév vizsgajegy hallgat neptunkód név cím Hallgató tankör 52/30 irszám város utca hsz életkor szül.d.
Gyakorló feladat: Oktató-Tantárgy-Hallgató 2. neptunkód név kód kredit Oktató oktat Tárgy megnevezés tanszék Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] 52/31
Gyakorló feladat: Oktató-Tantárgy-Hallgató 3. Tárgy félév vizsgajegy hallgat neptunkód név cím Hallgató tankör irszám város utca hsz életkor szül.d. 52/32 Relációs sémák: HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ]
Gyakorló feladat: Oktató-Tantárgy-Hallgató 4. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 1. Oktatók neve: П név (oktató) 2. Oktatók és tantárgyaik neve: oktató.neptunkód=tárgy.oktató П név, megnevezés ( oktató o.neptunkód=t.oktató tárgy ) 3. Oktatók és tantárgyaik neve (azok az oktatók is, akiknek nincs tárgya): П név, megnevezés ( oktató + o.neptunkód=t.oktató tárgy ) 52/33 oktató.neptunkód=tárgy.oktató
Gyakorló feladat: Oktató-Tantárgy-Hallgató 5. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 4. A VIR Tsz-en dolgozó oktatók neve és tárgyaik címe: П név, megnevezés (σ tanszék= VIR (oktató) o.neptunkód=t.oktató tárgy) 5. Az átlagos kreditpontszám: Γ avg(kredit) (tárgy) 6. A VIR Tsz.-en oktatók létszáma: Γ count(*) (σ tanszék= VIR ( oktató ) ) 52/34 oktató.neptunkód=tárgy.oktató
Gyakorló feladat: Oktató-Tantárgy-Hallgató 6. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 7. A legnagyobb kreditpontszámú tárgy(ak) címe: Π megnevezés ( σ kredit=γ max(kredit) (tárgy) (tárgy) ) 8. Azok az oktatók, akiknek nincs tárgya: Π név (oktató) \ Π név ( oktató o.neptunkód=t.oktató tárgy ) oktató.neptunkód=tárgy.oktató 52/35
Gyakorló feladat: Oktató-Tantárgy-Hallgató 7. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 9. Azok a hallgatók, akik a 2003/2004 tanév II. félévében nem vettek fel tárgyat: Π név (hallgató) \ Π név ( (σ félév= 2003/2004 2. (hallgató) ) h.neptunkód=h.hallgató hallgat hallgat.tárgy=tárgy.kód tárgy ) 10. Határozzuk hallgató.neptunkód=hallgat.hallgató meg az életkort: ε kor=rendszer_dátum-szül_dátum (hallgató) 52/36
Gyakorló feladat: Oktató-Tantárgy-Hallgató 8. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 11. Tanszékenként az oktatók létszáma: Γ tanszék, count(*) (oktató) tanszék 12. Melyik tárgyat hányan hallgatják: Γ megnevezés, count(*) (tárgy megnevezés tárgy.kód=hallgat.tárgy hallgat hallgat.hallgató=hallgató.neptunkód hallgató) 52/37
Gyakorló feladat: Oktató-Tantárgy-Hallgató 9. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 13. Azok az oktatók, akiknek 2-nél több tárgyuk van: Π név ( σ db>2 (Γ név név,count(*) db (oktató o.neptunkód=t.oktató tárgy) oktató.neptunkód=tárgy.oktató 14. Az átlagnál alacsonyabb kreditpontú tárgyak oktatóinak neve: Π név ( σ avg(kredit) kredit < Γ (tárgy) (tárgy) o.nepunkód=t.oktató oktató) 52/38 oktató.neptunkód=tárgy.oktató
Gyakorló feladat: Oktató-Tantárgy-Hallgató 10. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 15. A legtöbb tárgyat tanító oktató neve: X = Γ név, count(*) db (oktató o.nepunkód=t.oktató tárgy) név Π név (σ db=γ max(db) (X) (X)) 16. Kik azok a hallgatók, akik minden tárgyat felvettek? Π név (( Π hallgató,tárgy (hallgat) / Π kód (tárgy)) hallgat.hallgató=hallgató.neptunkód hallgató ) oktató.neptunkód=tárgy.oktató 52/39
Adatbázis rendszerek 1. Ellenőrző kérdések 52/40
Ellenőrző kérdések 1. 1. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: A piros autók rendszáma Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/41
Ellenőrző kérdések 2. 2. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: A miskolci tulajdonosok összes adatának kiírása Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/42
Ellenőrző kérdések 3. 3. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: A miskolci tulajdonosok neve és autóik rendszáma Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/43
Ellenőrző kérdések 4. 4. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Az Opel típusú autók rendszáma Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/44
Ellenőrző kérdések 5. 5. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Az Opel típusú autók átlagára Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/45
Ellenőrző kérdések 6. 6. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Városonként az autók darabszáma Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/46
Ellenőrző kérdések 7. 7. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Rendszám és adó (mely a teljesítmény 150-szerese) Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/47
Ellenőrző kérdések 8. 8. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Adó (mely a teljesítmény 150-szerese) összege városonként Tulajdonos Autó Projekció Szelekció Aggregáció Kiterjesztés Join 52/48
Ellenőrző kérdések 9. 9. Adja meg a megoldást relációs algebrával! A: Mely termékek leírásában szerepel a női szó? B: Mely raktárhelyeken van 100-nál több termék? C: Mely raktárhelyeken van bikini nevű termék? D: Mennyi a termékek átlagára? E: Összesen hány darab bikini van a raktárban? F: Összesen mennyi értékű bikini van a raktárban? G: Hány féle 1000 Ft-nál drágább termék van? H: Hány darab 1000 Ft-nál drágább termék van? I: Mely raktárhelyeken van 100000 Ft-nál nagyobb érték? 52/49 Termék [ Tkód, Név, Ár, Leírás ] Raktár [ RaktHely, Tkkód, Darab ]
52/50 Gratulálok! Ön átvette a tananyagot, és letesztelte a tudását!
Felhasznált irodalom Kovács László elektronikus jegyzetei Szelezsán János: Adatbázisok, LSI Oktatóközpont, 1999 Baksáné Varga Erika elektronikus jegyzetei IHM: Adatbázis-kezelés, elektronikus jegyzet 52/51
VÉGE VÉGE 52/52