Presentation is loading. Please wait.

Presentation is loading. Please wait.

Časť 1 Relačná algebra Slavomír Stramba 2003.

Similar presentations


Presentation on theme: "Časť 1 Relačná algebra Slavomír Stramba 2003."— Presentation transcript:

1 Časť 1 Relačná algebra Slavomír Stramba 2003

2 Čo je relačná algebra ? Relačná algebra reprezentuje manipulačnú súčasť relačného modelu. Na reprezentáciu relácií a manipuláciu s dátami relačná algebra obsahuje 8 operátorov : Selection (selekcia) Projection (projekcia) Product (karteziánsky súčin) Union (množinové zjednotenie) Difference (množinový rozdiel) Intersection (množinový prienik) Join (spojenie) Divide (podiel) Tieto operácie pracujú s reláciami a ich výsledkom je taktiež relácia. Prvých 5 operácii sú základné operácie, ostatné môžu byť definované pomocou nich. Relačné operácie môžu byť kombinované a navzájom vnorené. Relačná algebra je vyššou symbolickou reprezentáciou. Znalosť relačnej algebry vedie k lepšiemu pochopeniu toho, čo vykoná SRBD, keď obdrží SQL požiadavku. Relačná algebra vysvetľuje, ako sú získavané dáta z jednotlivých tabuliek. To nám môže poslúžiť na zistenie najrýchlejšieho (najefektívnejšieho) spôsobu zadania požiadavky, čo nám môže pomôcť pri optimalizácii požiadaviek.

3 Selekcia (horizontálna reštrikcia)
Význam: vyberie špecifikované riadky (tie, pre ktoré ma podmienka operácie hodnotu true) Formát: SELECTION table WHERE rowcondition GIVING newtable rowcondition : jednoduchá alebo zložená podmienka môže obsahovať relačné (napr. =, >, >=) alebo logické operátory

4 Projekcia (vertikálna reštrikcia)
Význam : vyberie z tabuľky špecifikované stĺpce Formát : PROJECT table OVER (field-list) GIVING newtable    Príklad : PROJECT PART OVER (PARTNUMB, PARTDESC) GIVING ANSWER

5 Join (vertikálna rekonštrukcia)
Používa sa na kombinovanie dvoch relácií na základe bežného atribútu obsahujucého rovnaké hodnoty. Formát : JOIN table1 WITH table2 WHERE table1.field = table2.field GIVING newtab    Príklad : JOIN CUSTOMER WITH SLSREP WHERE CUSTOMER.SLSRNUMB = SLSREP.SLSRNUMB GIVING ANSWER Typy Join-u : Equijoin – obsahuje podmienku na rovnosť   Natural – obsahuje len jednu kópiu spoločného atribútu   Theta - operácia JOIN s všeobecnou podmienkou spájania Podmienka spájania má formu: <podmienka> AND <podmienka> AND ... AND <podmienka> kde každá podmienka má tvar Ai  Bj, Ai je atribútom R a Bj je atribútom S, Ai aj Bj majú rovnakú doménu a  je jeden z porovnávacích operátorov {=, <, , , ,  }.   Implementácia v SQL: THETA JOIN: SELECT * FROM <tabuľka1>, <tabuľka2> WHERE <obecná_podmienka> EQUIJOIN: SELECT * FROM <tabuľka1>,<tabuľka2> WHERE <podmienka na rovnosť> NATURAL JOIN: SELECT <zoznam atribútov> FROM <tabuľka1>,<tabuľka2> WHERE <podmienka na rovnosť>

6 Union (zjednotenie) Formát : UNION table1 WITH table2 GIVING newtable
Význam : vyberá všetky riadky z prvej a druhej tabuľky ( tabuky musia byť kompatibilné na túto operáciu – musia obsahovať rovnaký počet stĺpcov rovnakého dátového typu a dĺžky ) Formát : UNION table1 WITH table2 GIVING newtable Príklad : Partition CUSTOMERS into NORTHWEST and NORTHEAST, potom UNION NORTHWEST WITH NORTHEAST GIVING NORTH vráti všetkých zákazníkov zo severu

7 Intersection (prienik)
Význam : vráti riadky, ktoré patria do obidvoch tabuliek Formát : INTERSECT table1 WITH table2 GIVING newtable Príklad : INTERSECT TABLE1 WITH TABLE2 GIVING ANSWER

8 Difference (rozdiel) Význam : vráti riadky, ktoré patria do prvej tabuľky a nepatria do druhej tabuľky ( tabuľky musia byť union-kompatibilné) Formát : SUBTRACT tableB FROM tableA GIVING newtable Príklad : SUBTRACT TABLE2 FROM TABLE1 GIVING ANSWER

9 Product (karteziánsky súčin)
Význam : spáruje každý riadok s prvej tabuľky s každým riadkom z druhej tabuľky (iný názov : Cartesian Product) Formát : PRODUCT table1 WITH table2 GIVING newtable Príklad : Ak computer má n riadkov a employee má m riadkov, potom PRODUCT computer WITH employee GIVING ANSWER bude mať n * m riadkov

10 Formát : DIVIDE table1 BY table2 GIVING newtable
Význam : z prvej tabuľky vyberie tie riadky, ktoré zodpovedajú všetkým riadkom v druhej tabuľke Formát : DIVIDE table1 BY table2 GIVING newtable

11 Ďalšie relačné operácie (1)
Nektoré bežne používané dotazy nemôžu byť vyjadrené štandardnými operáciami relačnej algebry. Preto sa zavádzajú dodatočné operácie, ktoré zvyšujú vyjadrovaciu schopnosť relačnej algebry.    Agregačné funkcie Sú operácie, ktoré sa vykonávajú nad množinou záznamov vybraných z databázy. Medzi tieto funkcie patria: ·        SUM - súčet všetkých vybraných (selektovaných) hodnôt atribútu ·        AVERAGE - priemerná hodnota všetkých vybraných (selektovaných) hodnôt atribútu ·        MAXIMUM - maximálna hodnota atribútu zo všetkých vybraných (selektovaných) hodnôt ·        MINIMUM - minimálna hodnota atribútu zo všetkých vybraných (selektovaných) hodnôt ·        COUNT - počet vybraných (selektovaných) záznamov (n-tíc) Ďalšou častou požiadavkou je združenie záznamov podľa hodnoty niektorých jeho atribútov a aplikovanie agregačných funkcií na nezávisle na každú skupinu Všeobecne operáciu s použitím funkcie môžeme zapísať: <atribúty pre združenie>  <zoznam funkcií> (<názov relácie>) Ak nie sú špecifikované žiadne atribúty združenia, potom je funkcia aplikovaná na hodnoty atribútu nad všetkými n-ticami.

12 Ďalšie relačné operácie (2)
Je potrebné zdôrazniť, že výsledok aplikácie agregovanej funkcie je relácia a nie skalárna hodnota, a to dokonca i vtedy, keď má len jednu hodnotu ! Príklad: 1.       <ČÍSLO_KATEDRY  COUNT <EVC, AVERAGE <PLAT (<ZAMESTNANEC) 2.        COUNT <EVC, AVERAGE <PLAT (<ZAMESTNANEC) Výsledkom prvej operácie je množina n-tíc, z ktorých každá obsahuje počet pracovníkov a ich priemerný plat. Výsledkom druhej operácie je jediná n-tica, ktorá obsahuje celkový počet zamestnancov a ich priemerný plat. Príklad: Majme reláciu deti: Výsledky: Dotaz Výsledok č. 1 9 č. 2 10 OCR MENO PRIEZVISKO VEK 1 Jana Holá 4 Ján Holý 8 Jan 5 2 Jozef Černý 3 Pažinka 10 Danko 9 Peter Melánia Pažinková Lenka 6 OCR POCET_DETI VEK 1 3 8 2 6 10 4 9 1 SELECT count(*) FROM deti 2 SELECT max(vek) FROM deti 3 SELECT ocr,count(*) AS pocet_deti FROM deti GROUP BY ocr 4 SELECT max(vek) FROM deti GROUP BY ocr

13 Príklady vyjadrenia SQL požiadaviek pomocou operácií relačnej algebry

14 Query processing architecture

15 Query optimizer Využíva heuristické algoritmy na ohodnotenie výrazov relačnej algebry. Zahŕňa : odhad ceny výrazu relačnej algebry transformovanie výrazu relačnej algebry na ekvivalentné výrazy voľbu prístupových ciest (index) na vyhodnocovanie podvýrazov neoptimalizuje, len sa snaží nájsť výhodné vyhodnocovacie stratégie nájdenie optimálneho plánu môže byť veľmi náročné

16 Transformačné pravidlá (1)
rozbitie komplexných selekcií na jednoduché : Cond1Cond2 (R)  Cond1 (Cond2 (R) ) rozbitie projekcie na úrovne : attr (R)   attr ( attr (R)), AK attr  attr komutatívnosť selekcie a projekcie attr (Cond(R))  Cond ( attr (R)), ak attr  všetkých atribútov v Cond Join komutatívnosť: R S  S R Join asociatívnosť: R (S T)  (R S) T

17 Transformačné pravidlá (2)
Cond (R  S)  R Cond S Cond relates attributes of both R and S Reduces size of intermediate relation since rows can be discarded sooner Cond (R  S)  Cond (R)  S Cond involves only the attributes of R Reduces size of intermediate relation since rows of R are discarded sooner attr(R  S)  attr(attr (R)  S), if attributes(R)  attr  attr reduces the size of an operand of product C1 C2 C3 (R  S)  C1 (C2 (C3 (R  S) ) )  C1 (C2 (R)  C3 (S) )  C2 (R) C1 C3 (S) assuming C2 involves only attributes of R, C3 involves only attributes of S, and C1 relates attributes of R and S

18 Koniec Viacej informácii o optimalizáciI a súvisiacich veciach sa môžete dozvedieť zo zdrojov uvedených na hlavnej stránke.


Download ppt "Časť 1 Relačná algebra Slavomír Stramba 2003."

Similar presentations


Ads by Google