29
Úvod do databázových systémů Cvičení 02 Relační algebra Ing. Pavel Bednář [email protected] http:// pavelbednar.aspone.cz

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

  • Upload
    peony

  • View
    32

  • Download
    0

Embed Size (px)

DESCRIPTION

Úvod do databázových systémů. Cvičení 02 Relační algebra. Ing. Pavel Bednář [email protected] http://pavelbednar.aspone.cz. Relační datový model. Relační schéma - PowerPoint PPT Presentation

Citation preview

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

Úvod do databázových

systémů

Cvičení 02Relační algebra

Ing. Pavel Bednář[email protected]://pavelbednar.aspone.cz

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

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

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

Relační datový model

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

Relační datový model

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

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

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

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

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

Projekce (\project_{názvy sloupců}) -sloupce

Selekce (\select_{podmínky}) - podmínka

Spojení (R \join S) - R ⋈ S

Théta Spojení (R \join_{podmínka} S) - R ⋈podmínka S

Kartézský součin (R \cross S) – R×S

Přejmenování (\rename_{seznam atributů} R) – R×S

Relační operace

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

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

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

Sjednocení množin – A ∪ BSjednocení prvků množin A,B rozumíme množinu všech prvků, které náleží alespoň do jedné z množin A,B.

Opakování - Množiny

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

Průnik množin – A ⋂ BPrůnik množiny A, B rozumíme množinu všech prvků, které patří do množiny A i do množiny B.

Opakování - Množiny

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

Doplněk množiny – A‘Doplněk množiny A rozumíme množinu všech prvků, které do množiny A nepatří.

Opakování - Množiny

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

Rozdíl množin A-BRozdíl množin A,B rozumíme množin prvků, které do množiny A patří a do množiny B nepatří.

Opakování - Množiny

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

Příklad 1: U–(A∪(B∩C))

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

Příklad 1: U–(A∪(B∩C))

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

Příklad 2: (U–(B∩C)) ∩ (A∪B)

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

Příklad 2: U–(A∪(B∩C))

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

Příklad 3: (A∪B)∩(U-(A∩B))

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

Příklad 3: (A∪B)∩(U-(A∩B))

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

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

\project_{login,příjmení} (Student)

Projekce

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

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

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

\select_{ročník>=2}

Selekce

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

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

Vyberte loginy studentů v druhém ročníku, kteří mají VSP < 2.00

\project_{login}(\select_{ročník=2 and vsp<2.00})

Projekce a selekce

Tpříjmení login ročník VSPJežek JEZ032 2 1.32Petr DLO351 1 2.06Vlčková VLC0043 2 1.11Jiřina BEN391 2 2.65Petr DLO102 1 1.78

loginJEZ032VLC0043

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

X × Y X \cross Y

Kartézský součin

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

×=

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

X ⋈ Y nebo X \join Y

Přirozené spojení

A B C3 s 15 c 27 t 3

C D E1 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 1 ff s3 s 1 2 gg t3 s 1 3 hh c3 s 1 6 jj d5 c 2 1 ff s5 c 2 2 gg t5 c 2 3 hh c5 c 2 6 jj d7 t 3 1 ff s7 t 3 2 gg t7 t 3 3 hh c7 t 3 6 jj d

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

A B C D E3 s 1 Ff s5 c 2 gg t7 t 3 hh c

X [ A > C] Y

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

X ⋈A>C Y nebo X \join_{A>C} Y

Théta spojení

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

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

R ∪ S R \union S

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

Sjednocení

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

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

∪ =

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

R ∪ S R \union S

Sjednocení

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

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

Průnik R ∩ S R \intersect 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

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

Rozdíl R - S R \diff 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

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

Přejmenování Přejmenujte sloupce ‘jméno‘ a ‘příjmení‘ na

‘FirstName‘ a ‘LastName‘ \rename_{‘FirstName‘, ‘LastName‘} Student

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

=

FirstName LastNameDavid JežekKresta MojmírMarie VlčkováBenešová KláraDlouhý Petr