Třetí normální forma: Porovnání verzí

Smazaný obsah Přidaný obsah
Glutexo (diskuse | příspěvky)
m Přidej upozornění na neencyklopedický styl.
Glutexo (diskuse | příspěvky)
m Oprava typografie: pomlček a závorek.
Řádek 27:
Moc hezké, ale zkuste v této struktuře napsat příkaz [[SELECT]], který vybere deset nejlépe placených zaměstnanců. Nebo třeba [[SELECT]], který vybere oddělení s více než deseti zaměstnanci.<br />
Tato struktura rozhodně nesplňuje bod 3 z výše uvedených doporučení - adresa by měla být rozdělena na ulici, město, PSČ a stát a pro každého zaměstnance by mělo být uvedeno zvlášť jméno, zvlášť příjmení a zvlášť plat.<br />
Tato struktura také rozhodně nesplňuje bod 2 - jsou zde dohromady v jedné tabulce smíchány údaje o lidech a o odděleních.<br />
 
===Druhý pokus o řešení===
Řádek 34:
Tabulka '''Oddělení''':
* číslo oddělení ([[Primární klíč|primární klíč]])
* adresa budovy - ulice
* adresa budovy - číslo
* adresa budovy - město
* adresa budovy - PSČ
* adresa budovy - stát
* ID šéfa ([[Cizí klíč|cizí klíč]] do tabulky Lidé)
 
Tabulka '''Lidé''':
* ID člověka ([[Primární klíč|primární klíč]] - uměle vytvořené zaměstnanecké číslo, žádný z existujících sloupců ani jejich skupinu nemohu použít jako primární klíč, neboť ve firmě mohou existovat dva Josefové Novákové pracující ve stejném oddělení za stejný plat)
* jméno
* příjmení
Řádek 48:
* číslo oddělení ([[Cizí klíč|cizí klíč]] do tabulky Oddělení)
 
Už je to o něco lepší - rozhodně už dokážu pomocí [[SQL]] příkazu najít nejlépe placené zaměstnance nebo zjistit počet zaměstnanců jednotlivých oddělení. Problém je ještě v doporučení číslo 4 v případě tabulky Oddělení - firma bude nejspíš mít hodně oddělení, ale málo budov (možná dokonce jenom jednu), rozhodně bude hodně oddělení sedět vždy ve stejné budově. V tabulce Oddělení se mi tedy bude pořád dokola opakovat několik málo adres budov. Správně by tedy měly být adresové sloupce vyvedeny do zvláštní tabulky.
 
===Třetí pokus o řešení===
Řádek 66:
 
Tabulka '''Budovy''':
* ID budovy ([[Primární klíč|primární klíč]] - uměle vytvořené pořadové číslo budovy)
* adresa budovy - ulice
* adresa budovy - číslo
* adresa budovy - město
* adresa budovy - PSČ
* adresa budovy - stát
 
To už vypadá docela dobře. Dalo by se diskutovat o tom, jestli ''číslo oddělení'' je opravdu vhodný [[Primární klíč|primární klíč]], co se stane, když dojde k přečíslování oddělení, nebo třeba o tom, že podle PSČ a státu dokážu určit město, takže podle doporučení 5 je položka ''adresa budovy - město'' vlastně přebytečná, ale v zásadě jsme se díky pravidlům '''3NF''' dostali ke struktuře, se kterou by nemělo být složité pracovat pomocí příkazů jazyka [[SQL]].
 
== Externí odkazy ==
* [http://interval.cz/clanky/databaze-a-jazyk-sql/ Databáze a jazyk SQL] - popis prvních čtyř normálních forem (česky)
 
{{Normalizace databáze}}