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 Různé úrovně pohledu na data
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
Kapitola
Různé úrovně pohledu na data
2
Různé úrovně pohledu na data
vnější pohled vnější pohled vnější pohled
úložiště jako
množina BOIS bloků
konceptuální schéma
úložiště jako množina
souborů
Databázové schéma
Fyzická
úroveň
Úroveň analytických
konceptů
Úroveň
implementačních
konceptů
3
Konceptuální modelování
v polovině 70. let - konceptuální modely – společné chápání objektů aplikace uživateli,
projektanty, …
– integrace různých uživatelských pohledů
– Výsledek je vstupem pro návrh implementace
důvody:
nízká úroveň pohledu na data obtížná komunikace nad schématem se zákazníkem
4
Konceptuální modelování
de facto standard:
E-R diagramy (1976)
Kino
Film
Typy entit
Hraje Typy vztahů
Název-k
Adresa
Jméno-v
Jméno_f
Režisér
– Atributy entit
– Identifikátory
– Násobnost účasti
N
M
Čas – účast ve vztahu
– Atributy vztahů
integritní omezení
5
Databázové modelování Relace, tabulky, záznamy, propojení záznamů
do sítě, struktury objektů, podle zvolených
konstruktů mluvíme o databázi hierarchické,
síťové, relační, objektově relační a objektové.
+ integritní omezení (IO)
Hrají (Název_k: string, Jméno_f: string, Režisér: string, Čas: date)
Název_k Jméno_f Režisér Čas Hrají
6
Relační DB model, datové typy
jediný konstrukt - relace
– schéma relace; jméno relace, jména atributů a specifikace
domén atributů
– prvky domén jsou atomické hodnoty (1. normální forma)
– formální zápis: R(A1:D1,...,An:Dn)
KINO(NAZEV_K:CHAR(15),ADRESA:CHAR(25) )
Integritní omezení: primární klíč, cizí klíč
7
Relační model 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 Brando 90
Vzorec Brando 80
MÁ_NA NÁZEV_K JMÉNO_F DATUM
PROGRAMU 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
KINO NÁZEV_K ADRESA
Blaník Václ.n. 4
Vesna Olšiny 6
Mír Strašnická 3
Domovina V dvorcích
8
KINO(NAZEV_K, ADRESA)
FILM(JMENO_F, HEREC, ROK)
MA_NA_PROGRAMU(NAZEV_K, JMENO_F, DATUM)
IO:
Primární klíče: NAZEV_K
JMENO_F
{NAZEV_K, JMENO_F}
Cizí klíče: MA_NA_PROGRAMU.NAZEV_K
MA_NA_PROGRAMU.JMENO_F
Relační model, schéma relací
9
Relační DB model, operace
– vytvoř novou relaci (tabulku)
– přidej novou n-tici (řádek) do dané relace (tabulky)
– vymaž n-tice (řádky) zadaných vlastností
– vytvoř novou relaci (tabulku) ze zadané relace
výběrem n-tic (řádků) zadaných vlastností - selekce
výběrem zadaných atributů (sloupců) - projekce
– ve vybraných n-ticích (řádcích) zadané relace (tabulky) změň
hodnoty zadaných prvků (polí)
– vytvoř novou relaci (tabulku) ze zadaných relací (tabulek)
pomocí množinových operací sjednocení, průnik, rozdíl
– vytvoř novou relaci (tabulku) ze zadaných relací (tabulek) jako
podmnožinu jejich kartézského součinu - spojení
10
Dotazování v relační databázi
(KINO(NAZEV_K=‘Blaník’)* MA_NA_PROGRAMU *
FILM)[jmeno_f,datum]
Select Jmeno_F, Datum
From KINO K JOIN MA_NA_PROGRAMU MNP
ON (K.NAZEV_K=‘Blaník’ and
K.NAZEV_K= MNP.NAZEV_K)
JOIN FILM USING(Jmeno_F)
Které filmy jsou dávány v kině Blaník a kdy?
11
IO jsou tvrzení vymezující korektnost DB
definují se na konceptuální i databázové
úrovni
– název_k jednoznačně určuje řádky tabulky Kina
– daný film si lze rezervovat v půjčovně, jen když
jsou všechny jeho kopie vypůjčeny
– čtenář si může vypůjčit nejvýše 6 filmů (kopií)
– vypůjčující musí být v seznamu zákazníků
Integritní omezení (IO)
12
10.03.94 09.03.94 29.03.94 09.03.94 08.03.94
Databázové modely síťový model
Mír
Starostrašnická 3
Blaník
Václ.n. 4
Brando
86
Kmotr
Brando
72
Vzorec
80
Top gun
Cruise
McGillis
Černí
Baroni
Vetchý
Landovský
94
Nováček
Brando
90
13
Síťový model, diagram na úrovni typů
(Bachman)
–každému entitnímu typu odpovídá jeden typ Záznam
–každému vztahovému typu 1:N odpovídá jeden typ Set
NÁZEV_K
ADRESA
KINO
JMÉNO_F
HEREC*
ROK
FILM Má_na_programu
14
Bachmanův diagram, síťový model
dává je dáván
NÁZEV_K
ADRESA
KINO
JMÉNO_F
HEREC*
ROK
FILM
DATUM
MÁ_NA_PROGRAMU
15
Schéma na úrovni typů hierarchického
modelu
NÁZEV_K
ADRESA
KINO
JMÉNO_F
HEREC*
ROK
FILM
* označuje opakující se položku
DATUM
JMÉNO_F
MÁ_NA_PROGRAMU
DATUM
NÁZEV_K
JE_NA_PROGRAMU
•konstrukty:
•typ segment,
•vztah daný typ segmentu má za předka (rodiče) segment jiného typu
16
Síťový DB model, datové typy
Datový typ Record (záznam), který se podobá
pascalskému datovému typu File of record,
Datový typ Set (C-množina, dvojice různých datových
typů Record), který se podobá datovému typu
Seznam
Po transformaci E-R schématu do síťového
– Každému entitnímu typu odpovídá jeden typ Record
– Každému vztahovému typu 1:N odpovídá jeden typ Set
17
Síťový DB model, operace
vytvoř nový záznam daného typu , zruš daný
záznam, změň daný záznam,
zařaď členský záznam do výskytu c-množiny
daného vlastníka
vyřaď daný člen z daného výskytu c-množiny
najdi první člen ve výskytu c-množiny daného
vlastníka,
najdi následovníka ve výskytu c-množiny daného
vlastníka,
najdi vlastníka ve výskytu c-množiny známého člena
18
Begin
Najdi KINO záznam (NAZEV=‘Blaník’);
Get KINO;
Najdi prvního člena v dává – MÁ_NA_PROGRAMU;
While Not EOL Do
Get MÁ_NA_PROGRAMU into A; Print (A.Datum);
Najdi vlastníka k A v dáván;
Get FILM into B; Print (B.Nazev);
Najdi následovníka v dává;
End;
End;
Navigační jazyk u síťového modelu NÁZEV_K
ADRESA
KINO
JMÉNO_F
HEREC*
ROK
FILM
DATUM
MÁ_NA_PROGRAMU
Které filmy jsou dávány v kině Blaník a kdy?
19
Rekapitulace
Jaké úrovně pohledu na data rozeznáváme?
Hodí se schémata úložiště na úrovni db tabulek
k dialogu se zákazníkem? Která úroveň je
vhodnější?
Hodí se konceptuální schémata úložiště při
úvahách o optimálním uložení dat na nosném
médiu?
Hodí se databázové schéma při plánování sběru
optimalizačních statistik o datech v úložišti?
20
Rekapitulace
Jaké konstrukty využívá E-R konceptuální
model?
Jaká omezení se určují u atributu entitního typu?
Jaká omezení se určují pro typu vztahu?
Jaké omezení se určují u typu entit?
Jaké znáte databázové modely?
21
Rekapitulace
Které konstrukty zná síťový model?
Které konstrukty zná hierarchický model?
Které konstrukty zná relační model?
Proč se síťový model nazývá síťový? Kde je tam
ta síť?
Proč se relační model nazývá relační? Kde je
tam ta relace?
22
Rekapitulace
Na které úrovni pohledu na data v úložišti jsme,
uvažujeme-li o indexech?
Pomocí kterého konstruktu síťového modelu
vyjádříme entitní typ?
Pomocí kterého konstruktu síťového modelu
vyjádříme typ vztahu?
Popište typ Record (záznam).
Popište typ Set (C-množina).
23
Rekapitulace
Jaké operace poskytuje síťový model pro práci s
elementy typu Record?
Jaké operace poskytuje síťový model pro práci s
elementy typu Set?
Jakého typu je vlastník Setu?
Jakého typu je člen Setu?
Kolik vlastníků má jeden výskyt Setu?
Kolik členů může být v jednom výskytu Setu?
24
Rekapitulace
Mohou být členy v jednom výskytu Setu různých
typů?
Mohou být vlastník a členy jednoho typu Set
stejného typu?
25
Rekapitulace
Co bude mapováno na entitní typ v síťovém modelu?
Co bude mapováno na typ vztahu s kardinalitou 1:N v
síťovém modelu?
Jak můžeme vyjádřit v síťovém modelu vztah M:N?
Na co bude mapován entitní typ v relačním modelu?
Na co bude mapován typ vztahu v relačním modelu?
26
Rekapitulace
Co to je integritní omezení?
Jaká integritní omezení můžeme zaznamenat v
E-R schématu?
Jaká integritní omezení můžeme zaznamenat v
síťovém schématu?
Jaká integritní omezení můžeme zaznamenat v
relačním schématu?