První optimalizace tabulky je o tom, že je potřeba rozdělit hodnoty do jednotlivých sloupců tak jak patří.
Dejme tomu že někdo vytvoří tabulku s jedním sloupcem a naláduje do něj všechen balast který tam ani nepatří jako v následujícím příkladu:
Jméno
Jan Novak, Prkenna 4, Bratislava 111 00
Radek Kveton, Dlouha 44, Brno, 555 00
No tohle je například naprostý nesmysl, správně se mají jednotlivé hodnoty dávat do správných kolonek a to už i proto aby se s těmito daty dalo dále pracovat.
Takže z tohoto balastu uděláme jinou tabulku:
Jméno
Prijmeni
Ulice
Mesto
PSC
Jan
Novak
Prkenna 4
Bratislava
111 00
Radek
Kveton
Dlouha 44
Brno
555 00
A data budou hned mnohem přehlednější.
Primární klíč
Každá tabulka bez rozdílu by měla mít svůj jedinečný neskládaný Primární klíč (dále jen PK).
Jde o to že primární, neboli unikátí klíč lze skládat i z více sloupců. A může jim být i textová hodnota.
Správně optimalizovaná tabulka by měla obsahovat sloupec s PK a to nejlépe celočíselným automaticky rostoucím.
Zpravidla se takový sloupec nazývá ID.
V ORACLE se na to dělá trigger se sekvenční tabulkou a v MYSQL lze ještě jednodušeji prostě mu zadat že má dávat při INSERTU následující neopakovatelné číslo viz:
Syntaxe:
Takže výsledná tabulka bude vypadat takto:
ID
Jméno
Prijmeni
Ulice
Mesto
PSC
1
Jan
Novak
Prkenna 4
Bratislava
111 00
2
Radek
Kveton
Dlouha 44
Brno
555 00
MASTER / DETAIL
A poslední třetí optimalizace se týká rozdělení tabulky na dvě.
Vemezměme si náš příklad, máme v tabulce jména a města. Ale města se mohou opakovat, potom je naprosto zbytečné mít je v jedné tabulce a ta bude nabývat na objemu a to jak v KB tak i při vyhledávání při velkém množství záznamů-
Takže ji rozdělíme na dvě. Jedna bude obsahovat pouze města a druha už konkrétní adresy ale navázané na města.
Rovnou do tabulky s městy dám i PSČ, což sice není až tak reálný příklad ale pro ukázku naprosto ideální (v rámci jednoho města může být víc PSČ).
Tomuto propojení říkáváme cizí klíč (foreign key).
Tabulka s městy
ID
Mesto
PSC
1
Bratislava
111 00
2
Brno
555 00
Tabulka s lidmi
ID
ID_mesto
Jméno
Prijmeni
Ulice
1
1
Jan
Novak
Prkenna 4
2
2
Radek
Kveton
Dlouha 44
2
1
Michal
Holik
Vypadovka 3
Povšimněte si že v našem příkladu bydlí pan Holik a pan Novák v Bratislavě. No a pokud by jste chtěli změnit název města provedete to na jednom místě a máte to rychle a snadno.
Stejně tak u výběru dat použijete proste jenom ID_mesto = 1.
TIP
Doporučuji dávat do názvu sloupce ID_nazevtabulky (ídé podtržítko) a za to název tabulky kam je cizí klíč směřován. Může to vám, nebo těm po vás hodně ulehčit práci s hledáním vazeb sloupců!