Adatbázis rendszerek 1. 2. Ea: Viszonyított betűszámtan Relációs algebra alapok 1/81 B ITv: MAN 2017.10.24
Témakörök Relációs algebra Ellenőrző kérdések 2/81
Relációs algebra Műveletek Gyakorlás 3/81
Relációs algebra Relációk absztrakt lekérdező nyelve. Halmazorientált, és algebrai eszközökkel dolgozik. A relációkat halmaznak tekintjük, melynek elemei a relációk sorai A relációs adatbázisban a lekérdezések matematikai alapját képezi. Csak néhány, egyszerű műveletet alkalmaz Algebrai módszerek arra, hogy miként építhetünk új relációkat a régi relációkból. 4/81
Ismétlés: relációk megadása 1. 2. 3. AUTÓ rsz típus szín r1 Fiat zöld AUTÓ [ rsz, típus, szín ] AUTÓ rsz típus szín r2 Opel kék r5 Fiat kék 2. 5/81 Autó rsz típus szín
A relációs algebra műveletei Szelekció Projekció Kiterjesztés Aggregáció Csoportképzés Átnevezés Egy operandusú 6/81 Join Metszet Különbség Unió Osztás Halmazműveletek Két operandusú
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Ó 7/81 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 8/81 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 9/81 szelekció projekció
Kiterjesztés Kiterjesztés: a reláció kibővítése származtatott mezőkkel. Jele: mezőlista (r) Az új mezőérték a többi mező értékéből számítható. Feladat: Megoldás: Autók adatai és teljesítményadója lóerő/0.005 (AUTO) AUTÓ rsz típus lóerő r1 Opel 110 r2 Merci 320 r5 Trabi 29 10/81 rsz típus lóerő lóerő/0.005 r1 Opel 110 22000 r2 Merci 320 64000 r5 Trabi 29 5800
Kiterjesztés projekcióban A kiterjesztés alkalmazható projekcióban is, sőt: a számított mezőnek alias név is adható: Feladat: Megoldás: Autók rendszáma és teljesítményadója rsz, lóerő/0.005 adó (AUTO) AUTÓ rsz típus lóerő r1 Opel 110 r2 Merci 320 r5 Trabi 29 rsz adó r1 22000 r2 64000 r5 5800 11/81
Aggregáció összesítő műveletek 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 12/81
Aggregáció példák 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 13/81
Csoportképzés aggregációban 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ő rsz típus ár r1 Opel 3200 r2 Fiat 3800 r3 Opel 2400 r4 Opel 4000 r5 Merci 8000 r6 Fiat 2200 14/81 Feladat: Az autók átlagára típusonként Megoldás: típus, avg(ár) típus (AUTÓ) típus avg(ár) Opel 3200 Fiat 3000 Merci 8000
Átnevezés Megváltoztathatjuk a reláció nevét, és / vagy megváltoztathatjuk az oszlopok nevét Jele: ρ Használható a és a művelettel együtt is! Feladat: Megoldás: Legyen az Autó tábla neve Car, a mezők neve pedig rendsz, tip, ár! ρ CAR(rsz rendsz, típus tip, ár) (AUTÓ) 15/81 AUTÓ rsz típus ár r1 Opel 3200 r2 Fiat 3800 r3 Opel 2400 r4 Opel 4000 CAR rendsz tip ár r1 Opel 3200 r2 Fiat 3800 r3 Opel 2400 r4 Opel 4000
Átnevezés Az átnevezés használható a projekcióban, így alias nevet adhatunk egy oszlopnak Feladat: Megoldás: Írassuk ki az autó rendszámát rendszám-névvel rsz rendszám (AUTÓ) AUTÓ rsz típus ár r1 Opel 3200 r2 Fiat 3800 r3 Opel 2400 r4 Opel 4000 AUTÓ rendszám r1 r2 r3 r4 16/81
Átnevezés Az átnevezéssel egy szelekcióval létrejövő új relációnak is adhatunk nevet Feladat: Megoldás: Készítsünk egy ExpCar nevű táblát a 3500-nál drágább autók adataiból ρ ExpCar ( ár>3500 (Autó)) 17/81 Autó rsz típus ár r1 Opel 3200 r2 Fiat 3800 r3 Opel 2400 r4 Opel 4000 ExpCar rsz típus ár r2 Fiat 3800 r4 Opel 4000
Join műveletek Két reláció illesztése Ha két relációból akarunk egyszerre adatokat lekérdezni, a táblákat össze kell kapcsolni. Erre többféle illesztést használhatunk: Cross join Descartes szorzat Theta join Feltételes illesztés Equijoin Egyenlőség alapú illesztés Natural join Természetes illesztés Semijoin Félig összekapcsolás Antijoin Pár nélküli rekordok Outer join Külső illesztés 18/81
Cross join (Descartes szorzat, teljes illesztés) Cross join: a két reláció rekordjainak párosait adja eredményként. Descartes szorzat. Jele: r 1 x r 2 Feladat: Megoldás: Az autók és a tulajdonosok teljes variációja AUTÓ x 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 19/81 AUTÓ x EMBER 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
Theta join (szelekciós v. feltételes illesztés) Theta join (feltételes illesztés): 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 Feladat: Megoldás: Az adott autót ki tudja megvenni? AUTÓ Ár < Összeg EMBER AUTÓ Rsz Ár r1 5000 r2 700 r5 2500 20/81 EMBER Név Összeg Béla 3000 Jenő 500 Pali 6000 Anna 1000 Rsz Ár Név Összeg r2 700 Béla 3000 r5 2500 Béla 3000 r1 5000 Pali 6000 r2 700 Pali 6000 r5 2500 Pali 6000 r2 700 Anna 1000
Equijoin (egyenlőség alapú illesztés) Equijoin (egyenlőség alapú illesztés): a Theta join speciális esete, amikor a feltétel egyenlőség, vagyis a relációk azonos nevű oszlopában lévő elemek egyenlőségének vizsgálata. A kapcsolattartó mezők nevét meg kell adni! A kapcsolattartó mező neve csak egyszer szerepel a listában! Több egyező mezőnév esetén irányítható a kapcsolat! Jele: r 1 =mező r 2 21/81
Equijoin (egyenlőség alapú illesztés) Feladat: Megoldás: Az autó tulajdonosok listája AUTÓ =id EMBER AUTÓ rsz tipus kor id r1 Opel 11 3 r2 BMW 19 1 r5 Skoda 32 4 EMBER név kor id Béla 25 1 Jenő 21 2 Pali 33 3 Anna 42 4 22/81 rsz tipus kor id név kor r1 Opel 11 3 Pali 33 r2 BMW 19 1 Béla 25 r5 Skoda 32 4 Anna 42
Equijoin (egyenlőség alapú illesztés) Feladat: Megoldás: Mi az eredménye annak, ha mindkét azonos nevű mezőt használjuk az összekapcsoláshoz? AUTÓ =id, kor EMBER AUTÓ rsz tipus kor id r1 Opel 11 3 r2 BMW 19 1 r5 Skoda 32 4 EMBER név kor id Béla 25 1 Jenő 21 2 Pali 33 3 Anna 42 4 23/81 No data found! Üres adathalmaz!
Natural join (természetes illesztés) Natural join (természetes illesztés): olyan equijoin, ahol az eredményhalmazban nem ismétlődik az azonos nevű mező. Jele: r 1 r 2 vagy r 1 * r 2 Feladat: Megoldás: Az autó tulajdonosok listája AUTÓ EMBER AUTÓ EMBER AUTÓ EMBER 24/81 rsz id r1 3 r2 1 r5 4 r8 6 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
Semijoin (félig összekapcsolás, félillesztés) Semijoin: azon rekordok az egyik táblából, melyeknek van párjuk a másik táblában. Lehet bal vagy jobb oldali! Jele: r 1 r 2 vagy r 1 r 2 Feladat: Megoldás: Írassuk ki a vezetőként dolgozók adatait Dolgozó Vezető Dolgozó ID Név Osztály 1 Zoli Prog 2 Béla Fejl 3 Edit Terv 4 Géza Prog 5 Judit Fejl 25/81 Vezető Osztály Vezető Prog Géza Fejl Béla ID Név Osztály 2 Béla Fejl 4 Géza Prog
Antijoin (pár nélküli rekordok) Antijoin: azon rekordok az egyik táblából, melyeknek nincs párjuk a másik táblában. Jele: r 1 r 2 Feladat: Megoldás: Írassuk ki a nem vezetőként dolgozók adatait Dolgozó Vezető Dolgozó ID Név Osztály 1 Zoli Prog 2 Béla Fejl 3 Edit Terv 4 Géza Prog 5 Judit Fejl 26/81 Vezető Osztály Vezető Prog Géza Fejl Béla ID Név Osztály 1 Zoli Prog 3 Edit Terv 5 Judit Fejl
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). Típusai: Left Right Full Jele: r 1 + feltétel r 2 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 név id rsz tulaj Béla 1 r1 3 Béla 1 r2 1 Jenő 2 r2 1 Jenő 2 Pali 3 r5 4 Pali 3 r1 3 27/81 Anna 4 Anna 4 r5 4
Halmaz műveletek Az alapvető halmaz műveletek a relációkon is értelmezhetők. Ehhez legalább két halmaz (reláció) szükséges. A műveletek csak azonos szerkezetű relációkon hajthatók végre. A műveletek a következők: Unió Metszet Különbség Osztás 28/81
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 29/81 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 30/81
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 31/81
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 32/81 bringa Jenő
A műveletek csoportosítása Halmazműveletek: Unió, metszet, különbség Redukciós műveletek: Projekció, szelekció Kombinációs műveletek: Descartes szorzat, join Egyéb műveletek: Átnevezés, kiterjesztés, összesítő műveletek 33/81
Relációs algebra Műveletek Gyakorlás 34/81
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 35/81
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 36/81 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) 37/81
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 ] 2. A 2000 Ft-nál olcsóbb termékek neve: П név (σ ár<2000 (termék)) 38/81
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 ] 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)) 39/81
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) 40/81
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 ] 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) 41/81
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 ] 6. Hány féle termék van? Γ count(*) (termék) 42/81
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 ] 7. A legdrágább termék(ek) neve, ára: П név,ár (σ ár= Γ max(ár) (termék) termék) 43/81
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)) 44/81
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 ] 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)) 45/81
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 ] 10. Összesen hány darabot vásároltak az egyes termékből? Γ kód, sum(darab) (vásárlás) kód 46/81
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 47/81
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 ] 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)) 48/81
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 ] 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)) 49/81
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 50/81 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ó ] 51/81
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/81 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ó) 53/81
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 ] 2. Oktatók és tantárgyaik neve: П név, megnevezés (oktató neptunkód=oktató tárgy) oktató.neptunkód=tárgy.oktató 54/81
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 ] 3. Oktatók és tantárgyaik neve (azok az oktatók is, akiknek nincs tárgya): П név, megnevezés (oktató + neptunkód=oktató tárgy) oktató.neptunkód=tárgy.oktató 55/81
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ó neptunkód=oktató tárgy) oktató.neptunkód=tárgy.oktató 56/81
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 ] 5. Az átlagos kreditpontszám: Γ avg(kredit) (tárgy) 57/81
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 ] 6. A VIR Tsz.-en oktatók létszáma: Γ count(*) (σ tanszék='vir' (oktató) ) 58/81
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)) 59/81
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 ] 8. Azok az oktatók, akiknek nincs tárgya: Π név (oktató) \ Π név (oktató neptunkód=oktató tárgy) 60/81
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ó hallgató.neptunkód=hallgat.hallgató hallgat 61/81 hallgat.tárgy=tárgy.kód tárgy ) )
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 ] 10. Határozzuk meg a hallgatók életkorát: ε rendszer_dátum-szül_dátum Kor (hallgató) A Kor az alias neve a számított mezőnek! 62/81
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 63/81
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 ] 12. Melyik tárgyat hányan hallgatják: Γ megnevezés, count(*) (tárgy tárgy.kód=hallgat.tárgy megnevezés hallgat hallgat.hallgató=hallgató.neptunkód hallgató) 64/81
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ó 65/81
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 ] 14. Az átlagnál alacsonyabb kreditpontú tárgyak oktatóinak neve: Π név ( σ kredit < (Γ avg(kredit) (tárgy)) (tárgy oktató.nepunkód=tárgy.oktató oktató) ) 66/81
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ó(k) neve: 1. X = Γ név, count(*) Db (oktató név oktató.nepunkód=tárgy.oktató tárgy) Az X ideiglenes reláció! A Db alias név! 2. Π név (σ Db= (Γ max(db) (X)) (X)) 67/81
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 ] 16. Kik azok a hallgatók, akik minden tárgyat felvettek? Π név (σ Γ count(*) (tárgy)=γ hallgató, count(tárgy) (Hallgat) hallgató tárgy.kód=hallgat.tárgy hallgat (tárgy hallgat.hallgató=hallgató.neptunkód hallgató)) 68/81
Adatbázis rendszerek 1. Ellenőrző kérdések 69/81
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 70/81
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 71/81
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 72/81
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 73/81
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 74/81
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 75/81
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 76/81
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 77/81
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? 78/81 Termék [ Tkód, Név, Ár, Leírás ] Raktár [ RaktHely, Tkkód, Darab ]
79/81 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 80/81
VÉGE VÉGE 81/81