Príklad

Úvod

Normalizácia databázy je dôležitý krok pri návrhu, vývoji, a implementovania nového informačného systému, ako aj spätnej analýzy existujúeho návrhu informačného systému. Najväčšia výhoda  normalizácie je odstránenie dátovej redundancie (t.j.opakovaný výskyt tých istých dát v systéme) a zaistenie  správnosti vzťahov medzi  dátami - integrity dát.  Správna konfigurácia normalizovaných tabuliek súčasne s dobrým výberom indexácie tabuliek (t.j. vhodne riešeným systémom prístupových klúčov) vedú k vyším výkonom aplikácie a jednoduchšej správe databázovej aplikácie. Proces normalizácie predstavuje sled 4 normalizačných krokov, z ktorých každá vedie k vyššiemu stupňu normalizácie. Ich poradie je dôležité, nedajú sa obísť resp. preskočiť. Ich úlohou je usporiadať dátové položky do vhodných skupín a vytvoriť medzi skupinami správne vzťahy.  Sú to tieto: prvá, druhá, tretia a Boyce-Codd -ová Normálna forma, označované aj  1NF 2NF 3NF BCNF

Po pochopení koncepcie normalizácie, ukážeme si ako zvoliť indexy pre tieto tabuľky (index = prístupový kĺúč).


Prvá Normálna Forma

Predpokladajme že máme sytém evidencie študentov, ktorý predstavuje takáto tabuľka:

ID študenta Priezvysko Meno Špecializácia Dátum narodenia Kurz Inštruktor kurzu
123 Smith Joe Computer Engineering 1/1/1980 CSE 441W Raj
123 Smith Joe Computer Engineering 1/1/1980 CSE 471 Das
123 Smith Joe Electrical Engineering 1/1/1980 EE 310 Choi
234 Doe Jane Business 2/4/1981 MGMT 100 Clark
234 Doe Jane Business 2/4/1981 MIS 442 DeMartino
678 Brasky Bill Computer Science 1/9/1982 MIS 442 DeMartino
678 Brasky Bill Computer Science 1/9/1982 CSE 471 Das

Čo má definované tabuľka v Prvej Normálnej forme (1NF)?

Ako transformovať tabuľku do prvej normálnej formy.

Tu je nanovo definovaná tabulka v 1NF:

ID študenta Priezvysko Meno Špecializácia Dátum narodenia Kurz Inštruktor kurzu
123 Smith Joe Computer Engineering 1/1/1980 CSE 441W Raj
          CSE 471 Das
      Electrical Engineering   EE 310 Choi
234 Doe Jane Business 2/4/1981 MGMT 100 Clark
          MIS 442 DeMartino
678 Brasky Bill Computer Science 1/9/1982 MIS 442 DeMartino
          CSE 471 Das

Druhá Normálna Forma

Čo má definované tabuľka v druhej normálnej forme  (2NF)?

Ako transformovať tabuľku do druhej normálnej formy.

Tabuľka študenta

ID študenta Priezvysko Meno Dátum narodenia
123 Smith Joe 1/1/1980
234 Doe Jane 2/4/1981
678 Brasky Bill 1/9/1982

 

Tabuľa kurzov

Kurz Inštruktor kurzu
CSE 441W Raj
CSE 471 Das
EE 310 Choi
MGMT 100 Clark
MIS 442 DeMartino

 

Tabuľa špecializácie študenta

ID študenta Špecializácia
123 Computer Engineering
123 Electrical Engineering
234 Business
678 Computer Science

 

Tabuľka kurzov študenta

ID študenta Kurz
123 CSE 441W
123 CSE 471
123 EE 310
234 MGMT 100
234 MIS 442
678 MIS 442
678 CSE 471

Tretia Normálna Forma

Čo definuje tabuľka v tretej normálnej forme?

Ako transformovať tabuľku do tretej normálnej formy.


Boyce-Codd Normálna Forma

Čo definuje tabuľka v Boyce-Codd normálnej forme?

Ako transformovať tabuľku do Boyce-Codd normálnej formy.

Nasledovný príklad nám ukáže ako transformujeme tabuľku do BCNF.
bcnf


Rýchly test

Urobte  tento rýchly test aby sme videli ako dobre ste doposial pochopili koncepciu normálnych foriem. Ak budete neuspešný v ľubovolnej otázke, vrátte sa a pozrite si odskek tak aby ste pochopili svoju chybu.

  1. Identifikujte najvyššiu úroveň normalizácie nasledovnwej tabuľky:
    [IDZam, Meno, Oddel, Plat]
    Pripomíname, že zamestnanec je jedine v jednom oddelení. 

    1NF
    2NF
    3NF
    BCNF
    Ani jeden z nich

  2. Identifikujte najvyššiu úroveň normalizácie nasledovných tabuliek:
    [ID_Zamestnanca, Meno_zamestnanca, Plat_Zamestnanca, ID_oddelenia]
    Pripomíname, že zamestnanec je len v jednom oddelení..

    1NF
    2NF
    3NF
    BCNF
    Ani jeden z nich

  3. Identifikujte najvyššiu úroveň normalizácie nasledovných tabuliek:
    [ID_Zamestnanca, Praca_Týžden_Začiatok_Datum, Praca_Tyzden_Koniec_Datum, Odpracovane_Hodiny, ID_Projektu, Nazov_Projektu, Zaciatok_Projektu]

    1NF
    2NF
    3NF
    BCNF
    Ani jedn z nich

  4. Identifikujte najvyššiu úroveň normalizácie nasledovných tabuliek:
    [Employee_ID, Project_ID, Project_Name, Project_Start]
    Pripomíname, že zamestnanec može pracovať na viac ako jednom projekte.

    1NF
    2NF
    3NF
    BCNF
    Ani jedn z nich

  5. Identifikujte najvyššiu úroveň normalizácie nasledovných tabuliek:
    [Department_ID, Department_Name, Department_Manager_ID]

    1NF
    2NF
    3NF
    BCNF
    Ani jedn z nich


Indexy

Indexy zvyšujú výkon prehľadávania tabuliek a spájania tabuliek medzi sebou. Na druhej strane dokážu zároveň spomaliť čas vkladania, mazania a modifikácie záznamov v tabuľke, preto je veľmi dôležité vybrať vhodné indexy.

Index je v podstate rýchlejšia cesta ako nájsť riadok s udanou skupinou informačných položiek. To je to, čo urýchľuje vyhľadávanie vo vnútri klauzuly WHERE vo vyhľadávacom príkaze. Aby index pracoval efektívne, musí byť obnovený zakaždým keď je záznam pridaný, zmazaný, alebo modifikovaný. Databázový server može sa zahltit take a hit ak príliš veľa prebytočných stĺpcov je indexovaných.

Je tu zopár určitých stlpcov, ktoré by mali byť indexované. Sú to tieto:

Je tu zopár stĺpcov ktoré by sa nemali indexovať. Sú to tieto:

My sme normalizovali originálny spredsheet do nasledovnej skupiny šiestich tabuliek, použitím štyroch foriem normalizácie, a výberu vhodných kľúčov a idndexov. 

Primárny kľúč by mal byť statický, málokedy sa meniaci. Z toho dôvodu, sme vytvorili v tabuľke Kurzov číselné pole ID_Kurzy obsahujúce ľubovolné čísla. Túto stratégiu by sme mohli uplatniť aj v tabuľke Špecializácia, nahradiac ID_Špecializácie údajmi obsahujúce ľubovolné identifikačné čísla a tak  mať Kód_Špecializácie a Popis_Špecializácie, ktoré budú závisieť od čísla ID_Špecializácie. To isté by sme mohli urobiť s tabuľkou Oddelenie. Doporučené indexy pre každú tabuľku by mohli byť takéto:

Tabuľka študentov
ID_Študenta Priezvysko Meno Datum_narodenia
123 Smith Joe 1/1/1980
234 Doe Jane 2/4/1981
678 Brasky Bill 1/9/1982

 

Tabuľka špecializácie študenta
ID_Študenta ID_Špecializácie
123 CE
123 EE
234 BUS
678 CS

 

Tabuľka špecializácií
ID_Špecializácie Popis_Špecializácie
CE Computer Engineering
EE Electrical Engineering
BUS Business
CS Computer Science

 

Tabuľka kurzov študenta
ID_Študenta ID_Kurzu
123 321465
123 231654
123 123754
234 367454
234 357495
678 357495
678 321465

 

Tabuľka kurzov
ID_Kurzu Rok Semester ID_Oddelenia Číslo_Kurzu Inštruktor
123754 2003 Fall EE 310 Choi
231654 2003 Fall CSE 441W Raj
321465 2004 Spring CSE 471 Das
357495 2004 Spring MIS 442 DeMartino
367454 2003 Fall MGMT 100 Clark

 

Tabuľka oddelení
ID_Oddelenia Popis_Oddelenia
CSE Computer Science and Engineering
EE Electrical Engineering
MGMT Management
MIS Managent Information Systems

Evaluation

  1. Vytvorte sériu tabuliek v Boyce-Codd-ovej normálnej forme z nasledovného ER modelu:
    [ER Model]

  2. Zo série normalizovaných tabuliek, ktorú ste vytvorili v predošlej úlohe naprojektujte fyzickú definíciu SQL tabuľky pre každú z tabuliek zahrnúc typ dát, indexy a obmedzenia  (data types, indexes, and constraints).

  3. Criticky vyhodnotte výhody a nevýhody v indexácii každého zo stĺpcov v nasledovnej definícii tabuľky:
    [ID_Zamestnanca, Meno_Zamestnanca, Mzda_Zamestnanca, ID_Oddelenia]

     

    Email address: