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

Post on 05-Jan-2016

32 views 0 download

description

Úvod do databázových systémů. Cvičení 02 Relační algebra. 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í 02Relační algebra

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×=

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

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

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ý

∪ =

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

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

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

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