Databázové systémy Relační algebra, kalkuly http://www.ksi.mff.cuni.cz/~mlynkova/A7B36DBS/indexCV.html Jakub Klímek, Irena Mlýnková, Martin Nečaský Databázové systémy Relační algebra, kalkuly
Příklad: RA 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)} HERECKE_ROCNIKY := HERCI[ROK_NAROZENI] = {(1974), (1975), (1962)} MLADI_HERCI := HERCI(ROK_NAROZENI > 1970) [JMENO_HERCE] = {(‘DiCaprio’), (‘Winslet’), (‘Jolie’)} FILMY_S_HERCI := FILMY HERCI = {(‘Titanic’, ‘DiCaprio’, 1974), (‘Titanic’, ‘Winslet’, 1975), (‘Top Gun’, ‘Cruise’, 1962)} Relační algebra, kalkuly http://www.ksi.mff.cuni.cz/~mlynkova/A7B36DBS/indexCV.html
Příklad: RA - dělení Ve kterých filmech hráli všichni herci? FILM(JMENO_FILMU, JMENO_HERCE) HEREC(JMENO_HERCE, ROK_NAROZENI) Ve kterých filmech hráli všichni herci? HRALI_VSICHNI := FILMY HERCI[JMENO_HERCE]) = {(‘Titanic’)} Relační algebra, kalkuly http://www.ksi.mff.cuni.cz/~mlynkova/A7B36DBS/indexCV.html
Příklad: DRK Ve kterých filmech hráli všichni herci? FILM(JMENO_FILMU, JMENO_HERCE) HEREC(JMENO_HERCE, ROK_NAROZENI) Ve kterých filmech hráli všichni herci? {(f) | FILM(f) h (HEREC(h) FILM(f, h))} pokud není jasné, kterým sloupcům proměnné odpovídají, raději v zápisu: {(f) | FILM(JMENO_FILMU:f) h (HEREC(JMENO_HERCE:h) FILM(JMENO_FILMU:f, JMENO_HERCE:h))} Který herec je nejmladší? {(h,r) | HEREC(h,r) h2 r2 (HEREC(h2,r2) h ≠ h2) r2 > r} nebo {(h,r) | HEREC(h,r) h2 (HEREC(h2)r2(HEREC(h2,r2) h ≠ h2 r2 > r))} Které dvojice herců se sešly alespoň v jednom filmu? {(h1, h2) | HEREC(h1) HEREC(h2) h1 ≠ h2 f (FILM(f, h1) FILM(f, h2))} Relační algebra, kalkuly http://www.ksi.mff.cuni.cz/~mlynkova/A7B36DBS/indexCV.html
Příklad: NRK Dvojice stejně starých herců hrajících ve stejném filmu. FILM(JMENO_FILMU, JMENO_HERCE) HEREC(JMENO_HERCE, ROK_NAROZENI) Dvojice stejně starých herců hrajících ve stejném filmu. {h1, h2 | HEREC(h1) HEREC(h2) h1.ROK_NAROZENI = h2.ROK_NAROZENI f1, f2 FILM(f1) FILM(f2) f1.JMENO_FILMU = f2.JMENO_FILMU f1.JMENO_HERCE = h1.JMENO_HERCE f2.JMENO_HERCE = h2.JMENO_HERCE} Ve kterých filmech hráli všichni herci? {film[JMENO_FILMU] | herec(HEREC(herec) f(FILM(f) f.JMENO_HERCE = herec.JMENO_HERCE f.JMENO_FILMU = film.JMENO_FILMU))} Relační algebra, kalkuly http://www.ksi.mff.cuni.cz/~mlynkova/A7B36DBS/indexCV.html
Příklad: srovnání RA, DRK, NRK Relační algebra, kalkuly http://www.ksi.mff.cuni.cz/~mlynkova/A7B36DBS/indexCV.html