vod do databzovch systm Cvien 05 Ing Pavel
Úvod do databázových systémů Cvičení 05 Ing. Pavel Bednář pavel. bednar. st 1@vsb. cz http: //pavelbednar. aspone. cz
Relační datový model � Relační schéma R je výraz tvaru R(A, f), kde R je jméno schématu, A={A 1, A 2, . . . , An} je konečná množina jmen atributů, f je zobrazení přiřazující každému jménu atributu Ai neprázdnou množinu, kterou nazýváme doménou atributu Di, tedy f(Ai)=Di. � Relace R s relačním schématem R je konečná podmnožina kartézského součinu domén Di, příslušejících jednotlivým atributům Ai, tedy R D 1 x D 2 x. . . x Dn. �O relaci R říkáme, že je typu R nebo že je instancí relačního schématu R. � Stupeň relace
Relační datový model
Relační datový model
Relační datový model � Schéma relační databáze Je konečná množina relačních schémat R 1(A 1, f 1), R 2(A 2, f 2), . . . , Rm(Am, fm). . � Relační databáze V daném časovém okamžiku je konečná množina relací R 1, R 2, . . . , Rm, tzv. aktuálních relací, kde Ri je typu Ri.
Relační datový model � Homogenita sloupců � Atomické atributy � Nezáleží na pořadí řádků a sloupců � Každý řádek (záznam) je jednoznačně identifikovatelný.
Relační algebra � Pro formulaci požadavků na výběr dat z relační databáze � Pracuje s celými relacemi � Operátory RA se aplikují na relace, výsledkem jsou opět relace.
Relační algebra � Operace ◦ ◦ Sjednocení R∪S={x|x R∨x S} Průnik R∩S={x|x R∧x S} Rozdíl R-S={x|x R∧x S} Kartezský součin R × S = { rs | r R ∧ s S } rs = { r 1, …, rm, s 1, …, sn} � Operace sjednocení a průnik musí být mezi shodnými relacemi � Výsledek operace v RA je bez duplicit.
Relační algebra � Příklad: jméno Radostav Eduard Michal R∪S příjmení katedra Fasuga 456 Lyko 454 Krátký 456 � Nelze ∪ jméno Petr Jiřina Petr příjmení Dlouhý Benešová Dlouhý = udělat sjednocení, protože to nejsou shodné relace
Relační algebra � Příklad: jméno Radostav Eduard Michal R∪S příjmení Fasuga Lyko Krátký ∪ příjmení jméno Dlouhý Petr Benešová Jiřina Dlouhý Petr = jméno Radostav Eduard Michal Petr Jiřina příjmení Fasuga Lyko Krátký Dlouhý Benešová
Relační algebra � Příklad: R∩S jméno příjmení David Ježek Dlouhý Petr Marie Vlčková Benešová Jiřina Dlouhý Petr ∩ jméno příjmení Dlouhý Petr David Ježek Benešová Jiřina Karel Dlouhý = jméno příjmení Dlouhý Petr David Ježek Benešová Jiřina
Relační algebra � Příklad: R-S jméno příjmení David Ježek Kresta Mojmír Marie Vlčková Benešová Klára Dlouhý Petr - jméno příjmení Dlouhý Petr David Ježek Benešová Jiřina Karel Dlouhý = jméno příjmení Kresta Mojmír Marie Vlčková Benešová Klára
Relační algebra � Příklad: login jméno fas 123 Radostav Lyk 001 Eduard Kra 222 Michal příjmení Fasuga Krátký Beneš × X×Y příjmení Fasuga Lyko Krátký město Ostrava Brno Olomouc Ostrava doprava auto vlak letadlo pionýr = login fas 123 Lyk 001 Kra 222 jméno Radostav Eduard Michal X. příjmení Fasuga Lyko Krátký Y. příjmení Fasuga Krátký Beneš Fasuga Krátký Beneš město Ostrava Brno Olomouc Ostrava doprava auto vlak letadlo pionýr
Relační operace � Projekce � Selekce � Spojení � Přirozené spojení
Relační algebra �Z tabulky studentů, vybereme login a příjmení. T jméno příjmení David Ježek Dlouhý Petr Marie Vlčková Benešová Jiřina Dlouhý Petr �T login JEZ 032 DLO 351 VLC 0043 BEN 391 DLO 102 příjmení Ježek Petr Vlčková Jiřina Petr = Student [login, příjmení] login JEZ 032 DLO 351 VLC 0043 BEN 391 DLO 102
Relační algebra �Z tabulky studentů, vybereme studenty, kteří jsou ve druhém a vyšším ročníku příjmení Ježek Petr Vlčková Jiřina Petr �T login ročník JEZ 032 2 DLO 351 1 VLC 0043 3 BEN 391 2 DLO 102 1 příjmení Ježek Vlčková Jiřina = Student(ročník >= 2) T login ročník JEZ 032 2 VLC 0043 3 BEN 391 2
Relační algebra � Obecné X A 3 5 7 B s c t C 1 2 3 spojení X [A>C] Y C 2 2 3 6 Y D ff gg hh jj E s t c d X×Y A 3 3 5 5 7 7 B X. C Y. C s 1 2 s 1 3 s 1 6 c 2 2 c 2 3 c 2 6 t 3 2 t 3 3 t 3 6 D ff gg hh jj X [ A > C] Y E s t c d A B 5 2 c 3> 5 c 7 t C 2 2 3 D ff gg hh E s t c
Příklady Clen(rc, jmeno, prijmeni, email) Titul(cislo_titulu, nazev_cez, nazev_angl, delka) Pujceno(rc, cislo_titulu, datum) 1. 2. 3. 4. 5. Číslo titulu, který byl alespoň jednou půjčen Pujceno[cislo_titulu] Číslo titulu, který dosud nebyl půjčen Titul[cislo_titulu] – Pujceno[cislo_titulu] RČ člena, který si půjčil film číslo 123 (Pujceno(cislo_titulu=123))[rc] RČ člena, který si půjčil alespoň jeden film, ale ne film 123 Pujceno[rc]-((Pujceno(cislo_titulu=123))[rc]) RČ člena, který si nepůjčil film 123 Clen[rc]-((Pujceno(cislo_titulu=123))[rc])
Příklady Clen(rc, jmeno, prijmeni, email) Titul(cislo_titulu, nazev_cez, nazev_angl, delka) Pujceno(rc, cislo_titulu, datum) 6. 7. 8. 9. 10. RČ člena, který si půjčil jiný film než 12 (Pujceno(cislo_titulu<>123))[rc] RČ člena, který si půjčil pouze film 123 Pujceno[rc]-((Pujceno(cislo_titulu<>123))[rc]) Najděte názvy filmů, které byly alespoň jednou půjčeny (Pujceno[cislo_titulu][*]Titul)[nazev_cesky] Najděte jména členů, kteří si dosud nepůjčili žádný film ((Clen[rc]-Pujceno[rc])[*]Clen)[jmeno, prijmeni] Najděte názvy filmů, které si půjčili členové s příjmením Novák ((((Clen(prijmeni=‘Novák‘))[*]Pujceni)[cislo_titulu])[*]Titul)[nazev_cesky]
Příklady LÉKAŘ(licence, jméno. L, specializace) PACIENT(ČP, jméno. P, adresa, telefon, narození) NÁVŠTĚVA((licence, ČP, typ, datum, diagnóza, cena) 1. 2. 3. 4. 5. seznam všech specializací lékařů Lekar[specializace] jmenný seznam všech ortopédů Lekar(specializace=‘ortoped‘)[jmeno. L] jmenný seznam pacientů starších 65 let Pacient(narozeni<1943)[jmeno. P] seznam licencí lékařů, které navštívila paní Marie Nová (Pacient(jmeno. P=‘Marie Nova‘)[cp][*]Navsteva)[licence] jména lékařů, kteří byli na návštěvě domů na zavolání (Navsteva(typ=‘domu na zavolani‘)[licence][*]Lekar)[jmeno. L]
Příklady LÉKAŘ(licence, jméno. L, specializace) PACIENT(ČP, jméno. P, adresa, telefon, narození) NÁVŠTĚVA((licence, ČP, typ, datum, diagnóza, cena) 6. jména a adresy pacientů, kteří byli vyšetřeni dr. Lomem dne 23. 5. 93 ((Lekar(jmeno. L=‘Lom‘)[licence][*]Navsteva)(datum=’ 23. 5. 1993‘)[cp][*]Pacient)[jmeno. P, adresa] 7. 8. jména a adresy pacientů, kterým byla určena diagnóza HIV+ (Navsteva(diagnoza=‘HIV+‘)[cp][*]Pacient)[jmeno. P, adresa] jména a specializace lékařů, kteří určili diagnózu vřed na dvanácterník (Navsteva(diagnoza=‘vred na Dvanacterniku‘)[licence][*]Lekar)[jmeno. L, specializace] 9. jména a adresy pacientů, kteří byli vyšetřováni pouze dr. Čermákem (((Lekar(jmeno. L=‘Cermak‘)[licence][*]Navsteva)[cp])((Lekar(jmeno. L<>Cermak)[licence][*]Navsteva)[cp]))[*]Pacient)[jmeno. P, adresa]
Příklady LÉKAŘ(licence, jméno. L, specializace) PACIENT(ČP, jméno. P, adresa, telefon, narození) NÁVŠTĚVA((licence, ČP, typ, datum, diagnóza, cena) 10. jména a adresy pacientů, kteří byli vyšetřováni dr. Čermákem. (Lekar(jmeno. L=Cermak)[licence][*]Navsteva)[cp][*]Pacient)[jmeno. P, adresa] jména a adresy pacientů, kteří nebyli vyšetřováni dr. Čermákem (Pacient[cp]-(Lekar(jmeno. L=Cermak)[licence][*]Navsteva)[cp]) [*]Pacient)[jmeno. P, adresa] 12. Seznam jmen pacientů i lékařů Lekar[jmeno. L] ∪ Pacient[jmeno. P] 11.
Modelovací nástroje � Oracle SQL Data Modeler ◦ Download – nutná registrace ◦ Výukové video � Toad data modeler ◦ Download – omezení 25 tabulek
- Slides: 23