Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Databázové systémy Relační algebra. Úvod Relační algebra a Relační kalkul – teoretická východiska dotazovacích jazyků  Relační algebra relační algebra.

Podobné prezentace


Prezentace na téma: "Databázové systémy Relační algebra. Úvod Relační algebra a Relační kalkul – teoretická východiska dotazovacích jazyků  Relační algebra relační algebra."— Transkript prezentace:

1 Databázové systémy Relační algebra

2 Úvod Relační algebra a Relační kalkul – teoretická východiska dotazovacích jazyků  Relační algebra relační algebra je nástroj pro manipulaci s relacemi, je to jazyk, který pracuje s celými relacemi, operátory relační algebry se aplikují na relace a výsledkem jsou opět relace  Relační kalkul vychází z predikátové logiky 1.řádu v relačních databázích se vyskytuje ve dvou formách  n-maticový relační kalkul  doménový relační kalkul

3 Definice relačního datového modelu Mějme množiny D 1,D 2...D n. Z každé vybereme 1 prvek tzn. vytvoříme uspořádanou n-tici. Kartézský součin D 1 xD x.... D n je množina všech posloupností. Z hlediska databázového systému se množiny D označují jako množiny hodnot atributů, tvz. domény.  Odlišnosti databázové od matematické relace relace je vybavena pomocnou strukturou, které se říká schéma relace, schéma relace se skládá ze jména relace a jmen atributů a domén prvky domén, ze kterých se berou jednotlivé komponenty prvků relace jsou atomické (dále nedělitelné) hodnoty, (tomuto omezení se říká 1.normální forma relací -1NF)

4 Dotazování v relačním modelu  Smyslem každé databáze je poskytovat data – ta jsou získávána formulováním dotazů na databázi dotaz je formulován v dotazovacím jazyce dotazovací jazyk musí být natolik silný, aby umožnil získat libovolnou (smysluplnou) podmnožinu dat z relací (tabulek) každý dotazovací jazyk využívá symbolů popisujících schémata relací jako základní konstrukty jazyka

5 Relační algebra Je to množina operací (unárních, či binárních) na relacích se schématy, jejichž výsledkem je opět relace (a její schéma)  pro úplnost budeme k relaci R* vždy uvažovat i její schéma R(A) (název a (typované) atributy), tj. dvojici  výsledek operace lze opět použít jako operand jiné operace, tj. takto lze zkonstruovat složitější operaci/dotaz Přejmenování atributů -(unární) R* =  pouze se přejmenují atributy schématu, s daty se nic neděje (tj. výsledkem je stejná relace a stejné schéma, pouze příslušné atributy mají jiná jména)

6 Relační algebra  Množinové operace (binární) Sjednocení  = Průnik  = Rozdíl – = Kartézský součin  =  Sjednocení, průnik a rozdíl vyžadují kompatibilní schémata obou operandů.  Kartézský součin má vlastní schéma, složené z atributů obou schémat.  Pokud budeme chtít výsledek uložit použijeme konstrukci NazevVysledku :=  Pokud je schéma jasné z kontextu, budeme používat zjednodušené značení R 1 operace R 2

7 Příklad – množinové operace FILM(JMENO_FILMU, JMENO_HERCE) AMERICKE_FILMY = {(‘Titanic’, ‘DiCaprio’), (‘Titanic’, ‘Winslet’), (‘Top Gun’, ‘Cruise’)} NOVE_FILMY = {(‘Titanic’, ‘DiCaprio’), (‘Titanic’, ‘Winslet’), (‘Samotáři’, ‘Macháček’)} CESKE_FILMY = {(‘Pelíšky’, ‘Donutil’), (‘Samotáři’, ‘Macháček’)} Dotazy: VSECHNY_FILMY := AMERICKE_FILMY  CESKE_FILMY = {(‘Titanic’, ‘DiCaprio’), (‘Titanic’, ‘Winslet’), (‘Top Gun’, ‘Cruise’), (‘Pelíšky’, ‘Donutil’), (‘Samotáři’, ‘Macháček’)} STARE_AMERICKE_A_CESKE_FILMY := (AMERICKE_FILMY  CESKE_FILMY) – NOVE_FILMY ={(‘Top Gun’, ‘Cruise’), (‘Pelíšky’, ‘Donutil’)} NOVE_CESKE_FILMY := NOVE_FILMY  CESKE_FILMY = {(‘Samotáři’, ‘Macháček’)}

8 Relační algebra Projekce  umožňuje potlačit atributy v relaci,  umožňuje přejít z relace o n sloupcích na relaci o p sloupcích, kde p

9 Relační algebra  Selekce (Restrikce) - vybrání nových řádků z původní relace pomocí logických spojek Unární operace = výběr těch prvků u relace R*, které splňují logickou podmínku  (u) podmínka je zadána Boolským výrazem (tj. pomocí spojek and, or, not)

10 Relační algebra  Spojení (join) - spojení dvou relací vytvoří třetí relaci, výsledná relace obsahuje všechny kombinace které vyhovují dané podmínce.  Podmínka vyjadřuje: vztah mezi dvěma relacemi, druhy spojení rovnost, nerovnost, inkluze (spojení s tím rozdílem že do výsledné relace se přidají i nespojené řádky z první (ev. z druhé relace, ev. z obou relací), příslušné atributy, které nejsou vyplněny, nabývají hodnoty NULL. Binární operace  = spojení prvků relace přes stejné hodnoty atributů sdílených mezi A a B pokud A  B = , přirozené spojení je vlastně kartézský součin (spojuje se přes prázdnou množinu, tj. libovolně – „všechno se vším“) lze vyjádřit pomocí kartézského součinu, selekce a projekce

11 Příklad – selekce, projekce, přir.spojení FILM(JMENO_FILMU, JMENO_HERCE) HEREC(JMENO_HERCE, ROK_NAROZENI) FILMY = {(‘Titanic’, ‘DiCaprio’), (‘Titanic’, ‘Winslet’), (‘Top Gun’, ‘Cruise’)} HERCI = {(‘DiCaprio’,1974), (‘Winslet’,1975), (‘Cruise’, 1962), (‘Jolie’, 1975)} Projekce: HERECKE_ROCNIKY := FILMY_HERCI[ROK_NAROZENI] = {(1974), (1975), (1962)} Selekce: MLADI_HERCI := HERCI(ROK_NAROZENI > 1970) [JMENO_HERCE] = {(‘DiCaprio’), (‘Winslet’), (‘Jolie’)} Spojení (přirozené): FILMY_S_HERCI := FILMY  HERCI = {(‘Titanic’, ‘DiCaprio’, 1974), (‘Titanic’, ‘Winslet’, 1975), (‘Top Gun’, ‘Cruise’, 1962)}

12 Zachování referenční integrity  RESTRICT - při mazání a aktualizaci v nezávislém entitním typu se restriktivně vyžaduje, aby v podřízeném entitním typu byla nejdříve vymazána nebo aktualizována svázána instance. Jinak mazání resp. aktualizace v nadřazeném entitním typu je zakázáno.  CASCADE způsobí aktualizace resp. mazání v podřízeném ent. typu, resp. mazání v typu nadřazeném. Tento typ může způsobit kaskádovité mazání velkého počtu instancí.  SET NULL - nastavení cizího klíče na NULL (nejde pokud je to zároveň PK)

13 Vnější spojení Dosud uvedené operace spojení nazýváme vnitřní spojení (inner join) Vnější spojení využívá doplnění nulových hodnot k těm prvkům, které nebylo možno „normálně“ spojit (tj. neobjevily se ve vnitřním spojení):  Levé vnější spojení (left outer join) R  L S = (R  S)  (R  (NULL, NULL,...))  Pravé vnější spojení (right outer join) R  R S = (R  S)  ((NULL, NULL,...)  S) kde R, resp. S obsahují n-tice nespojitelné s S, resp. R  Plné vnější spojení (full outer join) R  F S = (R  L S)  (R  R S)

14 Příklad – všechny typy spojení LetSpolečnostDestinacePočet cestujících OK251CSANew York276 LH438LufthansaStuttgart68 OK012CSAMilano37 AC906Air CanadaTorronto116 KL1245KLMAmsterdam130 LetadloKapacita Boeing Airbus A Airbus A LetSpolečnostDestinacePočet cest.LetadloKapacita OK251CSANew York276NULL LH438LufthansaStuttgart68Boeing LH438LufthansaStuttgart68Airbus A OK012CSAMilano37Boeing AC906Air CanadaTorronto116Airbus A KL1245KLAmsterdam130Airbus A NULL Airbus A vnitřní spojení plné vnější spojení levé vnější spojení pravé vnější spojení levé/pravé polospojení (bez prvního a posledního řádku + po odstranění duplicit) Dotaz: Kterými letadly mohou letět všichni cestující v daném letu tak, aby počet neobsazených míst v letadle byl menší než 200? Vnitřní spojení – chceme právě ty lety a ta letadla, která vyhovují danému kritériu: Lety [Lety.PocetCestujich  Letadla.Kapacita AND Lety.PocetCestujich > Letadla.Kapacita - 200] Letadla Levé/pravé/plné vnější spojení – chceme vedle letů-letadel specifikovaných vnitřním spojením taky ty lety a ta letadla, která danému kritériu nevyhovují ani v jednom případě. tabulka Letadla tabulka Lety

15 Vyhodnocení dotazu v relační algebře Logické pořadí vyhodnocení operací v dotazu :  pro vyhodnocení operace se musí nejprve vyhodnotit její operandy – vede to k průchodu syntaktickým stromem do hloubky  např. (...((S1 op1 S2) op2 (op4 S3)) op5 S4 op6 S5)  konstrukce stromu (parsování dotazu) se řídí prioritou operací, závorkami, případně konvencí levé/pravé asociativity Precedence operací (priorita) 1. projekceR[] (nejvyšší) 2. selekceR() 3. kart. součin  4. spojení, dělení ,  5. rozdíl– 6. sjednocení, průnik ,  (nejnižší)

16 Příklad – vyhodnocení dotazu Do kterých destinací může přiletět Boeing ? (tak, aby se cestující daného letu vešli do letadla) (Lety[Destinace, Pocet_cestujicich] [Pocet_cestujicich <= Kapacita] (Letadla(Letadlo = ‘Boeing*’)[Kapacita]))[Destinace] LetSpolečnostDestinacePočet cestujících OK251CSANew York276 LH438LufthansaStuttgart68 OK012CSAMilano37 AC906Air CanadaTorronto116 KL1245KLMAmsterdam130 LetadloKapacita Boeing Airbus A Airbus A projekce [Destinace,Pocet_cestujicich] selekce (Letadlo = ‘Boeing*’) projekce [Kapacita] spojení [Pocet_cestujicich <= Kapacita] projekce [Destinace] DestinacePočet cestujících New York276 Stuttgart68 Milano37 Torronto116 Amsterdam130 LetadloKapacita Boeing DestinacePočet cestujícíchKapacita Stuttgart68106 Milano37106 Kapacita 106 Destinace Stuttgart Milano

17 Ekvivalentní výrazy Tentýž dotaz lze vyjádřit různými výrazy:  nahradíme-li „redundantní“ operace základními (např. dělení, přirozené spojení)  využijeme-li komutativity, distributivity a asociativity (některých) operací Selekce: kaskáda selekcí: (...((R(  1 ))(  2 ))...)(  n ) ≡ R(  1   2 ...   n ) komutativita selekcí: (R(  1 ))(  2 ) ≡ (R(  2 ))(  1 ) Projekce: kaskáda projekcí: (...(R[A 1 ])[A 2 ])...)[A n ] ≡ R[A n ], kde A n  A n-1 ...  A 2  A 1 Spojení a kart. součin komutativita: R  S ≡ S  R, R [  ] S ≡ S [  ] R, atd. asociativita: R  (S  T) ≡ (R  S)  T, R [  ] (S [  ] T) ≡ (R [  ] S) [  ] T, atd. kombinace, např: R [  ] (S [  ] T) ≡ (R [  ] T) [  ] S

18 Příklad – dělení relací Které společnosti létají do všech destinací? Lety[Společnost, Destinace]  Lety[Destinace] LetSpolečnostDestinacePočet cestujících OK251CSANew York276 LH438LufthansaStuttgart68 OK012CSAMilano37 LH123LufthansaTorronto132 AC906Air CanadaTorronto116 LH123LufthansaMilano69 AC906Air CanadaStuttgart56 LH19LufthansaNew York62 KL24KLMMilano115 LH52LufthansaAmsterdam164 KL1245KLMAmsterdam130 projekce [Společnost, Destinace] dělení projekce [Destinace] SpolečnostDestinace CSANew York LufthansaStuttgart CSAMilano LufthansaTorronto Air CanadaTorronto LufthansaMilano Air CanadaStuttgart LufthansaNew York KLMMilano LufthansaAmsterdam KLMAmsterdam Destinace New York Stuttgart Milano Torronto Amsterdam Společnost Lufthansa

19 Relační kalkul Využití aparátu predikátové logiky 1. řádu pro dotazování  rozšíření o „databázové“ predikáty, jejichž dvojí forma definuje doménový kalkul (DRK) – pracuje s daty na úrovni atributů n-ticový kalkul (NRK) – pracuje s daty na úrovni n-tic (prvků relace/řádků)  výsledkem dotazu v DRK / NRK je opět relace (a její schéma). Formulací kalkulu se vlastně provádí logická analýza dotazu. Prvky jazyka: termy – proměnné a konstanty predikátové symboly – jednak standardní binární predikáty {, =, , ≤,  }, jednak predikáty rozlišující DRK a NRK formule  atomické – R(t 1, t 2,...), kde R predikátový symbol a t i je term  složené – výrazy, kterými lze kombinovat atomické/složené formule logickými spojkami , , , ,  kvantifikátory:  (existenční - EXISTS),  (všeobecný-FORALL)

20 Příklad - relační kalkul Mějme relace: KNIHKUPEC(JMENO_K,ADRESA...) KNIHOVNA(NAZEV_K,...) DODAVA(JMENO_K,NAZEV_K,...) Najdi jména a adresy knihkupců, kteří dodávají knihy do všech knihoven. Zapsáno v n-ticovém relačním kalkulu: x.JMENO_K, x.ADRESA where KHIHKUPEC(X) and forall y(KNIHOVNA(y) implies exists z(DODAVA(z) z.JMENO_K=x.JMENO_K and z.NAZEV_K=y.NAZEV_K)) Zapsáno pomocí existenčního kvantifikátoru: x.JMENO_K, x.ADRESA where KNIHKUPEC(x) and not exits y(KNIHOVNA(y) imlies not exists z(DODAVA(z) z.JMENO_K=x.JMENO_K and z.NAZEV_K=y.NAZEV_K))

21 Dotazovací jazyky Dva typy:  Navigační (procedurální), při formulaci dotazu je třeba zadat algoritmus jako posloupnost operací prováděných nad relacemi, který zajistí výběr příslušných dat. Navigační jazyky jsou založeny na relační algebře.  Specifikační (neprocedurální - deklarativní) - požadavky na výběr se zadávají jako prediká, charakterizující výslednou relaci. Výsledek výběru dat je relace, jejíž n-tice splňují podmínky výběru uvedené ve formuli. Specifikační jazyky jsou založeny na relačním kalkulu. Dotazovací jazyk, kterým lze vyjádřit všechny konstrukce relační algebry (tj. všechny dotaz, které lze popsat relační algebrou) se nazývá relačně úplný.


Stáhnout ppt "Databázové systémy Relační algebra. Úvod Relační algebra a Relační kalkul – teoretická východiska dotazovacích jazyků  Relační algebra relační algebra."

Podobné prezentace


Reklamy Google