230 likes | 377 Views
Databázové systémy. Přednáška č. 5. Relační algebra - příklad. STUDENT. Relační algebra - příklad. Jaké specializace studenti studují? spec (STUDENT). Relační algebra - příklad. Kteří studenti nastoupili na fakultu v roce 1996? rok_nást= ‘ 1996 ’ (STUDENT). Relační algebra - příklad.
E N D
Databázové systémy Přednáška č. 5
Relační algebra - příklad STUDENT
Relační algebra - příklad • Jaké specializace studenti studují? spec(STUDENT)
Relační algebra - příklad • Kteří studenti nastoupili na fakultu v roce 1996? rok_nást=‘1996’(STUDENT)
Relační algebra - příklad • Jaké příjmení mají studenti, kteří nastoupili na fakultu v roce 1996? příjmenírok_nást=‘1996’(STUDENT)
Relační algebra - příklad KREDITY
Relační algebra - příklad • Jaké jsou studijní výsledky jednotlivých studentů? STUDENT natural join KREDITY
Relační algebra - příklad • Kteří studenti si zapsali předmět „PSY1“? příjmení,jméno,speczkratka=‘PSY1’(STUDENT natural join KREDITY)
Relační kalkul • 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ý
Relační kalkul 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)
Relační kalkul • 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 1 N kontroluje Pracuje v Garantuje N N viděl N 1 N Nemovitost Klient N Má pronajatu Pobočka 1 N N Vlastní 1 Nabízí 1 Vlastník
Relační kalkul • 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
Relační kalkul • Na určení toho, kolika instancí se predikát týká, se používají dva kvantifikátory: • Existenční kvantifikátor („there exists“) • Univerzální kvantifikátor („for all“)
Relační kalkul • 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ě
Relační kalkul • 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
Relační kalkul • N-ticové proměnné se nazývají volné proměnné. Když jsou kvalifikovány pomocí nebo nazývají se vázané proměnné.
Relační kalkul • 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}
Relační kalkul • 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’}
Relační kalkul • 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.c-zam=N.c_zam))} nebo: {Z.prijmeni,Z.jmeno | N ((Z.c-zam=N.c_zam))}
Relační kalkul • 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.c-k=P.c_k) N (P.c_nem = N.c_nem N.mesto=‘Praha’)}
Relační kalkul • Doménově-orientovaný relační kalkul • Používá proměnné, které nabývají hodnoty z domén • Když P(d1, d2, … dn) je predikát s proměnnými d1, d2, … dn, potom {d1, d2, … dn | P(d1, d2, … dn)} vyjadřuje množinu všech doménových proměnných d1, d2, … dn, pro které je pravdivý predikát P(d1, d2, … dn)
Relační kalkul • 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}