<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.simulace.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Navd00</id>
	<title>Simulace.info - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.simulace.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Navd00"/>
	<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php/Special:Contributions/Navd00"/>
	<updated>2026-07-28T12:19:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15580</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15580"/>
		<updated>2018-06-14T17:46:02Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Normální forma elementárních klíčů (EKNF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cizí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíčů (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF, je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synonymem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma představená v roce 2003. Jejími autory jsou C. J. Date, H. Darwen a N. A. Lorentzos.&lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15579</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15579"/>
		<updated>2018-06-14T17:45:51Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cizí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF, je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synonymem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma představená v roce 2003. Jejími autory jsou C. J. Date, H. Darwen a N. A. Lorentzos.&lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15578</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15578"/>
		<updated>2018-06-14T17:40:52Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Šestá normální forma (6NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF, je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synonymem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma představená v roce 2003. Jejími autory jsou C. J. Date, H. Darwen a N. A. Lorentzos.&lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15577</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15577"/>
		<updated>2018-06-14T17:39:52Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Normální forma doménových klíčů (DK/NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF, je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synonymem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15576</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15576"/>
		<updated>2018-06-14T17:39:21Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Normální forma doménových klíčů (DK/NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF, je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synonymem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15575</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15575"/>
		<updated>2018-06-14T17:36:02Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF, je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15574</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15574"/>
		<updated>2018-06-14T17:21:14Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Normální forma doménových klíčů (DK/NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15573</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15573"/>
		<updated>2018-06-14T17:20:52Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Normální forma elementárních klíčů (EKNF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15572</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15572"/>
		<updated>2018-06-14T17:20:25Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň i ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15571</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15571"/>
		<updated>2018-06-14T17:19:17Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Další normální formy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15570</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15570"/>
		<updated>2018-06-14T17:18:57Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Další normální formy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15569</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15569"/>
		<updated>2018-06-14T17:18:37Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je vhodné uvést i tyto normy.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15568</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15568"/>
		<updated>2018-06-14T17:10:17Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Normální forma nezbytných n-tic (ETNF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15567</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15567"/>
		<updated>2018-06-14T17:07:58Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15566</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15566"/>
		<updated>2018-06-14T17:07:03Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. &lt;br /&gt;
&lt;br /&gt;
Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15565</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15565"/>
		<updated>2018-06-14T17:06:05Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. &lt;br /&gt;
&lt;br /&gt;
Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15564</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15564"/>
		<updated>2018-06-14T17:04:04Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (v angličtině)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (v angličtině)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (v angličtině)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (v angličtině)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (v angličtině)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15563</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15563"/>
		<updated>2018-06-14T17:01:50Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15562</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15562"/>
		<updated>2018-06-14T16:56:40Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Další četba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online], stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15561</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15561"/>
		<updated>2018-06-14T16:55:57Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Další četba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''] [online], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15560</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15560"/>
		<updated>2018-06-14T16:55:12Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL), [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15559</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15559"/>
		<updated>2018-06-14T16:54:33Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15558</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15558"/>
		<updated>2018-06-14T16:54:06Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15557</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15557"/>
		<updated>2018-06-14T16:53:29Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15556</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15556"/>
		<updated>2018-06-14T16:52:52Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Další četba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15555</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15555"/>
		<updated>2018-06-14T16:52:32Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15554</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15554"/>
		<updated>2018-06-14T16:52:09Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385, [citováno: 11. 6. 2018](anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10, [citováno: 10. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9, [citováno: 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15553</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15553"/>
		<updated>2018-06-14T16:49:54Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685. (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9. (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653, [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15552</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15552"/>
		<updated>2018-06-14T16:48:56Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685. (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''], dbdebunk.com, [citováno: 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9. (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15551</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15551"/>
		<updated>2018-06-14T16:46:31Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685. (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278 (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 (anglicky)&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15550</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15550"/>
		<updated>2018-06-14T16:42:00Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
== Normální formy ==&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historie normálních forem ===&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nenormalizovaná forma (UNF) ===&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
=== Nultá normální forma (0NF) ===&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== První normální forma (1NF) ===&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 1 ====&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
=== Druhá normální forma (2NF) ===&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 2 ====&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
=== Třetí normální forma (3NF) ===&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 3 ====&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
=== Boyceho-Coddova normální forma (BCNF) ===&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
=== Čtvrtá normální forma (4NF) ===&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Příklad 4 ====&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
=== Pátá normální forma (5NF) ===&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
==== Příklad 5 ====&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
==== Příklad 6 ====&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
=== Další normální formy ===&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
==== Normální forma elementárních klíčů (EKNF) ====&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
==== Normální forma nezbytných n-tic (ETNF) ====&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Normální forma doménových klíčů (DK/NF) ====&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
==== Šestá normální forma (6NF) ====&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
== Další četba ==&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15549</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15549"/>
		<updated>2018-06-14T16:36:26Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN), dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15548</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15548"/>
		<updated>2018-06-14T16:33:45Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15547</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15547"/>
		<updated>2018-06-14T16:33:20Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi, která by byla zjevná především u rozsáhlých databází s velkým počtem záznam. Ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15546</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15546"/>
		<updated>2018-06-14T16:25:46Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky z minulého příkladu, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15545</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15545"/>
		<updated>2018-06-14T16:24:52Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle, bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15544</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15544"/>
		<updated>2018-06-14T16:23:23Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozici původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15543</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15543"/>
		<updated>2018-06-14T16:20:44Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Pátá normální forma (5NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících podmínek:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15542</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15542"/>
		<updated>2018-06-14T16:17:52Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách, zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15541</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15541"/>
		<updated>2018-06-14T16:13:56Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15540</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15540"/>
		<updated>2018-06-14T16:12:16Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15539</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15539"/>
		<updated>2018-06-14T16:11:11Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Čtvrtá normální forma (4NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15538</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15538"/>
		<updated>2018-06-14T16:10:47Z</updated>

		<summary type="html">&lt;p&gt;Navd00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo.&amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin.&amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15537</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15537"/>
		<updated>2018-06-14T16:09:46Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Třetí normální forma (3NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti&amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo. &amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin. &amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15536</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15536"/>
		<updated>2018-06-14T16:08:28Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Nultá normální forma (0NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu&amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti &amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo. &amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin. &amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15535</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15535"/>
		<updated>2018-06-14T16:08:10Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Pátá normální forma (5NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu &amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti &amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat&amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo. &amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin. &amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15534</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15534"/>
		<updated>2018-06-14T16:06:36Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Boyceho-Coddova normální forma (BCNF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu &amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti &amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
Viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat &amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo. &amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin. &amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15533</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15533"/>
		<updated>2018-06-14T16:06:29Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Příklad 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu &amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti &amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu''). Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat &amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo. &amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin. &amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15532</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15532"/>
		<updated>2018-06-14T15:55:24Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Šestá normální forma (6NF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu &amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti &amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu'') Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat &amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo. &amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin. &amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15531</id>
		<title>Normalizace databáze/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Normalizace_datab%C3%A1ze/cs&amp;diff=15531"/>
		<updated>2018-06-14T15:54:01Z</updated>

		<summary type="html">&lt;p&gt;Navd00: /* Normální forma nezbytných n-tic (ETNF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Normalizace databáze''' je v [[Informatika|informatice]] označení procesu zodpovědného za transformaci [[Relační databáze|relační databáze]] tak, aby splňovala sadu podmínek – tzv. [[#Normální formy|normálních forem]]. Cílem aplikace těchto podmínek je upravení databáze do vhodnějšího stavu, zamezení nekonzistencí, zvýšení integrity dat, odstranění duplicit (potažmo snížení redundance dat) a zamezení potenciálních problémů při manipulaci s daty v relační databázi. Autorem termínu normalizace databáze je britsko-americký matematik a informatik [[Edgar_Frank_Codd|Edgar. F. Codd]].&lt;br /&gt;
&lt;br /&gt;
= Normální formy =&lt;br /&gt;
Přestože existuje řada normálních forem, v praxi se za normalizovanou databázi považuje taková, která splňuje alespoň první tři normální formy. Předmětem zkoumání prvních čtyř forem (1NF, 2NF, 3NF, BCNF) je vztah neklíčových atributů na primárním klíči, předmětem zkoumání posledních dvou normálních forem (4NF, 5NF) jsou vztahy uvnitř složených primárních klíčů. Důležité také je, že každá z normálních forem obsahuje a vyžaduje splnění všech pravidel obsažených ve formách předchozích. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie normálních forem ==&lt;br /&gt;
*První normální forma byla představena v konferenčním příspěvku z roku 1970 publikovaného E. F. Coddem&amp;lt;ref&amp;gt;CODD, E. F., (1970). ''A Relational Model of Data for Large Shared Data Banks'', Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685.&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Codd pokračoval v definici druhé a třetí normální formy v roce 1971&amp;lt;ref&amp;gt;CODD, E. F., (1971). ''Further Normalization of the Data Base Relational Model'', Courant Computer Science Symposia Series 6, &amp;quot;Data Base Systems&amp;quot;, New York City, IBM Research Report RJ909&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*V roce 1974 E. F. Codd společně s Raymondem F. Boyce definovali Boyceho-Coddovu normální formu&amp;lt;ref&amp;gt;CODD, E. F., (1974). ''Recent Investigations into Relational Data Base Systems'', IBM Research Report RJ1385&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*Čtvrtou normální formu představil v roce 1977 Ronald Fagin&amp;lt;ref&amp;gt;FAGIN, R. (1977). ''Multivalued dependencies and a new normal form for relational databases'', ACM Transactions on Database Systems (TODS), str. 262-278&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
*R. Fagin rozšířil normální formy o definici páté normální formy svým konferenčním příspěvkem v roce 1979&amp;lt;ref&amp;gt;KRISHNA, S., (1991). ''Introduction to Database and Knowledge-Base Systems'', ISBN 9810206208. str. 65 &amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nenormalizovaná forma (UNF) ==&lt;br /&gt;
'''Nenormalizovaná forma''' (z anglického ''Unnormalized Form'') byla pojmenována v roce 1970 E. F. Coddem a představuje formu jakékoliv tabulky, která je v nenormalizovaném stavu, tj. tabulky, na níž dosud nebyly aplikovány žádné normální formy. &amp;lt;br /&amp;gt;&lt;br /&gt;
V literatuře se často nenormalizovaná forma neuvádí, především proto, že její splnění je v podstatě automatické a vypovídající hodnota této kategorizace je zanedbatelná. Je důležité poznamenat, že tabulka v nenormalizované formě nutně nemusí porušovat některé z dalších normálních forem – to je však předmětem aplikace a šetření spojeného s následujícími normálními formami.&lt;br /&gt;
&lt;br /&gt;
== Nultá normální forma (0NF) ==&lt;br /&gt;
'''Nultá normální forma''' bývá obdobně jako nenormalizovaná forma zřídka v literatuře zmiňována. V některých případech je uváděna jako součást první normální formy. Obvykle není zvažována, jelikož její splnění bývá v praxi automaticky zaručeno. Přesto lze nalézt následující definici:&lt;br /&gt;
*Schéma relace je v nulté normální formě právě tehdy, když existuje alespoň jeden atribut, který obsahuje více než jednu hodnotu &amp;lt;ref&amp;gt;ZÁDOVÁ, V., ''Relační datový model'', Technická Univerzita v Liberci, Katedra informatiky, Ekonomická fakulta, [citováno: 10. 6. 2018] &amp;lt;/ref&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== První normální forma (1NF) ==&lt;br /&gt;
Pro splnění '''první normální formy''' je zapotřebí zajistit následující:&lt;br /&gt;
*splnění nulté normální formy (0NF)&lt;br /&gt;
*všechny atributy tabulky musí být [[Atomicita|atomické]], tedy dále nedělitelné &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 1 ===&lt;br /&gt;
Klasickým příkladem tabulky porušující první normální formu bývá nejčastěji problém s telefonními čísly, kdy naším cílem je umožnit evidovat pro každou osobu dvě různá telefonní čísla, jak lze vidět v tabulce níže:&lt;br /&gt;
*Poznámka: U všech příkladů níže platí pravidlo, že podtržené názvy atributů představují [[Primární klíč|primární klíč]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba '''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
!|	Telefonní číslo&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák	||	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123, +420 123 123 124&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka ovšem porušuje první normální formu, jelikož sloupec (atribut) telefonní číslo není atomický. &lt;br /&gt;
Zjevným řešením této situace by mohlo být přidání druhého sloupce pro telefonní číslo, abychom zajistili splnění pravidla atomických atributů:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno&lt;br /&gt;
!|	Telefonní číslo 1&lt;br /&gt;
!|	Telefonní číslo 2&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák ||	+420 111 222 333	||		&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo	||	+420 123 123 123	||	+420 123 123 124	&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Přestože je tato tabulka formálně správná a již neporušuje pravidlo první normální formy, její návrh je stále problematický. Problém nastane zejména v případě, že bude zapotřebí evidovat čísel více. Rozšiřování tabulky o další sloupce telefonních čísel není často realizovatelné a také se označuje za špatný návrh. Správným řešením je vytvoření nové tabulky a odstranění sloupce telefonních čísel z tabulky osob, jak lze vidět na příkladu níže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Osoba'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Osoby&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Jméno	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	Petr Novák 	&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	Jarmil Hnízdo&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kontakt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kontaktu&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	ID Osoby	&lt;br /&gt;
!|	Telefonní číslo	&lt;br /&gt;
|-&lt;br /&gt;
|	1 ||	1 || 	+420 111 222 333&lt;br /&gt;
|-&lt;br /&gt;
|	2 ||	2 ||    +420 123 123 123&lt;br /&gt;
|-&lt;br /&gt;
|	3 ||	2 ||    +420 123 123 124&lt;br /&gt;
|-	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tomto případě je tedy první normální forma splněna a rozdělením tabulek jsme umožnili bezproblémové přidávání libovolného počtu telefonních čísel pro každou osobu. Všimněme si, že tabulka s kontakty obsahuje navíc kromě primárního klíče také [[Cizí klíč|cízí klíč]], který nám zajišťuje svázání telefonního čísla se správnou osobou.&lt;br /&gt;
&lt;br /&gt;
== Druhá normální forma (2NF) ==&lt;br /&gt;
Pravidla definovaná '''druhou normální formou''' lze shrnout na následující:&lt;br /&gt;
*tabulka musí být v první normální formě (1NF)&lt;br /&gt;
*každý neklíčový atribut musí být plně závislý na každém [[Kandidátní klíč|kandidátním klíči]] (neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče) &amp;lt;br /&amp;gt;&lt;br /&gt;
Druhá normální forma klade důraz především na odstranění možných duplicit v záznamech.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 2 ===&lt;br /&gt;
Uveďme si příklad, kdy máme tabulku evidující následující informace o kurzech. Všimněme si především toho, že tabulka má složený primární klíč {ID Kurzu, ID Semestru}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam''' &amp;lt;ref&amp;gt;SMASHERY (2013) [https://stackoverflow.com/a/724032 ''What are database normal forms and can you give examples?''] [online], stackoverflow.com, [aktualizováno: 31. 5. 2013], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
!|	Jméno kurzu	&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tato tabulka porušuje druhou normální formu, jelikož sloupec ''Jméno kurzu'' není plně závislý na celém primárním klíči. ''Jméno kurzu'' je závislé na sloupci ''ID Kurzu'', ovšem není již závislé na sloupci ''ID Semestru''. V takovéto tabulce navíc dochází k redundanci dat, jak lze vidět na opakujících se jménech každého kurzu. Při vypisování již existujících kurzů v budoucnu (v nových semestrech) by docházelo k neustálému opakování těchto záznamů. Způsob, jakým lze tento problém vyřešit je dekompozice tabulky a zajištění, že všechny neklíčové atributy dané tabulky budou závislé na celém klíči. Možným řešením může být například následující rozdělení tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Záznam'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Semestru&amp;lt;/u&amp;gt;	&lt;br /&gt;
!|	Počet míst&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || ls 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || zs 2017 || 100 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || ls 2017 || 200 &lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || zs 2017 || 150&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || zs 2017 || 120&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Kurz'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Kurzu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Jméno kurzu&lt;br /&gt;
|-&lt;br /&gt;
|	IT101 || Programování&lt;br /&gt;
|-&lt;br /&gt;
|	IT102 || Databáze&lt;br /&gt;
|-&lt;br /&gt;
|	IT103 || Web design&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Výše uvedená dekompozice tabulky zajišťuje splnění druhé normální formy. Jediný neklíčový atribut v původní tabulce – ''Počet míst'' je již závislý na celém složeném primárním klíči, obdobně jako jediný neklíčový atribut ''Jméno kurzu'' v tabulce Kurz, který je již závislý na jediném primárním klíči nově vytvořené tabulky.&lt;br /&gt;
&lt;br /&gt;
== Třetí normální forma (3NF) ==&lt;br /&gt;
'''Třetí normální forma''' klade následující podmínky:&lt;br /&gt;
*tabulka je ve druhé normální formě (2NF) &lt;br /&gt;
*neobsahuje tranzitivní závislosti &amp;lt;ref name=CHLAPEK&amp;gt;CHLAPEK, D., (2015). ''Normalizace dat - souhrnný příklad'', Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií, str. 7-10.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkční závislost v databázích chápeme jako vztah mezi atributy, kdy tvrzení, že atribut Y je funkčně závislý na atributu X značíme jako: &amp;lt;br /&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;X \rightarrow Y&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Tato závislost zajišťuje, že dva řádky mající stejnou hodnotu atributu X budou mít vždy stejnou hodnotu atributu Y. &lt;br /&gt;
Tranzitivní závislost pak chápeme jako vztah mezi třemi atributy (např. X, Y, Z), kdy atribut Y je funkčně závislý na atributu X, atribut Z je funkčně závislý na atributu Y, a proto lze implikovat, že atribut Z je také funkčně závislý na atributu X. &lt;br /&gt;
Tento vztah značíme jako:&lt;br /&gt;
&lt;br /&gt;
*pokud &amp;lt;math&amp;gt;X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;ŽOLTÁ, L., [http://lucie.zolta.cz/index.php/iformacni-systemy-databaze/47-funkcni-zavislosti ''Funkční závislosti''] [online], lucie.zolta.cz, [citováno: 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 3 ===&lt;br /&gt;
Nejlépe však tuto normální formu lze pochopit na vypovídajícím příkladu. Mějme následující tabulku evidující jednotlivé filmy, jejich žánry a délku jejich stopáže:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || Dokumentární || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || Akční || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || Komedie|| 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || Akční || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || Dokumentární || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Na první pohled není s tabulkou nic v nepořádku. Tabulka splňuje druhou normální formu, všechny neklíčové atributy jsou závislé na celém primárním klíči (tedy v tomto případě na atributu ''ID Filmu'') Přesto tato tabulka nesplňuje pravidla určená třetí normální formou. &amp;lt;br /&amp;gt;&lt;br /&gt;
V tabulce výše vidíme, že primární klíč identifikující každý film rozhoduje o tom, jaký žánr bude zvolen, tedy jinými slovy atribut ''ID Žánru'' je funkčně závislý na atributu ''ID Filmu'' (ID Filmu → ID Žánru). Další závislost, kterou můžeme identifikovat je vztah identifikačního čísla žánru a názvu daného žánru, jinými slovy atribut ''Název žánru'' je funkčně závislý na atributu ''ID žánru'' (ID Žánru → Název žánru). Jak již z definice tranzitivní závislosti víme, z těchto dvou vztahů plyne i vztah třetí, určující funkční závislost atributu ''Název žánru'' na primárním klíči ''ID Filmu''. Způsob, jakým lze třetí normální formu uspokojit je dekompozice tabulky, díky čemuž dosáhneme odstranění nalezené tranzitivní závislosti. Pro příklad výše by dekompozice vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Film'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Filmu&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	ID Žánru&lt;br /&gt;
!|	Délka filmu&lt;br /&gt;
|-&lt;br /&gt;
|	1 || 3 || 01:20:00&lt;br /&gt;
|-&lt;br /&gt;
|	2 || 2 || 01:05:00&lt;br /&gt;
|-&lt;br /&gt;
|	3 || 1 || 01:50:00&lt;br /&gt;
|-&lt;br /&gt;
|	4 || 2 || 01:10:00&lt;br /&gt;
|-&lt;br /&gt;
|	5 || 3 || 01:11:00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Žánr'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;ID Žánru&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	Název žánru&lt;br /&gt;
|-&lt;br /&gt;
|	1 || Komedie&lt;br /&gt;
|-&lt;br /&gt;
|	2 || Akční&lt;br /&gt;
|-&lt;br /&gt;
|	3 || Dokumentární&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Rozkladem původní tabulky nyní dostáváme dvě tabulky, které již neobsahují žádné tranzitivní závislosti. Navíc jsme díky naplnění třetí normální formy napomohli ke snížení redundance dat.&lt;br /&gt;
&lt;br /&gt;
== Boyceho-Coddova normální forma (BCNF) ==&lt;br /&gt;
viz. článek [[Boyceho–Coddova_normální_forma|Boyceho–Coddova_normální_forma]]&lt;br /&gt;
&lt;br /&gt;
== Čtvrtá normální forma (4NF) ==&lt;br /&gt;
'''Čtvrtá normální forma''' je dalším krokem po uplatnění Boyceho-Coddovy normální formy. Jak již bylo nastíněno v počátku, druhá, třetí a Boyceho-Coddova normální forma řeší funkční závislosti jednotlivých atributů, kdežto čtvrtá a pátá normální forma zkoumá vztahy složených primárních klíčů. Dle jedné z definic navíc od splnění všech předešlých normálních forem umožňuje rozlišení a oddělení nezávislých vícehodnotových atributů vytvářejících složený primární klíč. &amp;lt;ref name=CHLAPEK /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Požadavky pro splnění 4NF jsou tedy následující:&lt;br /&gt;
*relace je v BCNF&lt;br /&gt;
*pro každou netriviální vícehodnotovou závislost X ↠ Y je X superklíčem v dané relaci. (superklíč je jakékoliv uskupení atributů, které jednoznačně identifikuje záznam v tabulce)&amp;lt;ref&amp;gt;ŠÍPAL, Š., [http://vyuka.greendot.cz/materialy/material-37.ppt ''Databázové systémy''] [online], [citováno: 11. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Příklad 4 ===&lt;br /&gt;
Ukažme si opět na příkladu, mějme následující tabulku evidující záznamy o prodejcích, prodávaných produktech a pobočkách, kde nabízejí své produkty:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce  02 || Lyže || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyže  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Stejně jako předchozí normální formy, i čtvrtá normální forma se snaží zamezit zbytečné redundanci dat. Množství záznamů v tabulce výše bylo zvoleno především proto, aby bylo možné ilustrovat, že i tato normální forma napomáhá ke snížení redundance dat. &lt;br /&gt;
&lt;br /&gt;
Jelikož tabulka neobsahuje žádné neklíčové atributy (je tvořena pouze složeným primárním klíčem {Prodejce, Produkt, Pobočka}), máme zajištěné splnění všech předchozích normálních forem. Tato tabulka však nesplňuje pravidla určená čtvrtou normální formou. Vezmeme-li v úvahu, že všichni prodejci poskytují všechny své produkty na všech svých pobočkách (a proč by také neposkytovali), zjistíme, že složený klíč je bezpochyby tvořen z nezávislých dat, kdy produkt není vázán na určitou pobočku. Z toho důvodu je porušena čtvrtá normální forma a pro její splnění je zapotřebí provést dekompozici následující tabulky, která by vypadala následovně:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže &lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Liberec&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 03 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Po dekompozici tabulky již máme splnění čtvrté normální formy zajištěné.&lt;br /&gt;
&lt;br /&gt;
== Pátá normální forma (5NF) ==&lt;br /&gt;
'''Pátá normální forma''' tkví ve splnění následujících:&lt;br /&gt;
*čtvrté normální formy (4NF)&lt;br /&gt;
*tabulku není možné dále bezeztrátově rozdělovat.&lt;br /&gt;
Ve všech předchozích normálních formách nedocházelo dekompozicí tabulek ke ztrátě dat &amp;lt;ref&amp;gt;SEKHAR, R., [https://www.quora.com/What-is-5NF-in-DBMS ''Fifth Normal Form (5NF)''] [online], Quora.com, [aktualizováno: 9. 3. 2017], [citováno: 10. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;, ovšem upravíme-li příklad a situaci ze čtvrté normální formy, kdy prodejci již neposkytují všechny své produkty na každé své pobočce, ale pouze některé z nich, dojde při rozkladu ke ztrátě informací. &lt;br /&gt;
&lt;br /&gt;
=== Příklad 5 ===&lt;br /&gt;
Mějme tedy následující upravenou tabulku z minulého příkladu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Když se pokusíme o dekompozici tabulky, stejně jako při uspokojování čtvrté normální formy, dostaneme následující:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zajisté jsme dekompozicí pomohli snížit redundanci dat v naší databázi (která by byla zjevná především u rozsáhlých databází s velkým počtem záznamů), ovšem ve výsledku jsme ztratili důležité informace o závislosti prodejců – produktů – poboček.  Při aplikaci některého z možných spojení tabulek, např. [[JOIN#Přirozené_spojování|přirozeného spojování]] (NATURAL JOIN) dostáváme následující výsledky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Rukavice&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Praha&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Rukavice  || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyžařské brýle&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Prodejce 01&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Lyže&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Pardubice&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Rukavice || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Všimněme si, že dle obdržených výsledků vrácených spojením tabulek ''Prodejce-Produkt'' a ''Prodejce-Pobočka'' došlo k vytvoření tří nových záznamů, které tvrdí, že např. Prodejce 01 prodává lyžařské brýle v Pardubicích, což ovšem v porovnání s původní tabulkou víme, že není pravda.&lt;br /&gt;
Uvažujme tedy o dekompozici původní tabulky na tři tabulky oproti dvěma původním. Tedy kromě tabulek Prodejce-Produkt a Prodejce-Pobočka přidáme ještě tabulku Pobočka-Produkt evidující vztah mezi produkty a jejich dostupností na jednotlivých pobočkách. Mějme tedy navíc následující tabulku:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Rukavice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Problém však nastává ve chvíli, kdy se pokusíme tyto tři tabulky spojit a dostat tak původní data. Po chvíli zkoušení zjistíme, že se nám takové spojení realizovat nepodaří a že není způsob, jak bychom dekompozicí původní tabulky mohli provést bezeztrátově. Tedy lze konstatovat, že tabulka Prodejce-Produkt-Pobočka již nelze dále bezeztrátově rozložit (je tedy v 5NF), a proto se musíme spokojit s redundancí dat původní tabulky pro zajištění, že nepřijdeme o žádná potenciálně důležitá data.&lt;br /&gt;
&lt;br /&gt;
=== Příklad 6 ===&lt;br /&gt;
Víme už tedy o jaké tabulce můžeme konstatovat, že je v páté normální formě. Ukažme si ještě tabulku, která pátou normální formu porušuje. Upravíme-li záznamy původní tabulky a určíme-li, že se v Praze prodávají všechny produkty (lyže a lyžařské brýle), ale v Pardubicích pouze lyžařské brýle (důvod této diskriminace ponecháme záhadou), bude nová tabulka vypadat následovně: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Budeme-li postupovat stejně jako při pokusu o dekompozici bezeztrátově nerozdělitelné tabulky výše, dostaneme následující tři tabulky:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Pobočka-Produkt'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyže&lt;br /&gt;
|-&lt;br /&gt;
|	Praha || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|	Pardubice || Lyžařské brýle&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Při pokusu o jejich opětovné spojení, zjistíme, že se nám v tomto případě podařila bezeztrátová dekompozice a výsledkem naší selekce je totožná tabulka s tabulkou před rozdělením. Po spojení těchto tabulek tedy získáváme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; | ''' Tabulka Prodejce-Produkt-Pobočka'''&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Prodejce&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Produkt&amp;lt;/u&amp;gt;&lt;br /&gt;
!|	&amp;lt;u&amp;gt;Pobočka&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 01 || Lyžařské brýle || Pardubice&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyže || Praha&lt;br /&gt;
|-&lt;br /&gt;
|	Prodejce 02 || Lyžařské brýle  || Praha&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jelikož se nám podařilo opětovně spojit tři rozdělené tabulky a získat tak nezměněnou původní tabulku, lze konstatovat, že tabulka nesplňuje pravidla stanovená pátou normální formou. Srovnáme-li oba příklady této normální formy, zjistíme, že hlavním rozdílem bylo uvedení rozšiřujících informací, které nejsou ihned zjevné při pohledu na samotnou tabulku. Identifikování tabulek, které porušují pátou normální formu bývá v praxi velmi složité, a navíc reálný přínos její aplikace bývá často nezřetelný. Pátá normální forma patří mezi formy založené spíše na teoretickém zázemí, postrádajíc reálně dosažitelné výsledky při aplikaci v praxi.&lt;br /&gt;
&lt;br /&gt;
== Další normální formy ==&lt;br /&gt;
Následující normální formy jsou zřídka uváděny a obvykle se s nimi při normalizaci nesetkáváme. Většina z nich je postavena na čistě teoretickém modelu a jejich aplikace v praxi bývá přehlížena (občas záměrně).&lt;br /&gt;
Pro úplnost je však vhodné si tyto normální formy alespoň uvést.&lt;br /&gt;
&lt;br /&gt;
=== Normální forma elementárních klíčů (EKNF) ===&lt;br /&gt;
'''Normální forma elementárních klíčů''' (z anglického ''Elementary key normal form'') je nadstavbou nad třetí normální formou a striktně spadá před BCNF, tedy platí pravidlo, že relace v EKNF jsou zároveň ve třetí normální formě. Tuto normální formu představil v roce 1982 Carlo Zaniolo. &amp;lt;ref&amp;gt;ZANIOLO, C. (1982) [http://web.cs.ucla.edu/~zaniolo/papers/tods82b.pdf ''A New Normal Form for the Design of Relational Database Schemata''] [online], ACM Transactions on Database Systems. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; EKNF cílí na zachycení hlavních kvalit jak třetí normální formy, tak BCNF a zároveň adresuje jejich problémy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formální definice EKNF zní: &amp;lt;br /&amp;gt;&lt;br /&gt;
*Relace R je v normální formě elementárních klíču (EKNF) právě tehdy, když pro každou netriviální funkční závislost X → Y platí:&lt;br /&gt;
**X je superklíč, nebo&lt;br /&gt;
**Y je součástí některého z elementárních klíčů&lt;br /&gt;
***kde klíč K je elementární právě tehdy, když existuje atribut A relace R, kde funkční závislost K → A je netriviální a neredukovatelná&lt;br /&gt;
&lt;br /&gt;
=== Normální forma nezbytných n-tic (ETNF) ===&lt;br /&gt;
'''Normální forma nezbytných n-tic''' (z anglického ''Essential tuple normal form''), zkráceně ETNF je jedna z nejnovějších normálních forem. Její představení proběhlo v roce 2012. &amp;lt;ref name=FAGIN2012&amp;gt;DARWEN, H., DATE, C. J., FAGIN, R. (2012) ''A Normal Form for Preventing Redundant Tuples in Relational Databases'', ICDT '12 Proceedings of the 15th International Conference on Database Theory, ISBN: 978-1-4503-0791-8, [citováno 11. 06. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Jedná se o normální formu, která zaujímá místo mezi čtvrtou a pátou normální formou. Předmětem zkoumání této normální formy jsou funkční závislosti v relacích relačních databázích. Hlavní výhodou aplikace této normální formy je obdobně jako v případě ostatních normálních forem snížení redundance dat. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dle znění formální definice je schéma relace R v normální formě nezbytných n-tic (ETNF) právě tehdy, když: &lt;br /&gt;
*každá n-tice každé instance R je nezbytná (její ztráta by zapříčinila ztrátu informací)&amp;lt;ref name=FAGIN2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Normální forma doménových klíčů (DK/NF) ===&lt;br /&gt;
'''Normální forma doménových klíčů''' (z anglického ''Domain-key normal form'') je další normální formou, jejíž autorem je R. Fagin. &amp;lt;ref&amp;gt;FAGIN, R. (1981) [http://www.almaden.ibm.com/cs/people/fagin/tods81.pdf ''A Normal Form for Relational Databases That Is Based on Domains and Keys''] [online], ACM Transactions on Database Systems, str 387–415. [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z definic je DK/NF splněna, pokud:&lt;br /&gt;
*databáze neobsahuje žádné omezení kromě doménových omezení a omezení klíčů.&lt;br /&gt;
**doménové omezení určuje možné hodnoty daného atributu, a&lt;br /&gt;
**omezení klíčů určuje atributy, které unikátně identifikují řádek (záznam) dané tabulky.&lt;br /&gt;
&lt;br /&gt;
Dle další definice&amp;lt;ref&amp;gt;DATE, C. J. (2012) [https://web.archive.org/web/20120406123712/http://www.dbdebunk.com/page/page/621935.htm ''ON DK/NF NORMAL FORM''],&amp;lt;/ref&amp;gt; je DK/NF splněna, pokud:&lt;br /&gt;
*každé omezení je logickým následkem definicí klíčů a [[Datová_doména|datových domén]].&lt;br /&gt;
&lt;br /&gt;
Poznámka: V literatuře se můžeme setkat s chápáním DK/NF jako synomem k šesté normální formě, ovšem dle definice Christophera Date se DK/NF od jím definované šesté normální formy liší.&lt;br /&gt;
&lt;br /&gt;
=== Šestá normální forma (6NF) ===&lt;br /&gt;
'''Šestá normální forma''' je poslední uváděná normální forma, představená v roce 2003 a jejíž autory jsou C. J. Date, H. Darwen a N. A. Lorentzos. &amp;lt;br /&amp;gt; &lt;br /&gt;
Cílem šesté normální formy je dekompozice relací na dále již neredukovatelné komponenty (relace).&lt;br /&gt;
&amp;lt;ref&amp;gt;DATE, C. J., DARWEN, H., LORENTZOS, N. A. (2003) ''Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management''. Oxford: Elsevier LTD. ISBN 1-55860-855-9.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;NEHA, S. K. (2015) [https://www.ijraset.com/fileserve.php?FID=1559 ''Sixth Normal Form''] [online], International Journal for Research in Applied Science &amp;amp; Engineering Technology (IJRASET), Volume 3 Issue I, January 2015, ISSN: 2321-9653&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;KNOWLES, C. (2012) [http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1026&amp;amp;context=sais2012 ''6NF Conceptual Models and Data Warehousing 2.0''] [online], Georgia Southern University, Association for Information System, AIS Electronic Library (AISeL). [citováno 12. 6. 2018]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dle jedné z možných definic je tabulka v 6NF právě tehdy, když:&lt;br /&gt;
*řádek tabulky obsahuje primární klíč a pouze (maximálně) jeden další atribut&amp;lt;ref&amp;gt;ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com, [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šestá normální forma nabírá na důležitosti s využitím dočasných datových uložišť a datových skladů.&lt;br /&gt;
&lt;br /&gt;
= Další četba =&lt;br /&gt;
&lt;br /&gt;
* CHLAPEK, D., STANOVSKÁ, I., ŘEPA, V. (2011) ''Analýza a návrh informačních systémů'', Praha : Oeconomica, 2011, ISBN: 978-80-245-1782-7&lt;br /&gt;
* KULHAN, J., LEHOCKÝ, Z. (2008) [http://programujte.com/clanek/2008071900-normalizace-relacnich-databazi/ ''Normalizace relačních databází''] [online], programujte.com, [aktualizováno 23. 7. 2008]&lt;br /&gt;
* SKŘIVAN, J. (2000) [https://www.interval.cz/clanky/databaze-a-jazyk-sql/ ''Databáze a jazyk SQL''] [online], interval.cz, [aktualizováno 4. 8. 2000]&lt;br /&gt;
* ZENDULKA, J. [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/5_2.pdf ''Databázové systémy - 5 Formalizace návrhu databáze''], Vysoké učení technické v Brně, Fakulta informačních technologií&lt;br /&gt;
* KRISHNA, S. (1992) [https://books.google.cz/books?id=iVWmw2aTtasC&amp;amp;printsec=frontcover#v=onepage&amp;amp;q&amp;amp;f=false ''Introduction to Database and Knowledge-base Systems''], World Scientific Series in Computer Science - Vol. 28 (anglicky)&lt;br /&gt;
* DATE, C. J. (2000) ''An introduction to database systems'', Addison-Wesley, ISBN: 0-201-38590-2 (anglicky)&lt;br /&gt;
* ROGERS, R., PerformanceDBA (2015) [https://stackoverflow.com/a/4843859 ''Would like to Understand 6NF with an Example''] [online] stackoverflow.com,  [aktualizováno: 7. 5. 2015], [citováno 11. 6. 2018] (anglicky)&lt;br /&gt;
* MICROSOFT (2017) [https://support.microsoft.com/en-us/help/283878/description-of-the-database-normalization-basics ''Description of the database normalization basics''] [online], Microsoft, [aktualizováno 10. 5. 2017] (anglicky)&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Navd00</name></author>
		
	</entry>
</feed>