Relační model dat (Codd 1970)

Podobné dokumenty
Databázové systémy BIK-DBS

Michal Valenta DBS Databázové modely 2. prosince / 35

DBS relační DB model, relační algebra

DBS Normální formy, normalizace

Různé úrovně pohledu na data

DBS Databázové modely

Databáze I. Přednáška 2

DBS Databázové modely

Funkční schéma Datové schéma Integrita modelu s realitou

Kvalita relačního schématu, normalizace

J. Zendulka: Databázové systémy 4 Relační model dat 1

4. Relační model dat. J. Zendulka: Databázové systémy 4 Relační model dat 1

Databáze. Logický model DB. David Hoksza

Databázové systémy. * relační algebra. Tomáš Skopal. - relační model

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Normalizace rela ního schématu

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Analýza a modelování dat 3. přednáška. Helena Palovská

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací

Dotazování v relačním modelu a SQL

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Diagram výskytů a vztahů

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Relační datový model. Integritní omezení. Normální formy Návrh IS. funkční závislosti multizávislosti inkluzní závislosti

Databázové systémy Cvičení 5.3

NORMALIZACE Část 2 1

Informační systémy ve zdravotnictví. 6. cvičení

Hierarchický databázový model

5. Formalizace návrhu databáze

Databázové systémy Cvičení 5

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Databázové modely. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 2

Databáze I. 1. přednáška. Helena Palovská

Kapitola 3: Relační model. Základní struktura. Relační schéma. Instance relace

UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY. Přírodovědecká fakulta RELAČNÍ DATABÁZE (DISTANČNÍ VÝUKOVÁ OPORA) Zdeňka Telnarová. Aktualizovaná verze 2006

Úvod do databázových systémů 10. cvičení

5. Formalizace návrhu databáze

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Úvod do databázových systémů 1. cvičení

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Databázové systémy. Cvičení 2

4. Relační algebra. Databáze použité v příkladech. Operace. Selekce. jméno relace(selekční podmínka)

Databáze SQL SELECT. David Hoksza

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

Výroková a predikátová logika - VII

Integrace relačních a grafových databází funkcionálně

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Operátory ROLLUP a CUBE

8.2 Používání a tvorba databází

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

Terminologie v relačním modelu

0. ÚVOD - matematické symboly, značení,

6. blok část C Množinové operátory

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Střední průmyslová škola Zlín

Matematická analýza 1

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Transformace konceptuálního modelu na relační

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Databázové systémy. Ing. Radek Holý

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Databázové systémy. Přednáška 1

Databázové systémy. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 3) Základní relační operace Databázové systémy 1 / 37

Konceptuální modelování. Pavel Tyl

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Úvod do lineární algebry

Modely Herbrandovské interpretace

Řešené příklady STUDENT(RČ, JMÉNO, SPECIALIZACE) PŘEDMĚT(KÓD, NÁZEV, SYLLABUS, GARANT) ZÁPIS(RČ, KÓD, SEMESTR, ZNÁMKA)

Databáze v MS ACCESS

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

0.1 Úvod do lineární algebry

Databázové systémy Tomáš Skopal

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

2. přednáška - PRAVDĚPODOBNOST

Databáze I. Přednáška 6

Logické programy Deklarativní interpretace

NAIVNÍ TEORIE MNOŽIN, okruh č. 5

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Databázové systémy IDS

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do databázových systémů. Cvičení 12 Ing. Martin Zwierzyna

6. blok část B Vnořené dotazy

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d

Lineární algebra : Polynomy

Otázka č. 1 (bodů za otázku: 4)

DBS Transformace konceptuálního schématu na

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

Databázové systémy trocha teorie

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Relační model reprezentuje databázi jako soubor relací. Kaţdá relace představuje tabulku nebo soubor (ve smyslu soubor na nosiči dat).

Transkript:

Relační model dat (Codd 1970) Odkud vychází, co přináší? Formální abstrakce nejjednodušších souborů. Relační kalkul a relační algebra (dotazovací prostředky). Metodika pro posuzování kvality relačního schématu. Metodika pro návrh kvalitního relačního schématu. 1

Relační model dat Relace jména atributů A 1, A 2, A n domény atributů, D i nebo dom(a i ); 1NF n-tice (a 1,,a n ) a i A i množina n-tic D 1 x D 2 x...x D n ~ relace schéma relace R(A 1 :D 1,,A n :D 2 ), zkraceně R(A) jméno schématu relace R Inuitivně (pracovně), ale nepřesně: relace = tabulka, schéma = záhlaví tabulky 2

Relační model dat Kino* 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 Film* příklad FILM JMÉNO_F HEREC ROK Černí baronivetchý 94 Kmotr Brando 72 Top gun Cruise 86 Nováček Brando 90 Vzorec Brando 80 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) Vztah daný film je dáván v daném kině? Chceme sledovat více herců daného filmu, co s tím? Jaký je vztah tabulky FILM na obrázku k relaci FILM*? 3

Relační model dat Chceme sledovat více herců daného filmu, co s tím? JMENO_F HEREC HEREC2 ROK Černí baroni Kmotr JMENO_F Top Černí Gun baroni Nováček Černí baroni Kmotr Vzorec Kmotr Nováček Top Gun JMENO_F Vetchý Brando HEREC Černí baroni Cruise Brando Kmotr Brando Vetchý Top Cruise Gun Brando Nováček Brando Brando Vzorec Vetchý Brando HEREC 1994 Cruise ROK 1972 Vetchý,Brando Vetchý 1986 1994 Brando,Cruise 1990 1994 Cruise,Vetchý 1972 1980 Brando 1972 1990 Brando 1986 ROK 1994 1972 1986 1990 1980 Top Gun Cruise 1986 Vzorec Brando 1980 4

Relační model dat Chceme sledovat více herců daného filmu, co s tím? JMENO_F Černí baroni Černí baroni Kmotr Kmotr Nováček Top Gun Top Gun Vzorec HEREC Brando Vetchý Cruise Brando Brando Vetchý Cruise Brando ROK 1994 1994 1972 1972 1990 1986 1986 1980 Klasické relační řešení (není normalizované => budou zde update anomálie, viz normální formy!!!) 5

Relační model dat tabulková terminologie 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 Odlišnosti: V relaci nezáleží na pořadí n-tic. Relace neobsahují duplicitní n-tice. 6

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 = { R 1,R 2,...,R k }, I... množina IO přípustná relační databáze se schématem (R,I ) je množina relací R 1*, R 2*,..., R k * takových, že jejich n-tice vyhovují tvrzením v I. 7

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]. 8

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 9

Relační model dat, Příklad IO KNIHA (ISBN, AUTOR, TITUL) EXEMPLAR (ISBN, INV_C, 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 10

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 11

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ů 12

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 algoritmus manipulačních operací zahrnuje kontrolu dodržování IO zadání dotazu relační algebra, relační kalkul, SQL 13

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í 14

Dotazovací jazyk Relační algebra Předpoklady: relace 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 MA_NA_PROGRAMU(Nazev_K = 'Mír')[Jmeno_F, Datum]* FILM[Herec Hvezda] 15

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 } 16

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 17

Relační algebra selekce 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 ) 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 R1:= MÁ_NA_PROGRAMU(NÁZEV_K = Mír ) 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 18

Relační algebra projekce R2 := R1[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 R2 JMÉNO_F Nováček Top gun Kmotr DATUM 10.03.94 09.03.94 08.03.94 19

Relační algebra přirozené spojení R3 := FILM * R2 R2 := R1[JMÉNO_F, DATUM] R2 JMÉNO_F DATUM FILM JMÉNO_F HEREC ROK Nováček 10.03.94 Černí baroni Vetchý 94 Černí baroni Landovský 94 Top gun 09.03.94 Top gun Cruise 86 Top gun McGillis 86 Kmotr 08.03.94 Kmotr Brando 72 Nováček Brando 90 Vzorec Brando 80 R3 JMÉNO_F HEREC ROK DATUM Nováček Brando 90 10.03.94 Top gun Cruise 86 09.03.94 Top gun McGi llis 86 09.03.94 Kmotr Brando 72 08.03.94 20

Relační algebra filtrace stejných n-tic R4:= R3[HEREC Hvezda] R3 bez mezikroků: JMĚNO_FHEREC 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 Česky: Seznam herců (hvězd), kteří hrají ve filmech dávaných v kině Mír". R4 Hvezda Cruise Brando McGillis { MÁ_NA_PROGRAMU(NÁZEV_K= Mír )[JMÉNO_F,DATUM] * FILM } [HEREC Hvezda] 21

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.t1 u.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. 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 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 22

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* 23

Operace antijoin A Þ B Motivace: tato operace se používá jako elementární v Oracle query executoru. Můžeme jí vidět v prováděcích plánech SQL dotazů při vyhodnocení klauzule NOT EXISTS. Zavedení: A Þ B A A<*B (není standard!) Najděte kina, která nic nehrají: KINO KINO <*MA_NA_PROGRAMU KINO Þ MA_NA_PROGRAMU 24

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] 25

Relační algebra množinový rozdíl D5. Seznam kin, která hrají něco s hercem M.Brando. D5 := { FILM (HEREC= M.Brando ) [JMENO_F] * MA_NA_PROGRAMU } [NAZEV_K] D6. Seznam kin, kde nedávají žádný film s M. Brando". Přepis D6: Dotaz, který vybere všechna kina s výjimkou těch, která dávají některý film s M.Brando KINO[NÁZEV_K] \ D5 26

Relační algebra negace a existenční kvantifikace D7. Seznam kin, ve kterých se nehraje některý film s M. Brando". 1. krok : získejme univerzum pro množiny dvojic {kino, film s M.Brando} 2. krok: získejme reálnou množinu dvojic {kino, film s M.Brando} 3. krok: odečtením získaných množin získáme množinu v programu nezrealizovaných dvojic {kino, film s M.Brando} 4. krok: projekcí na první atribut získáme požadovaný seznam kin 27

Relační algebra dotaz D7 {kino v kině nehrají některý film s M. Brendo} 1. krok: získejme univerzum pro množiny dvojic {kino, film s M.Brando} R:=KINO[NÁZEV_K] FILM(HEREC= Brando )[JMÉNO_F] 2. krok: získejme reálnou množinu dvojic {kino, film s M.Brando} S:= MA_NA_PROGRAMU[NÁZEV_K, JMÉNO_F] 3. krok: odečtením získaných množin získáme množinu v programu nezrealizovaných dvojic {kino, film s M.Brando} T:=R \ S 4. krok: projekcí na první atribut získáme požadovaný seznam kin U := T[NÁZEV_K] Poznámka: v S opravdu není nutné dělat selekci na filmy s M. Brando. 28

Relační algebra všeobecná kvantifikace D8. Zadejte dotaz, který vybere z databáze seznam kin, ve kterých se dávají všechny filmy s M. Brando". x.p(x) = x.( P(x)) Přepis D8: Seznam kin, ve kterých něco hrají, a zároveň není pravdou, že nehrají některý z filmů s M. Brando. 2. přepis: Seznam kin, ve kterých něco hrají s výjimkou kin, kde nehrají některý film s M. Brendo} 3. přepis: {kino kino něco hraje} \ {kino v kině nehrají některý film s M. Brendo} 29

Relační algebra dotaz D8 {kino kino něco hraje} \ {kino v kinu nehrají některý film s M. Brendo} K:= MA_NA_PROGRAMU[NÁZEV_K] kina, kde něco hrají R:=MA_NA_PROGRAMU[NÁZEV_K] FILM(HEREC= Brando )[JMÉNO_F] R obsahuje všechny možné dvojice (kino, film), kde kino je v provozu a film je s M.Brando S:=R \ MA_NA_PROGRAMU[NÁZEV_K, JMÉNO_F] S obsahuje dvojice Kino-Film ve významu daný film(ve kterém hraje Brando) není na programu daného (aktivního) kina T := S [NÁZEV_K] T obsahuje aktivní kina, kde nedávají kterýkoliv z filmů s M.Brando U := K \ T, U obsahuje kina, ve kterých hrají všechny filmy s M. Brando. 30

Operace dělení - A B Pro dotazy se všeobecnou kvantifikací můžeme zavést operaci databázové dělení. Předpokládejeme A(x,y) B(y) pak: A B = A[x] - ( (A[x] x B) -A)[x] Výsledkem jsou všechny hodnoty x z A, které v A tvoří dvojici s každým prvkem y z B. Dotaz D8, pak lze zapsat: MA_NA_PROGRAMU[NAZEV_K, JMENO_F] FILM (HEREC = 'Brando') [JMENO_F] 31

Relační algebra všeob. kvantif. příklad 2 D9. Seznam kin, ve kterých se dávají všechny filmy, které jsou na programu. Přepis D9: Seznam kin, ve kterých něco hrají, a zároveň není pravdou, že nehrají některý z filmů programu. 2. přepis: Seznam kin, ve kterých něco hrají s výjimkou kin, ve kterých nehrají některý film z programu} 3. přepis: {kino kino něco hraje} \ {kino v kině nehrají některý film z programu} 32

Relační algebra Dotaz D9 {kino kino něco hraje} \ {kino v kinu nehrají některý film z programu} K:= MA_NA_PROGRAMU[NÁZEV_K] kina, kde něco hrají R:=MA_NA_PROGRAMU[NÁZEV_K] MA_NA_PROGRAMU[JMÉNO_F] R obsahuje všechny možné dvojice (kino, film), kde kino je v provozu a film je na programu S:=R \ MA_NA_PROGRAMU[NÁZEV_K, JMÉNO_F] S obsahuje dvojice Kino-Film ve významu daný film (který je na programu) není na programu daného (aktivního) kina T := S [NÁZEV_K] T obsahuje aktivní kina, kde nedávají některý film z programu U := K \ T, U obsahuje kina, ve kterých hrají všechny filmy z programu 33

Relační algebra všeob. kvant. příklad 3 D10. Zadejte dotaz, který vybere z databáze kino, ve kterém jsou konána všechna představení programu. Poznámka: Odpověď bude prázdná, nebo bude obsahovat jediné kino. Přepis D10: Zadejte dotaz, jehož odpověď bude obsahovat seznam kin, u nichž není pravdou, že nehraje některé představení programu. 2. přepis: Seznam kin, ve kterých něco hrají s výjimkou kin, ve kterých se nehraje některé představení z programu 3. přepis: {kino kino něco hraje} \ {kino v kinu nehrají některé představení z programu} 34

Relační algebra Dotaz D10 {kino kino něco hraje} \ {kino v kinu nehrají některé představení z programu} K:= MA_NA_PROGRAMU[NÁZEV_K] kina, kde něco hrají R:=MA_NA_PROGRAMU[NÁZEV_K] MA_NA_PROGRAMU[JMÉNO_F,DATUM] R obsahuje všechny možné dvojice (kino, představení), kde kino je v provozu a představení je dvojice (film,datum) ve významu daný film je na programu v dané datum (den a čas). S:=R \ MA_NA_PROGRAMU[NÁZEV_K, JMÉNO_F,DATUM] S obsahuje dvojice Kino-představení ve významu dané představení (které je na programu) není dáváno v daném aktivním kině T := S [NÁZEV_K] T obsahuje aktivní kina, ve kterých se nekoná kterékoliv představení z programu U := K \ T, U obsahuje kino, ve kterém jsou dávána všechna představení z programu 35

Operace za relačním modelem Prázdná hodnota NULL, UNKNOWN (levé, pravé, plné) vnější spojení motivace: seznam filmů ve všech kinech, v seznamu nechť jsou i kina, kde se zrovna nic nehraje R NÁZEV_K ADRESA JMÉNO_F DATUM Blaník Václ.n. 4 Top gun 29.03.92 Blaník Václ.n. 4 Kmotr 08.03.92 Mír Starostrašnická 3 Nováček 10.03.92 Mír Starostrašnická 3 Top gun 09.03.92 Mír Starostrašnická 3 Top gun 08.03.92 Mír Starostrašnická 3 Kmotr 08.03.92 Vesna V olšinách 6 NULL NULL Domovina V dvorcích NULL NULL dotaz KINO * MÁ_NA_PROGRAMU problém neřeší 36

Operace za relačním modelem levé vnější přirozené spojení R * L S = (R * S) (R R<*S) {NULL,...,NULL}) poznámky: (R * L S)[A] = R (R * L S)[B] = (R *> S) {NULL,...,NULL} pravé vnější přirozené spojení R * R S = (R * S) ({NULL,...,NULL} (S - R*>S)) plné vnější přirozené spojení R * F S = (R * L S) (R * R S) 37

Operace za relačním modelem Program kin s doplněnými podrobnosti o daném kinu. V seznamu nechť jsou i kina, kde se zrovna nic nehraje KINO * L MÁ_NA_PROGRAMU Dvojice kino-film Jedna dvojice má význam v kině je na programu film. V seznamu nechť jsou i kina, kde se zrovna nic nehraje a filmy, které nejsou nikde hrány. KINO * L MÁ_NA_PROGRAMU * R FILM 38