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 n-tice ( n-tuple, tuple ) sloupec atribut tabulka 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(A 1, A 2,...., A n ) je tvořeno jménem relace a seznamem atributů. Každý atribut A i zastupuje určitou doménu D, kterou značíme dom(a i ). 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(A 1, A 2,..., A n ) se značí také jako r(r) a je to množina n-tic r = { t 1, t 2,...., t m }. Každá n-tice je uspořádaný seznam n hodnot t = < v 1, v 2,.... v n >, kde každé v i, 1 i n, je prvkem domény dom(a i ) nebo je specielní hodnota null. Relace r(r) je podmnožina kartézského součinu domén, které definují R r(r) ( dom(a 1 ) x dom(a 2 ) x.... x dom(a n ) ) 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(a 1 ) * dom(a 2 ) *.... * dom(a n ) 1
Použitá notace relační schéma R stupně n R(A 1, A 2,..., A n ) n-tice t v relaci r(r) t = < v 1, v 2,.... v n >, kde v i je hodnota odpovídající atributu A i hodnota atributu A i v i =t[a i ] 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 t 1 a t 2 v relaci r ( relační schéma R ) platí, že t 1 [SK] t 2 [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 = {R 1, R 2,..., R m } 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 = {r 1, r 2,.., r m }, kde r i je instance R i 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 R 1, která je spojena s jinou relací R 2, se musí odkazovat na existující ( odpovídající ) záznam v R 2 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í R 1 a R 2. Množina atributů FK z relačního schématu R 1 je cizím klíčem R 1, pokud splňuje následující dvě pravidla : 1. Atributy zahrnuté v FK mají tutéž doménu jako primární klíč PK v R 2, FK se odkazuje na PK. 2. Hodnota FK v záznamu t 1 z R 1 se buďto vyskytuje jako hodnota PK v nějakém záznamu t 2 v R 2 nebo je NULL t 1 [FK] = t 2 [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 Příjmení Jméno Město Ulice Psč Datum registrace 0001 Adamec Petr Český Krumlov Fialková 5 381 01 25.09.96 0002 Dvořáková Jana Kaplice Luční 7 382 41 11.02.97 0003 Vávrová Alena Besednice Dlouhá 11 NULL 17.08.97 0004 Suchánek Jakub Kaplice Náměstí 8 382 41 15.05.97 ŽÁNRY Číslo Žánr 01 dětská literatura 02 dobrodružství 03 sci-fi 04 cestopisy 05 beletrie 06 thriller 07 detektivky 08 literatura faktu VÝPUJČKY Číslo Číslo Datum Datum čtenáře knihy 0001 123456 12.09.97 0001 124512 12.09.97 0002 121245 10.09.97 20.09.97 0002 121212 10.09.97 ČÁST DATABÁZE BANKY BANKA Číslo konta Číslo klienta Kód Datum Datum posled. Částka měny založení pohybu 124df45f12 0011245 DEM 12.05.95 17.09.97 28 000 125784h1g 0011245 USD 17.02.97 25.09.97 5 000 13254o1k8 0011445 ATS 11.03.96 21.05.97 125 000 KLIENT Číslo klienta Jméno klienta Adresa Podpisový vzor 0011245 Dvořák Petr Český Krumlov, Špičák 127 Petr Dvořák 0011235 ALFA s. r. o. Tábor, Pražská 1882 Peterka 0011445 Metrostav a. s. Praha, I. P. Pavlova 174 Σϖοβοδα Παϖελ 6
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 Rodné číslo dítěte 7
KNIHOVNA podrobněji ČTENÁŘ Příjmení Jméno Rod.číslo Adresa Datum Číslo průkazky KNIHA ISBN Název Autor VÝTISK Inventární číslo ISBN Rok vydání Nakladatelství Cena Stav VÝPŮJČKA Inventární číslo Vypůjčeno Vráceno Číslo průkazky REZERVACE ISBN Datum Číslo průkazky UPOMÍNKY Číslo průkazky Datum Částka Placeno Den platby 8
ZÁSILKOVÁ FIRMA ZÁKAZNÍK Číslo Jméno Osoba Adresa IČO DIČ DPH SKLAD Číslo zboží Množství CENÍK Číslo zboží Název Měr. jednotka Cena za mj OBJEDNÁVKA Čí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 Jméno Pohlaví Druh Narození Umístění 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 Název Vedoucí Umístění MÍSTO Číslo Číslo pavilonu ZAMĚSTNANEC Osobní číslo Jméno Adresa Rod. číslo Funkce FUNKCE Číslo funkce Název funkce PEČUJE Osobní číslo Číslo místa 10
MUZEUM EXPONÁT Číslo Název Období Původ Místnost MÍSTNOST Číslo Číslo budovy Patro BUDOVA Číslo budovy Adresa Stát OBDOBÍ Číslo období Název EXPOZICE Číslo expozice Název UMÍSTĚNÍ Číslo expozice Místnost 11