Top Banner
1 Databázové systémy BIK-DBS Ing. Ivan Halaška katedra softwarového inženýrství ČVUT FIT Thákurova 9, m.č. T9:311 [email protected] Kapitola Relační model dat
32

BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

Jun 14, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

1

Databázové systémy

BIK-DBS

Ing. Ivan Halaška

katedra softwarového inženýrství

ČVUT FIT

Thákurova 9, m.č. T9:311

[email protected]

Kapitola

Relační model dat

Page 2: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

2

3. Relační model dat (Codd 1970)

Formální abstrakce nejjednodušších souborů,

Relační kalkul a relační algebra

Metodika pro posuzování kvality relačního schématu

Metodika pro návrh kvalitního relačního schématu

Page 3: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

3

Relační model dat Relace

– jména atributů A1, A2 …, An

– domény atributů, Di =dom(Ai); 1NF

– n-tice (a1,…,an) ai Ai

– množina n-tic D1 x D2 x...x Dn ~ relace

– schéma relace R(A1:D1,…,An:D2)= R(A)

– jméno schématu relace R

– aktuální doména atributu

Page 4: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

4

Relační model dat Chceme sledovat množinu utrovidů, u kterých nás

zajímají vlastnosti UTR1 a UTR2.

UTROVID(UTR1:{1,2,3}, UTR2{1,2})

UTR1 UTR2

1 1

1 2

2 1

2 2

3 1

3 2

Maximální množina utrovidů

= UTR1 x UTR2

V závislosti na reálné množině

utrovidů, může některý řádek chybět

Page 5: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

5

Relační model dat

Chceme sledovat množinu utrovidů, u kterých nás

zajímají vlastnosti UTR1 a UTR2.

UTROVID(UTR1:{1,2,3}, UTR2{1,2}

UTR1 UTR2

2 1

3 1

3 2

Mezi vlastnostmi UTR1 a UTR2

platí relace UTR1 > UTR2

UTR1 UTR2

1 1

1 2

3 2

Mezi vlastnostmi UTR1 a UTR2

platí relace UTR1 ? UTR2

Page 6: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

6

Vztah daný film je dáván v daném kině

Schémata relací:

Kino (Název_k, Adresa, Jméno_v)

Film (Jméno_f, Herec , Rok)

Program(Název_k, Jméno_f, Čas)

Relační model dat příklad

Chceme sledovat více herců

daného filmu, co s tím?

KINO NÁZEV_K ADRESA

Blaník Václ. n. 4

Vesna V olšinách 6

Mír Strašnická 3

Domovina V dvorcích

Kino*

FILM JMÉNO_F HEREC ROK

Černí baroni Vetchý 94

Kmotr Brando 72

Top gun Cruise 86

Nováček Brando 90

Vzorec Brando 80

Film*

Jaký je vztah schématu FILM

na obrázku k relaci FILM* ?

Page 7: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

7

Relační model dat Chceme sledovat více herců daného filmu, co s tím?

JMENO_F HEREC ROK

Černí baroni Vetchý,Brando 1994

Kmotr Brando,Cruise 1972

Top Gun Cruise,Vetchý 1986

Nováček Brando 1990

Vzorec Brando 1980

Page 8: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

8

Relační model dat Chceme sledovat více herců daného filmu, co s tím?

JMENO_F HEREC HEREC2 ROK

Černí baroni Vetchý Brando 1994

Kmotr Brando Cruise 1972

Top Gun Cruise Vetchý 1986

Nováček Brando 1990

Vzorec Brando 1980

Page 9: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

9

Relační model dat Chceme sledovat více herců daného filmu, co s tím?

JMENO_F HEREC ROK

Černí baroni Brando 1994

Černí baroni Vetchý 1994

Kmotr Cruise 1972

Kmotr Brando 1972

Nováček Brando 1990

Top Gun Vetchý 1986

Top Gun Cruise 1986

Vzorec Brando 1980

Page 10: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

10

Relační model dat Chceme sledovat více herců daného filmu, co s tím?

JMENO_F HEREC ROK

Černí baroni Brando 1994

Černí baroni Vetchý 1994

Kmotr Cruise 1972

Kmotr Brando 1972

Nováček Brando 1990

Top Gun Vetchý 1986

Top Gun Cruise 1986

Vzorec Brando 1980

Page 11: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

11

Relační model dat tabulková terminologie

Odlišnosti:

V relaci nezáleží na pořadí n-tic.

Jaký je vztah tabulky FILM na obrázku k relaci FILM*

Schéma relace záhlaví tabulky

jméno atributu jméno sloupce

atribut sloupec

relace tabulka

n-tice relace řádek tabulky

Relace neobsahují duplicitní n-tice.

Page 12: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

12

Relační model dat integritní omezení

je nutné zajistit, aby se do relací dostala pouze "správná" data - přípustné n-tice

úplná definice relačního schématu: (R,I) ... schéma relační databáze R = { R1 ,R2 ,... ,Rk}, I ... množina IO

přípustná relační databáze se schématem (R,I) je množina relací R1

*, R2*, ... , Rk

* takových, že jejich n-tice vyhovují tvrzením v I.

Page 13: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

13

Relační model dat, integritní

omezení

Definice 3.3.1. Klíč K schématu R(A) je minimální

množina atributů z A, která jednoznačně určí n-tice

relace R*.

Tvrzení 3.3.1. Nechť K je klíč schématu R(A). Pak pro

každou přípustnou relaci R* platí:

jsou-li u a v dvě různé n-tice z R*, pak u[K] v[K].

Page 14: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

14

KINO(NÁZEV_K, ADRESA),

FILM(JMÉNO_F, HEREC, ROK)

MÁ_NA_PROGRAMU(NÁZEV_K, JMÉNO_F, DATUM)

Relační model dat integritní omezení

Příklad:

KINO(NÁZEV_K, ADRESA),

FILM(JMÉNO_F, HEREC, ROK)

MÁ_NA_PROGRAMU(NÁZEV_K, JMÉNO_F, DATUM)

IO1: primární Klíče

IO2: Cizí klíče

IO3: V kinech se nehraje více, něž dvakrát týdně

IO4: Jeden film se nedává více, než ve třech kinech

MÁ_NA_PROGRAMU[NÁZEV_K] KINO[NÁZEV_K]

MÁ_NA_PROGRAMU[JMÉNO_F] FILM[JMÉNO_F]

Page 15: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

15

Relační model dat, Příklad IO

KNIHA (ISBN, AUTOR, TITUL)

EXEMPLAR (ISBN, INV_C, D_NAKUPU, CENA, ...)

CTENAR(C_CT, JMENO, D_ZPET)

VYPUJCKA(INV_C, C_CT, D_ZPET)

REZERV(ISBN,C_CT, D_REZ)

IO1: primární klíče

IO2: cizí klíče

IO3: knihu lze rezervovat, jsou-li všechny exempláře

půjčeny

KNIHA (ISBN, AUTOR, TITUL)

EXEMPLAR (ISBN, INV_C, D_NAKUPU, CENA, ...)

CTENAR(C_CT, JMENO, D_ZPET)

VYPUJCKA(INV_C, C_CT, D_ZPET)

REZERV(ISBN,C_CT, D_REZ)

Page 16: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

16

Relační model dat Ošetření IO

jak definovat IO nad schématem úložiště?

jak zajistit dodržování daného IO?

Vyjádření IO:

deklarativní

procedurální na straně klienta

procedurální na straně serveru

Page 17: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

17

Relační model dat dotaz

databázový dotaz nad schématem S je výraz, který

vrací odpověď se schématem T

– def. oborem jsou všechna úložiště se schématem S

– oborem hodnot jsou všechny relace se schématem T

– data v odpovědi pocházejí z databáze

– odpověď nezávisí na fyzickém uložení dat

dotazovací jazyk je množina všech použitelných

výrazů

Page 18: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

18

Relační model dat manipulace s relacemi

vložení n-tice do dané relace

zrušení/změna daných n-tic v dané relaci

zadání dotazu v daném jazyku

algoritmus manipulačních operací zahrnuje

kontrolu dodržování IO

relační algebra, relační kalkul, SQL

Page 19: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

19

Relační model dat souhrn

relace (tabulky) jsou v 1NF, tj. komponenty jejich n-tic

(řádků) jsou atomické (dále nedělitelné)

přístup k prvkům relace (řádkům tabulky) dle obsahu

jedinečné n-tice (řádky),

jde o zdůraznění množinového myšlení v RMD

abstrakce je nezávislá na fyzickém uložení dat

existují silné prostředky pro manipulaci s daty

existují metody návrhu schématu úložiště v relační

databázi, které vedou na schéma “dobrých vlastností”

Page 20: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

20

Dotazovací jazyk Relační algebra

Předpoklady: relace se schématy R(A), S(B)

selekce (restrikce) R* podle podmínky

Značení: R*() = { u | u R* a (u)} kde je (t1 t2) nebo (t1 a)

projekce R* na množinu atributů C, kde C A

Značení: R*[C] = { u[C] | u R*}

přirozené spojení R a S se schématy R(A) resp. S(B)

Značení: T(C)=R* S* = { u | u[A] R* a u[B] S*} kde C=A

přejmenování atributů,

značení: t1 alias

Př.: MA_NA_PROGRAMU(Název_k = ‘Mír’) [Jméno_f, Čas] ( Film Hvezda] ] )[Herec

Page 21: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

21

Relační algebra dotazovací jazyk

Množinové operace:

– sjednocení

– průnik

– rozdíl \

– kartézský součin

Minimální množina operací: B = {kartézský součin, selekce, projekce, přejmenování, sjednocení, rozdíl }

Page 22: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

22

Relační algebra

Programování vs. relační algebra

– relační algebra je jazyk velmi vysoké úrovně

Dotazovací jazyk, který umožňuje realizovat

relační algebru se nazývá relačně úplný.

Komerční svět:

– SQL,

– jazyky formulářů,

– obrázkové jazyky

Page 23: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

23

MÁ_NA_PROGRAMU NÁZEV_K JMÉN_F DATUM

Blaník Top gun 29.03.94

Blaník Kmotr 08.03.94

Mír Nováček 10.03.94

Mír Top gun 09.03.94

Mír Kmotr 08.03.94

Relační algebra příklad použití

KINO(NÁZEV_K, ADRESA)

FILM(JMÉNO_F, HEREC, ROK)

MÁ_NA_PROGRAMU(NÁZEV_K, JMÉNO_F, DATUM)

R1:= MÁ_NA_PROGRAMU(NÁZEV_K = ‘Mír’)

Page 24: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

24

Relační algebra příklad použití

KINO(NÁZEV_K, ADRESA)

FILM(JMÉNO_F, HEREC, ROK)

MÁ_NA_PROGRAMU(NÁZEV_K, JMÉNO_F, DATUM)

R1 NÁZEV_K JMÉNO_F DATUM

Mír Nováček 10.03.94

Mír Top gun 09.03.94

Mír Kmotr 08.03.94

R1:= MÁ_NA_PROGRAMU(NÁZEV_K = ‘Mír’)

Page 25: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

25

R1 NÁZEV_K JMÉNO_F DATUM

Mír Nováček 10.03.94

Mír Top gun 09.03.94

Mír Kmotr 08.03.94

Relační algebra příklad použití

R2 := R1[JMÉNO_F, DATUM]

R2 JMÉNO_F DATUM

Nováček 10.03.94

Top gun 09.03.94

Kmotr 08.03.94

Page 26: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

26

Relační algebra příklad použití

R2 := R1[JMÉNO_F, DATUM]

R3 := FILM * R2

R2 JMÉNO_F DATUM

Nováček 10.03.94

Top gun 09.03.94

Kmotr 08.03.94

FILM JMÉNO_F HEREC ROK

Černí baroni Vetchý 94

Černí baroni Landovský 94

Top gun Cruise 86

Top gun McGillis 86

Kmotr Brando 72

Nováček Br ando 90

Vzorec Brando 80

Nováček Brando 90 10.03.94

l

Top gun Cruise 86 09.03.94

Top gun McGi lis 86 09.03.94

Kmotr Brando 72 08.03.94

R3 JM É NO_F HEREC ROK DATUM

Page 27: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

27

R4:= R3[HEREC]

Česky: „Zadej dotaz, který vybere z databáze seznam herců, kteří

hrají ve filmech dávaných v kinu Mír".

Relační algebra příklad použití

R4 HEREC

Cruise

Brando

McGillis

R3 JMĚNO_F HEREC ROK DATUM

Top gun Cruise 86 09.03.94

Kmotr Brando 72 08.03.94

Nováček Brando 90 10.03.94

Top gun McGillis 86 09.03.94

bez mezikroků:

{ MÁ_NA_PROGRAMU(NÁZEV_K=‘Mír’)[JMÉNO_F,DATUM]

* FILM } [HEREC]

MÁ_NA_PROGRAMU(NÁZEV_K=‘Mír’)[JMÉNO_F,DATUM]

MÁ_NA_PROGRAMU(NÁZEV_K=‘Mír’)[JMÉNO_F,DATUM]

* FILM

Page 28: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

28

Relační algebra -spojení

kde {<, >, =, }

Mějme relace se schématy R(A) a S(B)

R* [t1 t2] S* = { u | u[A] R*, u[B] S*, u.t1u.t2}

Příklad: Mějme R(A, B, C) a S(B, C, D, E), schéma T

značí výsl. operace R[A < B] S.

T A R.B R.C S.B S.C D E 1 2 3 3 4 2 3

1 2 3 3 3 2 3

1 2 3 2 3 4 7

2 1 4 3 4 2 3

2 1 4 3 3 2 3

R A B C S B C D E 8 2 3 3 4 2 3

1 2 3 3 3 2 3

2 1 4 1 4 5 6

3 6 7 2 3 4 7

3 8 9 Hotovo

Page 29: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

29

Relační algebra polospojení

levé -polospojení, kde {<, >, =, },

mějme relace se schématy R(A) a S(B)

R* < t1 t2] S* = (R* [t1 t2] S*)[A]

pravé -polospojení, kde {<, >, =, },

mějme relace se schématy R(A) a S(B)

R* [ t1 t2> S* = (R* [t1 t2] S*)[B]

levé přirozené polospojení R(A), S(B)

Značení: R* < S* = (R* S*)

pravé přirozené polospojení R(A), S(B)

Značení: R* S* = (R* S*

Page 30: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

30

levé -antispojení, kde {<, >, =, },

mějme relace se schématy R(A) a S(B)

R* <t1 t2] S* = R* \ (R*<t1t2]S*)

pravé -antispojení, kde {<, >, =, },

mějme relace se schématy R(A) a S(B)

R* [ t1 t2> S* = S* \ (R*[t1t2>S*)

levé přirozené antispojení R(A), S(B)

Značení: R* < S* = R* \ (R* < S*)

pravé přirozené antispojení R(A), S(B)

Značení: R* S* = S* \ (R*>S*)

Relační algebra antispojení

Page 31: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

31

Relační algebra příklad

D1. Dotaz, který vybere seznam kin, která něco hrají.

R := MA_NA_PROGRAMU [NÁZEV_K]

D2. Dotaz, který vybere seznam kin, která nic nehrají.

KINO [NÁZEV_K] \ MA_NA_PROGRAMU [NÁZEV_K]

D3. Dotaz, který vybere seznam kin, která hrají film Top Gun.

MA_NA_PROGRAMU (JMENO_F = ‘Top Gun’) [NÁZEV_K]

D4. Dotaz, který vybere seznam filmů, které hraje kino s adresou ‘Zvonková’

{ KINO (ADRESA=‘Zvonková’) [NAZEV_K] * MA_NA_PROGRAMU } [JMENO_F]

Page 32: BIK-DBSusers.fit.cvut.cz/~halaska/BIK-DBS/prednaska/BIK-DBS_4_Relacni_m… · Jaký je vztah tabulky FILM na obrázku k relaci FILM* Schéma relace záhlaví tabulky jméno atributu

32

D6. Dotaz, který vybere z databáze seznam kin, kde

nedávají žádný film s M. Brando".

Relační algebra příklad

KINO[NÁZEV_K]

Přepis D6: Dotaz, který vybere všechna kina s výjimkou těch,

která dávají některý film s M.Brando

{ FILM (HEREC=‘M.Brando’) [JMENO_F] *

MA_NA_PROGRAMU } [NAZEV_K]

D5. Dotaz, který vybere seznam kin, která hrají něco

s hercem ‘M.Brando’

D5 :=

\ D5