moje weby:    Eshop - internetový obchod kde seženete parádní věcičky    www.imlok.net    elektrika (schémata, značky, postupy)    návody na deskové hry    Wordpress

iMlok.net
vodMobilPocket PCPClnkyLicenn ujednnKontakt
  

SQL - Optimalizace tabulek

Základní 3 optimalizace tabulek.

1. rozdělení sloupců
2. primární klíč
3. master a detail

Rozdělení sloupců

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ů!

21.04.2008 - Mlok -


Copyright   - MLOK -
Poet nvtev: 39690.213