3. RELAČNÍ MODEL Relační model reprezentuje databázi jako soubor relací. Každá relace představuje tabulku nebo soubor ( ve smyslu soubor na nosiči dat ).
Terminologie v relačním modelu • řádek • sloupec • tabulka
n-tice ( n-tuple, tuple ) atribut relace
Nezáleží na pořadí atributů ani řádků. Datový typ určující typy hodnot, kterých může atribut nabývat ( které se tedy mohou objevit v konkrétním sloupci tabulky ), se nazývá doména.
Doména : - množina atomických hodnot ( hodnot, které se dále nedělí, přesněji řečeno pro potřeby daného relačního modulu se tyto hodnoty už dále nedělí ) - je tedy dána svým jménem, datovým typem a formátem eventuelně může být doplněna o dodatečné informace ohledně např. měřící jednotky. Relační schéma R označené jako R(A1, A2 , . . . . , An) je tvořeno jménem relace a seznamem atributů. Každý atribut Ai zastupuje určitou doménu D, kterou značíme dom(Ai). Počet atributů N určuje tzv. stupeň relace.
Relace r ( instance relace - tj. konkrétní výskyt relace ) z relačního schématu R(A1, A2 , ..... , An) se značí také jako r(R) a je to množina n-tic r = { t1 , t2 , . . . . , tm } . Každá n-tice je uspořádaný seznam n hodnot t = < v1 , v2 , . . . . vn > , kde každé vi , 1 ≤ i ≤ n, je prvkem domény dom(Ai) nebo je specielní hodnota null. Relace r(R) je podmnožina kartézského součinu domén, které definují R r(R) ⊆ ( dom(A1) x dom(A2) x . . . . x dom(An) ) Kartézský součin určuje všechny možné kombinace hodnot z uvedených domén. Pokud označíme kardinalitu domény D jako D a předpokládáme, že všechny domény jsou konečné, potom celkový počet n-tic v kartézském produktu je dom(A1) * dom(A2) * . . . . * dom(An)
1
Použitá notace ♦ relační schéma R stupně n
R(A1, A2 , ..... , An)
♦ n-tice t v relaci r(R)
t = < v1 , v2 , . . . . vn >, kde vi je hodnota odpovídající atributu Ai
♦ hodnota atributu Ai
vi =t[Ai]
♦ relační jména
R, S, Q , . . .
♦ relační stavy
r, s, q, . . .
♦ n-tice t, u, v ♦ kvalifikovaná jména atributů
STUDENT.Jméno,STUDENT.Příjmení, ...
♦ aktuální relační stav
STUDENT
♦ relační schéma
STUDENT(Jméno, Příjmení, ... )
PŘ: n-tice t=<“Jana Bláhová“,“765502/1234“,“Kaplice“,null,21,3,12> viz relace STUDENT(Jméno, Rod. číslo, Adresa, Telefon, Věk, Ročník, Obor ) t[Jméno] =<“Jana Bláhová“> , t[Ročník] =<3>
Omezení – podmínky relačního modelu Podmínky pro domény
– hodnota každého atributu musí být atomická hodnota a musí být prvkem množiny dom(A). Datové typy pro doménu zahrnují standardní číselné datové typy ( celočíselné – short integer, integer, long integer, reálné typy jako float, double ), dále řetězcové typy ( řetězce pevné i proměnné délky ), měnové, datumové, časové typy. Ostatní datové typy domén se definují jako podintervaly nebo výčtové typy výše uvedených typů
. Klíčová omezení
– relace je dána jako množina n-tic ( záznamů, vět ). Dle definice množiny jsou všechny její prvky různé tj. i pro všechny záznamy v relaci musí platit, že jsou navzájem různé neboli že neexistují dvě n-tice, které mají tutéž kombinaci hodnot atributů.
Obvykle existují různé podmnožiny atributů SK, které mají tu vlastnosti, že žádné dva záznamy nemají stejnou kombinaci hodnot atributů tj. pro libovolné dvě n-tice t1 a t2 v relaci r ( relační schéma R ) platí, že t1[SK] ≠ t2 [SK] . Každá takováto podmnožina atributů je označována jako superklíč relačního schématu R. Každá relace má nejméně 1 superklíč 2
- množinu všech atributů. Superklíč může obsahovat redundantní atributy, nicméně rozumná koncepce klíče je pochopitelně klíč bez nadbytečných atributů. Jako klíč K relačního schématu R tedy označíme superklíč schématu R, který má tu vlastnost, že odebereme-li libovolný atribut A z klíče K, zbyde množina atributů K’, která není superklíč. Tj. klíč je minimální superklíč -
nemůžeme odebrat jediný atribut k zachování jednoznačnosti.
PŘ. {Rodné číslo, Jméno, Ročník} je superklíč, ne klíč {Rodné číslo} je klíč Klíč je časový invariant, jeho jednoznačnost nesmí být narušena ani při vkládání nových záznamů, ani při editaci stávajících Relační schéma může mít víc klíčů, který z nich bude označen jako primární je v podstatě libovolné, ostatní klíče se pak označují jako kandidátní.
Relační databázové schéma a integritní omezení. Relační databázové schéma S je množina všech relačních schémat S = {R1, R2, . . . , Rm} a množina integritních podmínek ( omezení ) IO. Instance relační databáze DB ze schématu S je množina relačních instancí DB = {r1, r2, . . , rm}, kde ri je instance Ri a splňuje podmínky integritních omezení. PŘ: Podmínky IO pro entitu - primární klíč nesmí být NULL. Referenční integrita - podmínky specifikované pro vztah dvou relací - užívá se pro zachování konzistence mezi záznamy dvou relací. Záznam relace R1, která je spojena s jinou relací R2, se musí odkazovat na existující ( odpovídající ) záznam v R2
3
PŘ: STUDENT(Číslo,Jméno, Adresa, Třída )
TŘÍDY(Číslo třídy, Umístění, Třídní) Pojem cizí klíč se zavádí v souvislosti se vztahem dvou relací R1 a R2. Množina atributů FK z relačního schématu R1 je cizím klíčem R1 , pokud splňuje následující dvě pravidla : 1. Atributy zahrnuté v FK mají tutéž doménu jako primární klíč PK v R2 , FK se odkazuje na PK. 2. Hodnota FK v záznamu t1 z R1 se buďto vyskytuje jako hodnota PK v nějakém záznamu t2 v R2 nebo je NULL t1[FK] = t2[PK]
Předchozí typy podmínek ovšem nezahrnují velké skupiny obecných podmínek – tzv. podmínek sémantické integrity, které mohou být specifikovány na relační databázi a mohou ovlivňovat uložená data.
PŘ: Plat zaměstnance musí být menší než plat vedoucího Maximální počet hodin odpracovaných v týdnu musí být menší než 56 hod
Aktualizační operace na relaci • INSERT - může dojít k porušení podmínek na doménu, porušení klíčových podmínek, entitních podmínek ( klíč NULL ) a RI podmínek • DELETE – porušení RI podmínek • MODIFY – jedná se vlastně o DELETE a INSERT, z toho vyplývají příslušné možné porušení všech podmínek
Zdrojová literatura : DRAGON, P., ALBHARI, B., NEWARK, T. C# v kostce. Grada, 2006. ISBN 80-247-0443-9. HERNANDEZ, M., J. Návrh databází.. Grada, 2006. ISBN 80-247-0900-7. KANISOVÁ, H.,MÜLLER, M. UML. Computer Press, 2006. ISBN 80-251-1083-4. KEOGH, J., GIANNINI, M. OOP Objektově orientované programování bez předchozích znalostí. Computer Press, 2006. ISBN 80-251-0973-9. ŠIMŮNEK, M. SQL - kompletní kapesní průvodce.Grada, 2001.ISBN 80-7169-692-7.
4
Řešte: 1. V relačním databázovém modelu znamená? Rádek relace Sloupec n-tice Tabulka atribut 2. Čím je charakteristická doména: a) je nedělitelná b) je dělitelná c) množina atomických hodnot 3. Co je superklíč: a) primární klíč b) jedinečná skupina atributů v tabulce (jednoznačně identifikovatelná) c) shodující se atributy v tabulce 4. Referenční integrita: a) zachování konzistence mezi záznamy dvou relací b) relace mezi tabulkami musí odkazovat na existující hodnoty c) souvisí s pojemem cizí klíč
5
PŘÍKLADY KNIHOVNA ČTENÁŘI Číslo čtenáře 0001 0002 0003 0004
ŽÁNRY
Číslo 01 02 03 04 05 06 07 08
Příjmení
Jméno
Město
Ulice
Psč
Adamec Dvořáková Vávrová Suchánek
Petr Jana Alena Jakub
Český Krumlov Kaplice Besednice Kaplice
Fialková 5 Luční 7 Dlouhá 11 Náměstí 8
381 01 382 41 NULL 382 41
Datum registrace 25.09.96 11.02.97 17.08.97 15.05.97
Žánr dětská literatura dobrodružství sci-fi cestopisy beletrie thriller detektivky literatura faktu
VÝPUJČKY Číslo čtenáře 0001 0001 0002 0002
Číslo knihy 123456 124512 121245 121212
Datum
Datum
12.09.97 12.09.97 10.09.97 20.09.97 10.09.97
ČÁST DATABÁZE BANKY BANKA Číslo konta 124df45f12 125784h1g 13254o1k8
KLIENT Číslo klienta 0011245 0011235 0011445
Číslo klienta 0011245 0011245 0011445
Kód měny DEM USD ATS
Jméno klienta Dvořák Petr ALFA s. r. o. Metrostav a. s.
Datum založení 12.05.95 17.02.97 11.03.96
Adresa Český Krumlov, Špičák 127 Tábor, Pražská 1882 Praha, I. P. Pavlova 174
6
Částka
Datum posled. pohybu 17.09.97 25.09.97 21.05.97
28 000 5 000 125 000
Podpisový vzor
Petr Dvořák Peterka
Σϖοβοδα Παϖελ
FIRMA ZAMĚSTNANEC Příjmení Jméno Rod.číslo Adresa Oddělení
ODDĚLENÍ
Číslo
Název
Vedoucí
UMÍSTĚNÍ
Číslo oddělení Adresa
PROJEKT
Číslo projektu Číslo oddělení Umístění
PRACUJE_NA Rodné číslo zam. Číslo projektu Počet hodin
DÍTĚ
Rodné číslo zam. Jméno
7
Rodné číslo dítěte
KNIHOVNA podrobněji ČTENÁŘ
Příjmení Jméno Rod.číslo Adresa Datum Číslo průkazky
KNIHA
ISBN
VÝTISK
Inventární číslo
VÝPŮJČKA
Název
Autor
ISBN Rok vydání Nakladatelství Cena Stav
Inventární číslo
Vypůjčeno
Vráceno
Číslo průkazky
REZERVACE ISBN Datum Číslo průkazky
UPOMÍNKY Číslo průkazky
Datum
8
Částka Placeno Den platby
ZÁSILKOVÁ FIRMA ZÁKAZNÍK Číslo
SKLAD
CENÍK
Jméno Osoba
Číslo zboží
Číslo zboží
OBJEDNÁVKA
Adresa IČO DIČ
DPH
Množství
Název Měr. jednotka
Cena za mj
Číslo Datum Zákazník Číslo účtu
POLOŽKA_OBJ Číslo obj Název zboží Množství
FAKTURA
Číslo faktury
Číslo obj Datum Splatnost
POLOŽKA_FAK Číslo fak Název zboží Množství Cena za mj
9
ZOOLOGICKÁ ZAHRADA ZVÍŘE
Číslo
DRUH
Číslo druhu Číslo třídy Číslo řádu Název
TŘÍDA
Číslo třídy Název
ŘÁD
Číslo řádu Název
PAVILON
Číslo pavilonu
MÍSTO
Číslo Číslo pavilonu
Jméno Pohlaví Druh Narození Umístění
ZAMĚSTNANEC Osobní číslo
Název
Vedoucí
Jméno Adresa
FUNKCE
Číslo funkce Název funkce
PEČUJE
Osobní číslo Číslo místa
10
Umístění
Rod. číslo
Funkce
MUZEUM EXPONÁT
Číslo
Název
MÍSTNOST
Číslo
Číslo budovy
BUDOVA
Číslo budovy
Adresa
OBDOBÍ
Číslo období
Název
EXPOZICE
Číslo expozice Název
UMÍSTĚNÍ
Číslo expozice Místnost
Období Původ
Patro
Stát
11
Místnost