7. Normální formy PŘ: POJIŠŤOVNA Povinné ručení relace Platby Rodné číslo 7407111234 7407111234 7407111234 7407111234 481123123 481123123 481123123 481123123 Jméno majitele Dvořák Petr Dvořák Petr Dvořák Petr Dvořák Petr Souček Souček Souček Souček Adresa České Budějovice České Budějovice České Budějovice České Budějovice Český Krumlov Český Krumlov Český Krumlov Český Krumlov SPZ vozidla CBD 25-16 CBD 25-16 CBE 41-79 CBA 87-62 CKC 39-26 CKC 39-26 CKC 39-26 CKB 84-42 Typ vozidla Objem válců Rok Číslo splátky Výše splátky O 1250 2000 1 600 O 1250 2000 2 600 M 344 2000 1 495 M 48 2000 1 600 O 1049 2000 1 200 O 1049 2000 2 200 O 1049 2000 3 200 N 5000 2000 1 1200 Datum splatnosti 31.12. 1999 31.03. 2000 31.12. 1999 31.12. 1999 31.12. 1999 31.01. 2000 29.02. 2000 31.12. 1999 Relační schéma: PLATBY (Rodné číslo, Jméno majitele, Adresa, SPZ, Typ vozidla, Objem válců, Rok, Číslo splátky, Výše splátky, Datum splatnosti) Závislosti: Rodné číslo Jméno majitele Rodné číslo Adresa SPZ Typ vozidla SPZ Objem válců {SPZ, Rok, Číslo splátky} Výše splátky {SPZ, Rok, Číslo splátky} Datum splatnosti Lepší varianta dekompozice do 3 relací MAJITEL (Rodné číslo, Jméno majitele, Adresa) VOZIDLO (SPZ, Rodné číslo majitele, Typ vozidla, Objem válců) PLATBY (SPZ, Rok, Číslo splátky, Výše splátky, Datum splatnosti) Veškeré funkční závislosti zůstaly zachovány 1
PŘ: relace FILM Číslo Název Rok Délka Režisér Společnost Adresa Role Herec 1 Obecná Svěrák ČR, Hnízdo Tříska 1996 105 ČT škola Praha Igor 1 Obecná Svěrák ČR, otec Navrátil 1996 105 ČT škola Praha Oldřich 1 Obecná Svěrák ČR, matka Šafránková 1996 105 ČT škola Praha Libuše 2 Zapomenuté Michálek ČR, Farář Holý Polívka 1996 101 FÁMA světlo Vladimír Praha Boleslav 2 Zapomenuté Michálek ČR, Marjánka Žilková 1996 101 FÁMA světlo Vladimír Praha Veronika 2 Zapomenuté Michálek ČR, Francek Kamen 1996 101 FÁMA světlo Vladimír Praha Petr 3 Jízda Svěrák ČR, Pastrňák 1994 92 Ostrava Radek 3 Jízda Svěrák ČR, Geislerová 1994 92 Ostrava Aňa 4 Čas dluhů Pavlásková Chýlková 1998 101 FEBIO ČR Irena Ivana 4 Čas dluhů Pavlásková Roden 1998 101 FEBIO ČR Irena Karel 4 Čas dluhů Pavlásková Bílá 1998 101 FEBIO ČR Irena Lucie Relační schéma: FILM (Číslo, Název, Rok, Délka, Režisér, Společnost, Adresa, Role, Herec) Funkční závislosti: Číslo Název Číslo Rok Číslo Režisér Číslo Délka Číslo Společnost Číslo Adresa Společnost Adresa {Číslo filmu, Role} Herec Dekompozice: FILM (Číslo, Název, Rok, Délka, Režisér, Společnost) SPOLEČNOST (Společnost, Adresa) ROLE (Číslo filmu, Role, Herec) 2
FUNKČNÍ ZÁVISLOSTI PŘ: Schéma univerzitní databáze R(Přednáška, Učitel, Místnost, Hodina, Student, Ročník, Obor, Známka) položky uvedené v závorce představují atributy, nikoliv relace. Předpokládáme, že každou přednášku přednáší jeden učitel Z daných atributů by se daly zapsat nejrůznější schémata, která rozumným či méně rozumným způsobem popisují univerzitní databázi. R = { PU, HMP, PSZ, HSM, SRO } R = { PRU, HSP, PSZ, HSM, SRO } R = { PUO, HMP, HSRP, SRO } R = { HMPU, PSOZ, HSMR } R = {PSUHM, SRO, SPZ } Pozn. Sémantika R se dá vysvětlovat různým způsobem - např. v relaci PSUHM student se ve skutečnosti vůbec nemusí v dané hodině na přednášce vyskytovat, i když z dané přednášky dělá zkoušku. Sémantika se dá upřesnit pomocí IO. Pomocí sémantických nebo konceptuálních modelů popisujeme (vystihujeme) více sémantiky přímo a pak formulujeme pravidla IO. V databázové úrovni formulujeme IO na datech, nikoliv na entitách a vztazích. Jednou z možností, které se používají pro lepší pochopení a vyjádření sémantiky při navrhování relačního schématu, jsou tzv. funkční závislosti. Tentokrát pojem funkční závislosti chápeme jako vztah mezi daty (v konceptuálním modelování se také používal pojem determinace či funkční závislosti mezi entitami) Jsou-li X 1 :dom(x 1 ),..., X n :dom(x n ) atributy v X, pak X-hodnotou je libovolný prvek z kartézského součinu domén dom(x 1 ) x... x dom(x n ). Nechť A, B jsou množiny atributů takové, že platí A Ω, B Ω, kde Ω je množina atributů. Pak říkáme, že B je funkčně (funkcionálně) závislé na A ( A funkčně určuje B ), jestliže ke každé A-hodnotě existuje nejvýše jedna B hodnota. Tuto závislost označujeme jako A B. Tj. pro libovolné dvě n-tice t 1 a t 2 z relační instance r z R takové, že t 1 [A] = t 2 [A], musí nutně platit t 1 [B] = t 2 [B] PŘ: Specifikujme množinu F funkčních závislostí z předchozího příkladu F : P U, HM P, PS Z, HS M 3
Přednáška Učitel Místnost Hodina Student Ročník Obor Známka Mat. analýza Novák K1 Po9 Bláha 1 Informatika 2 Mat. analýza Novák K8 St11 Bláha 1 Informatika 2 Mat. analýza Novák K1 Po9 Dvořák 1 Analýza 1 Mat. analýza Novák K8 St11 Dvořák 1 Analýza 1 Databáze Pokorný S1 Ut8 Bláha 1 Informatika 2 Databáze Pokorný S1 Ct14 Bláha 1 Informatika 2 Databáze Pokorný S1 Ut8 Souček 2 M-Vt 2 Databáze Pokorný S1 Ct14 Souček 2 M-Vt 2 Systémy Vlášek S3 Pa8 Bláha 1 Informatika 2 Systémy Vlášek S3 Pa8 Kovář 1 Informatika 3 Z jedné relace nelze dokázat, že platí nějaká funkční závislost. Např. není pravda, že S Z. Naopak se dá zjistit, že neplatí PU M. Je-li dáno R(Ω) a K, které je podmnožinou Ω, pak K je klíčem schématu R, jestliže (a) K Ω (b) neexistuje K, která je podmnožinou K taková, že K Ω Z daných funkčních závislostí se dají odvodit další pravidla : Nechť X, Y, Z jsou podmnožiny Ω, pak platí Reflexivní pravidlo (FZ1) je-li Y X, potom X Y Triviální funkční závislosti AB A, AB B, AB AB Rozšiřující pravidlo (FZ2) jestliže X Y, potom XZ YZ (FZ2) jestliže X Y, potom XZ Y Tranzitivita (FZ3) jestliže X Y a Y Z, potom X Z 4
Kompozice ( aditivní pravidlo ) (FZ4) jestliže X Y a X Z, potom X YZ Dekompozice ( pravidlo projekce ) (FZ5) jestliže X YZ, potom X Y a X Z YZ představuje sjednocení Y a Z Uvedená pravidla FZ1 - FZ4 se nazývají Armstrongova pravidla Důkazy : (FZ1) : Předpokládejme, že Y X a existují n-tice t 1 a t 2 z relační instance r z R takové, že t 1 [X] = t 2 [X]. Potom ovšem platí t 1 [Y] = t 2 [Y], neboť Y X, tj X Y! (FZ2): (Sporem) Předpokládejme, že X Y a neplatí XZ YZ. Tj musí existovat dvě n-tice t 1 a t 2 z relační instance r z R takové, že (1) t 1 [X] = t 2 [X] (2) t 1 [Y] = t 2 [Y] (3) t 1 [XZ] = t 2 [XZ] (4) t 1 [YZ] t 2 [YZ] To ale není možné, neboť z (1) a (3) plyne, že (5) t 1 [Z] = t 2 [Z] a z (2) a (5) plyne, že (6) t 1 [YZ] = t 2 [YZ] SPOR!! (FZ3) Předpokládejme, že platí (1) X Y (2) Y Z Pak ale pro libovolné dvě n-tice t 1 a t 2 z relační instance r z R takové, že t 1 [X] = t 2 [X], platí podle (1) t 1 [Y] = t 2 [Y] a podle (2) t 1 [Z] = t 2 [Z] tj. X Z (FZ4) Předpokládejme, že platí (1) X Y 5
(2) X Z Dále podle (FZ2) platí (3) X XY, neboť XX je X (vlastně XX XY ) (4) XY YZ ze (2) takže dále platí X YZ (FZ5) Předpokládejme, že platí (1) X YZ Podle (FZ1) platí (2) YZ Y a podle (FZ3) platí (3) X Y Armstrong ukázal, že odvozovací pravidla FZ1 - FZ3 (označovaná také jako Armstrongovy axiomy), jsou úplná a znělá (zvučná). Slovem zvuk se rozumí, že libovolná závislost, kterou odvodíme pomocí pravidel 1-3 z dané množiny funkčních závislostí F specifikované na relačním schématu R, platí na každé relační instanci r z R, která splňuje závislosti v F. Úplností se rozumí, že opakovaným používáním pravidla 1-3 při odvozování závislostí (tak dlouho, dokud jde něco odvodit) dostáváme jako výsledek kompletní množinu všech možných závislostí. Jinými slovy, funkční uzávěr F - množina závislostí F + - se dá odvodit z F jen pomocí FZ1 - FZ3. Obvyklý postup při návrhu databáze je nejprve specifikovat množinu funkcionálních závislostí F, která se dá určit ze sémantiky atributů. Pak se použijí Armstrongova pravidla k odvození dalších závislostí. Systematická cesta, jak získat tyto dodatečné závislosti je nejprve určit každou množinu atributů X, která figuruje na levé straně nějaké funkcionální závislosti F a pak použít Armstrongova pravidla k určení množiny atributů závislých na X. Tj. pro každou množinu atributů X určíme množinu X + atributů, které jsou funkcionálně závislé na X - uzávěr X pod F. Algoritmus stanovení X + X + = X; repeat oldx + := X + ; until (oldx + = X + ); for each funcional dependency Y Z in F do if Y X + then X + := X + Z ; Na začátku nastavíme X + na všechny atributy v X - podle pravidla 1 víme, že všechny tyto atributy jsou závislé na X. použitím pravidel 3 a 4 přidáme do X + atributy (využijeme každou závislost v F). To opakujeme tak dlouho, až už nejdou přidat žádné atributy. 6
PŘ: Uvažujme následující schéma RodCis CisProj Hodiny JmZam JmProj MistoProj F = {RodCis JmZam, CisProj {JmProj, MistoProj}, {RodCis, CisProj} Hodiny } Použitím výše uvedeného algoritmu zjistíme uzávěry s ohledem na F {RodCis} + = {RodCis, JmZam} {CisProj} + = {CisProj, JmProj, MistoProj} {RodCis, CisProj} + = {RodCis, CisProj, JmZam,JmProj, MistoProj, Hodiny} Minimální množina funkcionálních závislostí Množina funkcionálních závislostí F je minimální, pokud splňuje následující podmínky: 1. Každá závislost v F má jednoduchý atribut na pravé straně 2. Není možné odebrat žádnou závislost z F tak, aby vznikla množina závislostí, která je ekvivalentní F 3. Není možné nahradit žádnou závislost X A z F závislostí Y A, kde Y je ostrá podmnožina X tak, aby vznikla množina závislostí, která je ekvivalentní F Minimální množina závislostí se dá brát jako množina závislostí ve standardní nebo kanonické formě. Podmínky 2 a 3 zajišťují, že neexistuje nadbytečná závislost, podmínka 1 zajišťuje kanonickou formu závislostí. Normalizační proces, (poprvé navržený 1972 dr. Coddem), provádí na relačním schématu řadu testů ověřujících, zde schéma vyhovuje či nevyhovuje určité normální formě. Codd sám navrhl tři normální formy, silnější definice 3NF byla navržena později Boycem a Coddem a je známa jako Boyce- Coddova normální forma. Všechny tyto normální formy jsou založeny na funkcionálních závislostech mezi atributy v relaci. Později byly navrženy 4NF a 5NF na koncepci multizávislostí a spojovacích závislostech. Normalizace dat se dá chápat jako proces, během něhož nevyhovující relační schémata jsou dekomponovány rozdělením jejich atributů do menších relačních schémat majících žádoucí vlastnosti. Pokud se ovšem zaměříme jen na normální formy izolovaně od ostatních faktorů, nezaručí to dobrý databázový návrh. Obecně není dostačující zkontrolovat, zda každé relační schéma v databázi je v BCNF nebo ve 3NF. 7
První normální forma 1NF je dána vlastně jako část formální definice relace, kdy se nepovolují vícehodnotové a složené atributy. Tj. domény atributů musí zahrnovat toliko atomické (jednoduché, dále nedělitelné) hodnoty a hodnota kteréhokoliv atributu v n-tici musí být jednoduchá hodnota z domény atributů. Jinými slovy, 1NF nepovoluje relace uvnitř relace. PŘ: Relace VOZIDLA není v 1NF VOZIDLO SPZ Značka Rok výroby Barva CKA 25-65 Škoda 120 1988 bílá, černá CBC 17-17 Ford Escort 1992 žlutá, černá, bílá ABH 13-17 Fiat Croma 1997 zelená ULA 24-13 Nissan Micra 1996 červená Druhá normální forma 2NF je založena na koncepci plné funkcionální závislosti. Funkcionální závislost X Y je plná funkcionální závislost, pokud není možné odstranit žádný atribut A z X tak, že závislost trvá. Tj. pro všechny A X, ( X -{A} ) x Y. Funkcionální závislost X Y je částečná závislost, pokud nějaký atribut A X může být odebrán z X a závislost stále platí tj. ( X -{A} ) Y. PŘ: Závislost {RodCis, CisProj} Hodiny je plná funkcionální závislost, zatímco {RodCis, CisProj} JmZam je částečná závislost ( jde odebrat CisProj ) Relační schéma je v 2NF, pokud každý neprimární atribut je plně funkcionálně závislý na primárním klíči RodCis CisProj Hodiny JmZam JmProj MistoProj RodCis CisProj Hodiny RodCis JmZam CisProj JmProj MistoProj 8
Třetí normální forma 3NF 3NF je založena na koncepci tranzitivní závislosti. Funkcionální závislost X Y v relačním schématu R je tranzitivní, pokud existuje množina atributů Z, která není podmnožinou žádného klíče R taková, že platí X Z a Z Y. PŘ : RodCis VedoucíOdd je tranzitivní prostřednictvím atributu CisOdd, neboť RodCis CisOdd a CisOdd VedouciOdd RodCis JmZam AdrZam CisOdd JmOdd VedouciOdd RodCis JmZam AdrZam CisOdd CisOdd JmOdd VedouciOdd Podle původní Coddovy definice je relační schéma ve 3NF, je-li ve 2NF a současně platí, že neexistuje neprimární atribut v R tranzitivně závislý na primárním klíči tj. kdykoliv funkcionální závislost X A platí v R, potom buďto (a) X je superklíč R, nebo (b) A je primární atribut R Jinak řečeno, každý neprimární atribut v R je plně funkcionálně závislý na každém klíči v R a je netranzitivně závislý na každém klíči v R. Boyce-Coddova NF Je silnější než 3NF. Relace je v BCNF, pokud platí pro všechny závislosti X A v R, že X je superklíč R. Samozřejmě pokud je relace v BCNF, je i ve 3NF, obráceně to neplatí 9
Čtvrtá normální forma 4NF 4NF je založena na pojmu multizávislost. Nechť Y(x) je množina hodnot přiřazených v daný moment X-hodnotě x. Nechť A, B, C jsou podmnožiny Ω takové, že C = Ω A B. Pak řekneme, že B multizávisí na A, jestliže pro každou AC-hodnotu ac je B(ac) = B(a). Tento fakt nazýváme multizávislostí a značíme ho A >> B. Je-li C prázdná množina, jedná se o triviální multizávislost. Jinak vyjádřeno, jestliže existují v R dvě n-tice t 1 a t 2 takové že t 1 [A] = t 2 [A], potom musí existovat n-tice t 3 a t 4 takové,že t 1 [A] = t 2 [A]= t 3 [A] = t 4 [A] t 3 [B] = t 1 [B] a t 4 [B] = t 2 [B] t 3 [R (AB)] = t 2 [R (AB)] a t 4 [R (AB)] = t 1 [R (AB)] N-tice t 1, t 2, t 3 a t 4 nemusejí být nutně různé PŘ: Zaměstnanec a projekt zaměstnanec může pracovat na více projektech Zaměstnanec a dítě zaměstnanec může mít víc dětí Jméno zaměstnance Jméno dítěte Název projektu Dvořák Petr Jiří X1 Dvořák Petr Kateřina X1 Dvořák Petr Jiří Z3 Dvořák Petr Kateřina Z3 jde vlastně o to, že v jedné relaci jsou smíchány dva nezávislé vztahy 1:N Jméno zaměstnance Jméno dítěte Jméno zaměstnance Název projektu Dvořák Petr Jiří Dvořák Petr X1 Dvořák Petr Kateřina Dvořák Petr Z3 Pozn. Multizávislosti jsou v RR diagramu reprezentovány jako tzv. slabé entity Definice Relace je ve 4NF, pokud pro každou netriviální multizávislost X >> Y v F + platí, že X je superklíč R. 10
Př : relace AUTA a) Model Země Počet_válců Škoda 105 ČR 4 Škoda 105 Itálie 4 Mustang USA 4 Mustang USA 6 Mustang Kanada 4 Mustang Kanada 6 Honda Accord Japonsko 4 Fiat Mirafiori Itálie 4 FOX NSR 4 multizávislost model > počet válců dá se provést dekompozice Model Počet_válců Země Model Škoda 105 4 Kanada Mustang Mustang 4 USA Mustang Mustang 6 Japonsko Honda Accord Honda Accord 4 Itálie Fiat Mirafiori Fiat Mirafiori 4 ČR Škoda 105 FOX 4 Itálie Škoda 105 NSR FOX b) uvažujme možnost, že ne všechny typy modelů (podle počtu válců) se vyrábějí v dané zemi výroby Model Země Počet_válců Škoda 105 ČR 4 Škoda 105 Itálie 4 Mustang USA 4 Mustang USA 6 Mustang Kanada 6 Honda Accord Japonsko 4 Fiat Mirafiori Itálie 4 FOX NSR 4 pak není možné provést dekompozici, neboť bychom ztratili informace o tom, co se kde vyrábí, neplatí multizávislost model > počet válců Počet_válců(Mustang)={6,4} a přitom Počet_válců(Mustang, Kanada)={6} 11
Dekompozice Syntéza Algoritmy návrhu schématu relační databáze Dekompozice metoda shora dolů rozklad relačních schémat nahrazování jednoho schématu dvěmi (obecně více schématy) Definice Nechť Ω je množina atributů původní relace a Ω i, pro i=1, 2, n, n > 1, množina atributů i-tého schématu relace. Jestliže platí Ω = Ω i, potom hovoříme o dekompozici schématu relace i=1..n Rozumná dekompozice 1) výsledná schémata by měla mít stejnou sémantiku (dáno IO) 2) výsledné relace by měly obsahovat stejná data Formálně vyjádřeno : 1) Nechť relační databázové schéma R={S(Ω, F)} je dekomponováno do R I ={R i (Ω i, F i )}, 1 < i < n Řekneme, že R má vlastnost pokrytí závislostí, pokud F + = n U i= 1 + F i Tj vezmeme-li funkční závislosti na jednotlivých R i a provedeme na nich uzávěr, potom bychom měli dostat totéž jako uzávěr na F. (F i jsou závislosti platící na Ω i tj. takové závislosti z F +, které jdou promítnout do Ω i.) Př: schéma EVIDENCE(Pracovník, Oddělení, Vedoucí) se závislostmi Pracovník > Oddělení, Oddělení > Vedoucí, Pracovník > Vedoucí Provedeme dekompozici UMÍSTĚNÍ(Pracovník, Oddělení) a VEDENÍ(Oddělení, Vedoucí) se závislostmi Pracovník > Oddělení a Oddělení > Vedoucí,dokážeme odvodit i třetí závislost 2) Dekompozice schématu znamená na úrovni databáze projekce původní relace na atributy v jednotlivých schématech dekompozice. Můžeme požadovat, aby dekompozice měla vlastnost bezeztrátového spojení tj. pro každou přípustnou relaci S * musí platit S * = n S * * i= 1 [ Ω ] i 12
Tj. že S se zpětně rekonstruovat pomocí přirozeného spojení projekcí S * na atributy jednotlivých relací dekompozice Přednáška Student Známka Programování Skála 1 Programování Adamec 2 Operační systémy Skála 1 Operační systémy Adamec 3 Operační systémy Suchánek 3 Dekompozice Přednáška Student Přednáška Známka Programování Skála Programování 1 Programování Adamec Programování 2 Operační systémy Skála Operační systémy 1 Operační systémy Adamec Operační systémy 3 Operační systémy Suchánek Výsledné spojení po dekompozici bude např. obsahovat i n-tici (Programování, Skála, 2) tj. vlastně získáme více dat, ale nevíme, která platí, takže je to vlastně ztráta Tvrzení 1 : Nechť je dáno schéma R(A, B, C), kde A, B, C jsou navzájem disjunktní množiny atributů a platí funkční závislost B > C. Rozložíme-li R na schémata R 1 (A, B) a R 2 (B, C), je takto provedená dekompozice bezeztrátová. Naopak, je-li dekompozice R 1 (A, B) a R 2 (B, C) bezeztrátová, musí platit buďto B > C nebo B > A. Tvrzení 2 : Nechť je dáno schéma R(A, B, C), kde A, B, C jsou navzájem disjunktní množiny atributů a platí multizávislost B >> C. Rozložíme-li R na schémata R 1 (A, B) a R 2 (B, C), je takto provedená dekompozice bezeztrátová. Naopak, je-li dekompozice R 1 (A, B) a R 2 (B, C) bezeztrátová, musí platit buďto B >> C (a tedy i B >> A). ALGORITMUS DEKOMPOZICE : begin Vysledek :={R} ; Hotovo := False ; Vytvor F + ; while (not Hotovo) do if ve Vysledek existuje R i, které není v BCNF then begin nechť X > Y je netriviální funkční závislost, která platí v R i (Ω i ) a X > Ω i není v F + ; Vysledek := (Vysledek R i (Ω i ) ) R i (Ω i - Y) R j (XY) end else Hotovo := true ; end ; 13
Př: F: PS > Z, P >U, HM >P, HU > M, HS > M P U M H S Z PS > Z P S Z P H S U M P >U P U P M H S HM >P P H M S H M Schéma R I = { PSZ, PU, PHM, SHM } P U M H S Z PS > Z P S Z P H S U M P >U P U P M H S PH >M P H M P H S 14
Schéma R II = { PSZ, PU, PHM, PHS } P U M H S Z PS > Z P S Z P H S U M P >U P U P M H S HS >M H S M H S P Schéma R III = { PSZ, PU, HSM, HSP } Tyto dekompozice nezachovávají pokrytí závislostí (např. R III ztrácí HM >P, PH >M ) Dekompozice podle multizávislostí P U M H S Z P >> HM P H M P S U Z P >U P U P S Z Schéma R IV = { P H M, P U, PS Z } je ve 4NF Syntéza Ze zadané množiny atributů a funkčních závislostí se vytvoří minimální pokrytí a závislosti se roztřídí do skupin tak, že v každé skupině jsou závislosti se stejnou levou stranou. Atributy závislostí každé skupiny tvoří jedno schéma vzniklé syntézou. Klíč tvoří již zmíněná levá strana funkčních závislostí. Jsou-li v takovýchto schématech schémata s ekvivalentními klíči, dají se sloučit v jedno, ovšem může se tak stát. že tím vzniknou tranzitivní závislosti. 15
Shrnutí některé důležité pojmy: klíč schématu Armstrongova pravidla dekompozice První normální forma (1NF) Druhá normální forma (2NF) Třetí normální forma (3NF) Čtvrtá normální forma (4NF) 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í bezpř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. 16
Řešte: 1. Pokuste se vysvětlit následující pojmy: a)první normální forma b)druhá normální forma c)třetí normální forma d)čtvrtá normální forma 17