Databázové systémy Přednáška č. 5
Relační algebra - příklad STUDENT rodné_č příjmení jméno rok_nást spec 7805160000 Nový Petr 1996 INMA 7756123333 Hrozná Jana 1995 INFY 7861122222 Novotná Ivana 1996 INZT 7506134444 Dlouhý Jan 1995 INMA 7602156666 Petřík Tomáš 1996 INMA
Relační algebra - příklad Jaké specializace studenti studují? spec(student) spec INMA INFY INZT
Relační algebra - příklad Kteří studenti nastoupili na fakultu v roce 1996? rok_nást= 1996 (STUDENT) rodné_č příjmení jméno rok_nást spec 7805160000 Nový Petr 1996 INMA 7861122222 Novotná Ivana 1996 INZT 7602156666 Petřík Tomáš 1996 INMA
Relační algebra - příklad Jaké příjmení mají studenti, kteří nastoupili na fakultu v roce 1996? příjmení rok_nást= 1996 (STUDENT) příjmení Nový Novotná Petřík
Relační algebra - příklad KREDITY rodné_č zkratka dat_zap dat_zk známka 7805160000 PSY1 15.12.97 15.12.97 1 7805160000 PSY2 7805160000 MIEK1 20.1.98 21.1.98 2 7756123333 ZMNG1 23.5.97 28.6.97 1 7756123333 IDBS1 15.3.97
Relační algebra - příklad Jaké jsou studijní výsledky jednotlivých studentů? STUDENT natural join KREDITY rodné_č příjmení jméno rok_n spec zkratka dat_zap dat_zk zn 7805160000 Nový Petr 1996 INMA PSY1 15.12.97 15.12.97 1 7805160000 Nový Petr 1996 INMA PSY2 7805160000 Nový Petr 1996 INMA MIEK1 20.1.98 21.1.98 2 7756123333 Hrozná Jana 1995 INFY ZMNG1 23.5.97 28.6.97 1 7756123333 Hrozná Jana 1995 INFY IDBS1 15.3.97
Relační algebra - příklad Kteří studenti si zapsali předmět PSY1? příjmení,jméno,spec zkratka= PSY1 (STUDENT natural join KREDITY) příjmení jméno spec Nový Petr INMA
Formální neprocedurální jazyk Dotaz v relačním kalkulu specifikuje co se má zjistit a ne jak to zjistit Založený na druhu symbolické logiky zvané predikátový kalkul V databázovém prostředí má dvě formy: n-ticově-orientovaný doménově-orientovaný
Predikát Pravdivostní funkce s argumenty P je predikát, pak {x P(x)} je množina všech x, pro které P dává pravdivou hodnotu Spojení pomocí operátorů: (AND) (OR) (NOT)
N-ticově orientovaný relační kalkul Hledá n-tice, pro které je predikát pravdivý Založen na použití n-ticových proměnných (ta nabývá hodnot z dané relace tj. proměnná, která má jako přípustné hodnoty n-tice relace) Obor hodnot n-ticové proměnné specifikujeme následovně: RANGE OF Z IS Zaměstnanec {Z P(Z)} určuje všechny Z, pro které platí P(Z)
Zaměstnanec N N 1 kontroluje Pracuje v Garantuje 1 N N N viděl N Pobočka 1 Nabízí Nemovitost N N N Vlastní 1 Má pronajatu Klient 1 Vlastník
Najdi všechny údaje o zaměstnancích s platem vyšším než 15 000,- Kč: RANGE OF Z IS Zamestnanec {Z Z.plat > 15000} Z.plat znamená hodnotu atributu plat pro n-tici Z
Na určení toho, kolika instancí se predikát týká, se používají dva kvantifikátory: Existenční kvantifikátor Univerzální kvantifikátor ( there exists ) ( for all )
RANGE OF P IS Pobočka P (P.č_pob=Z.č_pob P_mesto= London ) znemená: Existuje n-tice pobočky, která má totéž č_pob jako č_pob aktuální n-tice Z a má sídlo v Londýně
P (P.mesto = Paris ) tj. pro všechny n-tice pobočky, adresa není v Paříži P (P.mesto = Paris ) tj. neexistuje pobočka v Paříži
N-ticové proměnné se nazývají volné proměnné. Když jsou kvalifikovány pomocí nebo nazývají se vázané proměnné.
Vyjmenujte managery, kteří mají plat vyšší než 25 000,- Kč. RANGE OF Z IS Zaměstnanec {Z.prijmeni,Z.jmeno Z.prac_zar = Manager Z.plat > 25000}
Vyber zaměstnance, kteří se starají o nemovitost v Praze RANGE OF Z IS Zamestnanec RANGE OF N IS Nemovitost {Z N (N.c_zam=Z.c_zam N.mesto= Praha }
Najdi jména zaměstnanců, kteří se nestarají o žádnou nemovitost RANGE OF Z IS Zamestnanec RANGE OF N IS Nemovitost {Z.prijmeni,Z.jmeno ( N (Z.czam=N.c_zam))} nebo: {Z.prijmeni,Z.jmeno N ( (Z.czam=N.c_zam))}
Zobraz jména a komentáře všech nájemců, kteří si prohlédli nemovitost v Praze RANGE OF K IS Klient RANGE OF P IS Prohlidka RANGE OF N IS Nemovitost {K.prijmeni,K.jmeno,P.pozn P (K.ck=P.c_k) N (P.c_nem = N.c_nem N.mesto= Praha )}
Doménově-orientovaný relační kalkul Používá proměnné, které nabývají hodnoty z domén Když P(d 1, d 2, d n ) je predikát s proměnnými d 1, d 2, d n, potom {d 1, d 2, d n P(d 1, d 2, d n )} vyjadřuje množinu všech doménových proměnných d 1, d 2, d n, pro které je pravdivý predikát P(d 1, d 2, d n )
Najdi jména managerů, kteří mají plat vyšší než 25 000,- Kč {prijmeni, jmeno prac-zar, plat (Zamestnanec(prijmeni,prac_zar,plat) prac-zar= Manager plat > 25000}