Úvod do databázových systémů

Post on 17-Jan-2016

40 views 0 download

description

Úvod do databázových systémů. Cvičení 05. Ing. Pavel Bednář pavel.bednar.st1@vsb.cz http://pavelbednar.aspone.cz. Relační datový model. Relační schéma - PowerPoint PPT Presentation

transcript

Úvod do databázových

systémů

Cvičení 05

Ing. Pavel Bednářpavel.bednar.st1@vsb.czhttp://pavelbednar.aspone.cz

Relační schémaRelační schéma R je výraz tvaru R(A,f), kde R je jméno schématu, A={A1,A2,...,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. RelaceRelace 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 D1 x D2 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ázeJe konečná množina relačních schémat R1(A1,f1), R2(A2,f2), ... , Rm(Am,fm)..

Relační databázeV daném časovém okamžiku je konečná množina relací R1, R2, ..., 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í datový model

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 = { r1, …,rm,s1, …, 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: R ∪ S

Nelze udělat sjednocení, protože to nejsou shodné relace

Relační algebra

jméno příjmení katedraRadostav Fasuga 456Eduard Lyko 454Michal Krátký 456

jméno příjmeníPetr DlouhýJiřina BenešováPetr Dlouhý

∪ =

Příklad: R ∪ S

Relační algebra

jméno příjmeníRadostav FasugaEduard LykoMichal Krátký

jméno příjmeníRadostav FasugaEduard LykoMichal KrátkýPetr DlouhýJiřina Benešová

∪ =příjmení jménoDlouhý PetrBenešová JiřinaDlouhý Petr

Relační algebra Příklad: R ∩ S

jméno příjmeníDavid JežekDlouhý PetrMarie VlčkováBenešová JiřinaDlouhý Petr

∩ =jméno příjmeníDlouhý PetrDavid JežekBenešová JiřinaKarel Dlouhý

jméno příjmeníDlouhý PetrDavid JežekBenešová Jiřina

Relační algebra Příklad: R - S

jméno příjmeníDavid JežekKresta MojmírMarie VlčkováBenešová KláraDlouhý Petr

- =jméno příjmeníDlouhý PetrDavid JežekBenešová JiřinaKarel Dlouhý

jméno příjmeníKresta MojmírMarie VlčkováBenešová Klára

Příklad: X × Y

Relační algebra

login jméno příjmenífas123 Radostav FasugaLyk001 Eduard LykoKra222Michal Krátký

příjmení město dopravaFasuga Ostrava autoFasuga Brno vlakKrátký Olomouc letadloBeneš Ostrava pionýr

login jméno X.příjmení Y.příjmení město dopravafas123 Radostav Fasuga Fasuga Ostrava autofas123 Radostav Fasuga Fasuga Brno vlakfas123 Radostav Fasuga Krátký Olomouc letadlofas123 Radostav Fasuga Beneš Ostrava pionýrLyk001 Eduard Lyko Fasuga Ostrava autoLyk001 Eduard Lyko Fasuga Brno vlakLyk001 Eduard Lyko Krátký Olomouc letadloLyk001 Eduard Lyko Beneš Ostrava pionýrKra222 Michal Krátký Fasuga Ostrava autoKra222 Michal Krátký Fasuga Brno vlakKra222 Michal Krátký Krátký Olomouc letadloKra222 Michal Krátký Beneš Ostrava pionýr

× =

Projekce Selekce Spojení Přirozené spojení

Relační operace

Z tabulky studentů, vybereme login a příjmení.

T = Student [login,příjmení]

Relační algebra

jméno příjmení loginDavid Ježek JEZ032Dlouhý Petr DLO351Marie Vlčková VLC0043Benešová Jiřina BEN391Dlouhý Petr DLO102

příjmení loginJežek JEZ032Petr DLO351Vlčková VLC0043Jiřina BEN391Petr DLO102

T

Z tabulky studentů, vybereme studenty, kteří jsou ve druhém a vyšším ročníku

T = Student(ročník >= 2)

Relační algebra

Tpříjmení login ročníkJežek JEZ032 2Petr DLO351 1Vlčková VLC0043 3Jiřina BEN391 2Petr DLO102 1

příjmení login ročníkJežek JEZ032 2Vlčková VLC0043 3Jiřina BEN391 2

Obecné spojení X [A>C] Y

Relační algebra

A B C3 s 15 c 27 t 3

C D E2 ff s2 gg t3 hh c6 jj d

A B X.C Y.C D E3 s 1 2 ff s3 s 1 2 gg t3 s 1 3 hh c3 s 1 6 jj d5 c 2 2 ff s5 c 2 2 gg t5 c 2 3 hh c5 c 2 6 jj d7 t 3 2 ff s7 t 3 2 gg t7 t 3 3 hh c7 t 3 6 jj d

X Y X × YA B X.C Y.C D E

3 s 1 2 ff s3 s 1 2 gg t3 s 1 3 hh c3 s 1 6 jj d5 c 2 2 ff s5 c 2 2 gg t5 c 2 3 hh c5 c 2 6 jj d7 t 3 2 ff s7 t 3 2 gg t7 t 3 3 hh c7 t 3 6 jj d

3 > 2A B X.C Y.C D E3 s 1 2 ff s3 s 1 2 gg t3 s 1 3 hh c3 s 1 6 jj d5 c 2 2 ff s5 c 2 2 gg t5 c 2 3 hh c5 c 2 6 jj d7 t 3 2 ff s7 t 3 2 gg t7 t 3 3 hh c7 t 3 6 jj d

A B X.C Y.C D E3 s 1 2 ff s3 s 1 2 gg t3 s 1 3 hh c3 s 1 6 jj d5 c 2 2 ff s5 c 2 2 gg t5 c 2 3 hh c5 c 2 6 jj d7 t 3 2 ff s7 t 3 2 gg t7 t 3 3 hh c7 t 3 6 jj d

A B C D E5 c 2 ff s5 c 2 gg t7 t 3 hh c

X [ A > C] Y

Clen(rc,jmeno,prijmeni,email)Titul(cislo_titulu,nazev_cez, nazev_angl, delka)Pujceno(rc,cislo_titulu,datum)

1. Číslo titulu, který byl alespoň jednou půjčen Pujceno[cislo_titulu]2. Číslo titulu, který dosud nebyl půjčen Titul[cislo_titulu] – Pujceno[cislo_titulu]3. RČ člena, který si půjčil film číslo 123 (Pujceno(cislo_titulu=123))[rc]4. RČ člena, který si půjčil alespoň jeden film, ale ne film 123 Pujceno[rc]-((Pujceno(cislo_titulu=123))[rc])5. 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. RČ člena, který si půjčil jiný film než 12 (Pujceno(cislo_titulu<>123))[rc]

7. RČ člena, který si půjčil pouze film 123 Pujceno[rc]-((Pujceno(cislo_titulu<>123))[rc])8. Najděte názvy filmů, které byly alespoň jednou půjčeny (Pujceno[cislo_titulu][*]Titul)[nazev_cesky]9. Najděte jména členů, kteří si dosud nepůjčili žádný film ((Clen[rc]-Pujceno[rc])[*]Clen)[jmeno, prijmeni]10. 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énoL,specializace)PACIENT(ČP,jménoP,adresa,telefon,narození)NÁVŠTĚVA((licence,ČP,typ,datum,diagnóza,cena)

1. seznam všech specializací lékařů Lekar[specializace]2. jmenný seznam všech ortopédů Lekar(specializace=‘ortoped‘)[jmenoL]3. jmenný seznam pacientů starších 65 let Pacient(narozeni<1943)[jmenoP]4. seznam licencí lékařů, které navštívila paní Marie Nová (Pacient(jmenoP=‘Marie Nova‘)[cp][*]Navsteva)[licence]5. jména lékařů, kteří byli na návštěvě domů na zavolání (Navsteva(typ=‘domu na zavolani‘)[licence][*]Lekar)[jmenoL]

Příklady

LÉKAŘ(licence,jménoL,specializace)PACIENT(ČP,jménoP,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(jmenoL=‘Lom‘)[licence][*]Navsteva)(datum=’23.5.1993‘)[cp][*]Pacient)[jmenoP,adresa]

7. jména a adresy pacientů, kterým byla určena diagnóza HIV+ (Navsteva(diagnoza=‘HIV+‘)[cp][*]Pacient)[jmenoP, adresa]8. jména a specializace lékařů, kteří určili diagnózu vřed na

dvanácterník (Navsteva(diagnoza=‘vred na Dvanacterniku‘)[licence][*]Lekar)[jmenoL, specializace]

9. jména a adresy pacientů, kteří byli vyšetřováni pouze dr. Čermákem

(((Lekar(jmenoL=‘Cermak‘)[licence][*]Navsteva)[cp])-((Lekar(jmenoL<>Cermak)[licence][*]Navsteva)[cp]))[*]Pacient)[jmenoP, adresa]

Příklady

LÉKAŘ(licence,jménoL,specializace)PACIENT(ČP,jménoP,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(jmenoL=Cermak)[licence][*]Navsteva)[cp][*]Pacient)[jmenoP,adresa]

11. jména a adresy pacientů, kteří nebyli vyšetřováni dr. Čermákem

(Pacient[cp]-(Lekar(jmenoL=Cermak)[licence][*]Navsteva)[cp])[*]Pacient)[jmenoP, adresa]12. Seznam jmen pacientů i lékařů Lekar[jmenoL] ∪ Pacient[jmenoP]

Příklady