Přejít na obsah

Cvičení - Normalizace databáze

Praktické cvičení – Normalizace databáze

Zadání

Škola si vede evidenci žáků, jejich tříd a předmětů v jedné tabulce:

ŽákTřídaOborPředmět
Jan Novák3.AITDatabáze
Jan Novák3.AITPočítačové sítě
Petra Malá3.AITDatabáze
Petra Malá3.AITProgramování
Tomáš Veselý3.BElektrotechnikaPočítačové sítě
Tomáš Veselý3.BElektrotechnikaElektronika

Takto navržená databáze obsahuje velké množství opakujících se údajů.

Vaším úkolem je databázi normalizovat.

Úkol 1 – Najděte problémy

Prohlédněte si původní tabulku a napište alespoň 3 údaje, které se zbytečně opakují.

Například:




Úkol 2 – Rozdělte databázi

Vytvořte čtyři tabulky:

TRIDA

Navrhněte sloupce například:

SloupecVýznam
idjednoznačné ID třídy
nazevnázev třídy
obornázev oboru

ZAK

SloupecVýznam
idjednoznačné ID žáka
jmenojméno žáka
trida_idtřída, do které žák patří

PREDMET

SloupecVýznam
idjednoznačné ID předmětu
nazevnázev předmětu

ZAPIS

Tabulka bude evidovat, který žák má který předmět.

SloupecVýznam
zak_idžák
predmet_idpředmět

Úkol 3 – Určete klíče

V každé tabulce označte:

PK – primární klíč

FK – cizí klíč

Například:

ZAK.id → PK

ZAK.trida_id → FK

Úkol 4 – Nakreslete databázi v drawDB

V drawDB vytvořte databázový model obsahující:

  • TRIDA

  • ZAK

  • PREDMET

  • ZAPIS

Propojte tabulky pomocí relací.

Výsledný model by měl odpovídat přibližně vztahům:

TRIDA → ZAK

jedna třída může mít více žáků

ZAK → ZAPIS

jeden žák může mít více zápisů

PREDMET → ZAPIS

jeden předmět může mít více zápisů

Bonus

Do tabulky ZAPIS přidejte:

datum_zapisu

Rozhodněte, proč tento údaj patří právě do tabulky ZAPIS a ne například do tabulky ZAK.

Co odevzdat

Odevzdejte:

  1. screenshot hotového databázového modelu z drawDB,

  2. model musí obsahovat všechny 4 tabulky,

  3. musí být označeny primární a cizí klíče,

  4. tabulky musí být správně propojené relacemi,

  5. pod obrázek napište jednu krátkou odpověď:

Proč je normalizovaná databáze lepší než původní jedna velká tabulka?

Kontrola před odevzdáním

Před odevzdáním si zkontrolujte:

  • neopakuji zbytečně jméno žáka?

  • neopakuji zbytečně název třídy?

  • neopakuji zbytečně název předmětu?

  • používám místo opakování údajů ID?

  • má každá tabulka svůj účel?

  • jsou tabulky správně propojené?

Hlavní myšlenka

Každou informaci ukládáme pokud možno pouze jednou a ostatní tabulky se na ni odkazují pomocí ID.

V tomto kurzu nejsou povoleny komentáře.