Adatbázis Rendszerek Budapesti Műszaki és Gazdaságtudományi Egyetem Fotogrammetria és Térinformatika Tanszék 2011 Dr. Alhusain Othman oalhusain@gmail.com 7.1. Bevezetés 7.2. Klasszikus- és relációs- algebra 7.3. A relációs adatmodell műveleti része 7.4. Relációs algebrai műveletek csoportjai 7.4.1. Alap (Mag) Műveletek: 7.4.1.1. Halmaz műveletek - Unió - Metszet - Különbség - Osztás 7.4.1.2. Sor/Oszlop műveletek - Vetítés - Kiválasztás - Descartes szorzat - Természetes összekapcsolás 7.4.1.3. Más műveletek 7.4.2. Relációs műveletek összegezve 7.5. Relációs algebra multi-halmazokon 7.6. Aggregációs operátorok 7.7. Csoportosítási operátorok 1 2 7.1. Bevezetés: A felhasználás során nagyon fontos hogy, a különböző felhasználók tudják módosítni és lekérdezni az adatbázis tartalmát. Az adatbázis tehát attól lesz élő, hogy csatlakozik hozzá egy funkciócsoport, amely lehetővé teszi a különböző műveletek elvégzését. A relációs adatmodell műveleti része ezen dinamikus adatkezelő és adatlekérdező lehetőségeket foglalja magába. 7.2. Klasszikus- és relációs- algebra: 7.2.1. Klasszikus algebra: Matematikai rendszer amely foglal magában: Operandusok: változok vagy értékek amelyekből uj értékeket lehet generálni. Operatorok: Szimbólumok amelyek jelölik eljárásokat új értékek generálására adott régi értékekből. Pld. 1 + 5 = 6 3 4 7.2. Klasszikus- és relációs- algebra: 7.2.2. Relációs algebra: Egy fajta algebra amelyben az operandusok relációk (táblák), vagy változók amelyek relációkat (táblákat) képviselik. Az operatorok a relációs algebrában ügy vannak tervezve hogy képesek végrehajtani legtöbb szükséges műveletet a relációkon. Az operandusok/ operátorok kombinációs algebra eredményez egy fajta algebrát amely használható kereső nyelv -ként az adatbázisban. 7.3. A relációs adatmodell műveleti része: 7.1.1. Algebrai művelet: A relációs algebrai műveletek mindegyike minden esetben relációkon értelmezett. Algebrai műveletek biztos elméleti alapokon nyugsznak, melyeket összefoglalóan relációs algebrának neveznek. Általában az algebrai (lekérdező) műveletek nem változtatják meg az operandusként megadott relációkat (táblák), csak olvassák azokat, majd az eredményt leteszik egy új, önálló eredmény relációba. Ez azt jelenti, hogy a bemenő operandusai a relációk (táblák) lehetnek, melyekkel az alábbi műveletek végezhetők: adatok lekérdezése adatok módosítása adatok felvitele adatok törlése Adatkezelő 5 6 1
Műveletek amelyek szükségeltetik azonos relációs séma minden két (vagy több) operandusban. ❿ Unió, ❿ Metszet, ❿ Különbség, ❿ Osztás. Mindkét reláció sémájának ugyanazon attribútumokat kell tartalmaznia. Azonos, de más néven szereplő attribútumokat át kell nevezni. Oszlopokat azonos sorrendűre kell rendezni. 7 8 Unió: R VezNév KerNév Szül Kovács József 1967 Nagy Mária 1967 S VezNév KerNév Szül Nagy Mária 1967 Szabó Géza 1977 R S: R-ben és S-ben szereplő sorok összessége. Mindkettőben szereplő sor csak egyszer szerepel az eredményben. R S VezNév KerNév Szül Kovács József 1967 Nagy Mária 1967 Szabó Géza 1977 9 10 Metszet: Különbség: R S: R-ben és S-ben egyaránt szereplő sorok. R S VezNév KerNév Szül Nagy Mária 1967 R S: Azon sorok, amelyek szerepelnek R-ben, de nincsenek S-ben R S S R! R S VezNév KerNév Szül Kovács József 1967 11 12 2
❿ Vetítés: Oszlopok kiválasztásara. ❿ Kiválasztás: Rekordok kiválasztásara. ❿ Produktum és Összekapcsolás: Relációk kombinálására. Vetítés: Új reláció létrehozása, a régi reláció bizonyos oszlopaiból. π VezNév, Szül(R): De! : π Szül(R): VezNév Szül Kovács 1967 Nagy 1967 Szül 1967 13 14 Kiválasztás: Új reláció létrehozása, a régi reláció bizonyos soraiból Sorok kiválasztása feltétel alapján σ Szül >1970(S): VezNév KerNév Szül Szabó Géza 1977 Produktum és Összekapcsolás :Descartes szorzat R S: új reláció létrehozása, amely sémája az R és S sémájának egyesítése, sorai R és S sorainak kombinációja Azonos nevű attribútumok esetén átnevezés X Y Y Z X R.Y S.Y Z 5 6 5 6 7 8 7 8 5 6 7 8 15 16 Összekapcsolás: Theta Új reláció, ahol a megegyező attribútumok alapján táblákat kapcsolunk össze. R3 := R1 JOIN C R2 Hajtson végre a produktum R1 * R2. Utána kell alkalmazni egy kiválasztási műveletet az eredményre. C bár milyen logikai feltétel lehet. =< Öszekapcsolás: Theta Elad( kocsma, sör, ár ) Kocsmák( név, cím ) Joe s Bud 2.50 Joe s Maple St. Joe s Miller 2.75 Sue sriver Rd. Sue s Bud 2.50 Sue s Coors 3.00 KocsmaInfo := Elad JOIN Elad.kocsma = Kocsmák.név Kocsmák BarInfo(kocsma, sör, ár, név, cím ) Joe s Bud 2.50 Joe s Maple St. Joe s Miller 2.75 Joe s Maple St. Sue s Bud 2.50 Sue s River Rd. Sue s Coors 3.00 Sue s River Rd. 17 18 3
Összekapcsolás: Természetes Gyakori összekapcsolás amely két reláció kapcsol össze, azzal hogy: Egyenlíti az azonos nevű attribútumokat. Vetíteni egy másolat ebből a kiegyenlített attributumokat. Jelölése: R3 :=R1 JOIN R2 Összekapcsolás: Természetes Elad( kocsma, sör, ár ) Kocsmák(kocsma, cím ) Joe s Bud 2.50 Joe s Maple St. Joe s Miller 2.75 Sue s River Rd. Sue s Bud 2.50 Sue s Coors 3.00 KocsmaInfo := Elad JOIN Kocsmák A Kocsmák.név-ból kellet létrehozni Kocsmák.kocsma hogy biztosítjuk a természetes join mükődését. KocsmaInfo( kocsma, sör, ár, cím ) Joe s Bud 2.50 Maple St. Joe s Milller 2.75 Maple St. Sue s Bud 2.50 River Rd. Sue s Coors 3.00 River Rd. 19 20 7.4.1.3. Más műveletek: ❿ Átnevezés: Relációk és attribútumok át nevezésére. ❿ Kiterjesztés: Relációk új attribútumokkal ellátása. ❿ Csoportosítás: Relációk attribútumai csoportosítása. 7.4.1.3. Más műveletek: Mező attribútum átnevezés: Az átnevezés RENAME operator rendel új sémát a relációhoz Formája R1(A1,., An):=R2 Ezzel a reláció R1 (A1,.An) attributumai az R2 relációből veszi az értékük. 21 22 7.4.1.3. Más műveletek: Mező attribútum átnevezés: Kocsmák(név, cím ) Joe s Maple St. Sue s River Rd. R( kocsma, cím ) Joe s Maple St. Sue s River Rd. R(kocsma, cím) := Kocsmák 7.4.1.3. Más műveletek: Kiterjesztés: PROJ A,B, A+B (R) = A B A+B 3 7 23 24 4
7.4.2.. Alap (Mag) relációs algebrai műveletek összegezve: Halmaz Műveletek - Unió - Metszet - Különbség - Osztás Sor/oszlop Műveletek - Kiválasztás - Kivetítés - Egyesítés és összekapcsolás (join) Más Műveletek - Átnevezések - Kiterjesztés - Csoportosítás 7.4.3. Relációs műveletek összegezve: A relációs algebra műveletei közül az első három játssza a legnagyobb szerepet, mivel ezek a műveletek fordulnak elő a leggyakrabban a lekérdezések során. A szelekciós műveletek a relációban szereplő rekord előfordulások egy részhalmazának az előállításra szolgál. A kiválasztott részhalmazba csak azok a rekord előfordulások kerülnek bele, melyek kielégítik a szelekciós feltételt. A szelekció elvégzéséhez tehát meg kell adni egy relációt és egy feltételt, a feltételnek olyannak kell kennie, hogy a reláció minden rekordjára kiértékelhető legyen, s egy logikai értéket adjon vissza, azon rekordok, melyekre a feltétel igaz értékű lesz, bekerülnek az eredményrelációba. Úgyis mondhatnánk, hogy a szelekció a tábla néhány sorát adja meg eredményként. 25 26 A Táska (vagy mulithalmaz ) hasonlít a szokásos halmazra, ezzel a feltétellel hogy az elemek ismétlődhetnek. pld: {4,2,4,6} egy táska (multihalmaz). és : {4,2,3} is táska (multihalmaz) de egyben halmaz is. Az SQL nagyon alkalmazható a táskára (a multihalmazokra). Egyes műveletek (pld. Vetítés ) hatékonyabb a táskákra mint a halmazokra. Műveletek mint a kiválasztás, a kivetítés, a produktum, és az összekapcsolás mind alkalmazható a táskákra. R( A, B ) 5 6 SELECT A+B<5 (R) = A B 27 28 R( A, B ) 5 6 Produktum R( A, B ) S( B, C ) 5 6 7 8 PROJECT A (R) = A 1 5 1 29 R * S = A R.B S.B C 7 8 5 6 5 6 7 8 7 8 30 5
Theta join R( A, B ) S( B, C ) 5 6 7 8 Unió Az elem szerepel az uniós táskában ahányszor szerepel mind a kettő táskában. Pld.: {4,2,1} UNION {1,1,2,3,1} = {1,1,1,1,2,2,3,4} R JOIN R.B<S.B S = A R.B S.B C 7 8 5 6 7 8 7 8 31 32 Metszet Az elem szerepel a metszet táskában annyiszor mint a minimális szereplése az egyik táskában. Pld.: {4,2,1} INTER {1,1,2,3,1} = {1,2} {1,2,1,1} INTER {1,2,1,3} = {1,1,2}. Különbözet Az elem szerepel az (A-B) különbözet táskában annyiszor mint ahányszor szerepel az A táskában mínusz ahányszor szerepel a B táskában. Pld.: {1,2,1,1} - {1,2,3} = {1,1,3} 33 34 Duplázás elimináció Szortirozás Formája: R1 := DELTA(R2). R1 Tartalmáz egy másolatot minden rekordból amely szerepel R2 ban egy vagy többször. Formája: R1 := TAU L (R2). L lista az R2 nek attributmai egy csoportja R1 a rekordoknak a listája tárolva először az első L-es attribútum alapján, utána a második L-es attribútum alapján, és igy tovább. Véletlenszerűen szét bontja a kapcsolatokat. TAU az egyetlen operator amelynek az eredménye nem halmaz sem táska. DELTA(R) = A B 35 36 6
Szortirozás Kiterjesztett vetítés 5 2 TAU B (R) = [(5,2), (1,2), (3,4)] A PROJ operator felhasználásával lehet engedni a lista L hogy tartalmaz véletlen kifejezések az attribútumokat felhasználva. Matematikai attribútumokat alkalmazhatók (A+B). Duplikált előfordulása ugyan az egy attribútum megengedett. 37 38 Kiterjesztett vetítés PROJ A+B,A,A (R) = A+B A1 A2 3 1 1 7 3 3 Külső összekapcsolás Ha a cél összekapcsolni R és S relációk C keresztül (R JOIN C S). Az R-nek a rekordja amelynek nincs S-es rekord amellyel tud vele kapcsolni Logos rekordnak nevezik. Ugyanaz S esetén. Az Outerjoin tartja a logos rekordok kiegészítve őket egy Null-val a kapcsolási eredmény számításnál. 39 40 Külső összekapcsolás S = ( B C ) 2 3 4 5 6 7 Az (1,2) rekord összekapcsol a (2,3) rekorddal, de a maradék kettő rekord nem kapcsol össze. R OUTERJOIN S = A B C 3 4 5 NULL NULL 6 7 7.6. Aggregációs operatorok: Aggregációs operatorok nem minősülnek reláció algebrának. Igy csak alkalmazhatók (egész) oszlopokra produkálva egyetlen egy eredményt. A legfontosabbak: Sum (összegezni), Avg (átlagolni), Count (számolni), Min (minimális érték), Max )maximális érték). SUM(A) = 7 COUNT(A) = 3 MAX(B) = 4 AVG(B) = 3 1 3 3 2 41 42 7
7.7. Csoportosítási operatorok: Formája: R1 := GAMMA L (R2). L elemek lista amely: Vagy egyedi csoportosítási attribútumok Vagy aggregáció operator Agg(A) ahol A egy attribútum. Csoportosíts R az összes attribútum lista alapján L-ben. Avagy alkot egy csoport minden érték listának ezeknek az attribútumoknak R-ben. Minden csoport kell számolni az AGG(A) minden aggregáció az L listán. Az eredmény fog tartalmazni egy rekord minden csoportnak: A csoportosítási attribútumok Az csoportjuk aggregációk 7.7. Csoportosítási operatorok: R = ( A B C ) 3 4 5 6 5 Előszor, csoportosítj R A és B alapján: A B C 3 5 4 5 6 GAMMA A,B,AVG(,AVG(C) (R) =?? Másodszor, C átlagolása minden csoportban: A B AVG(C) 4 4 5 6 43 44 8