210 likes | 347 Views
Normalizácia DB. alebo ako vytvoriť dobrú databázu (rečou normálneho človeka). Spracoval, vypracoval a prepracoval: Ing. Michal COPKO. Čo máme?. Máme kopec údajov, ktoré chceme spracovať
E N D
Normalizácia DB alebo ako vytvoriť dobrú databázu (rečou normálneho človeka) Spracoval, vypracoval a prepracoval: Ing. Michal COPKO
Čo máme? • Máme kopec údajov, ktoré chceme spracovať • Predpokladom je aby sme si zozbierali všetky potrebné informácie o tom, aké dáta má databáza uchovávať a aké výstupy chceme z databázy „vydolovať“
Príklad • Máme vytvoriť databázu, ktorá bude uchovávať údaje zo školského systému a to konkrétne: mená a bydliská učiteľov, triedy, čísla učební, dátum narodenia učiteľov, údaje o umiestnení učební, počet miest na sedenie v učebni, trakt školy v ktorom je umiestnená učebňa, počet žiakov v triedach, popis tried, názov predmetu, skratku predmetu, popis predmetu • Z databázy by sme chceli zistiť tieto údaje: • zoznam predmetov, ktoré učí učiteľ • zoznam učební a ich správcov • zoznam tried, triednych učiteľov a kmeňových učební
Nultý krok • V nultom kroku sa zbavíme všetkých zložených atribútov, teda takých, kde sú nejaké oddeľovače slúžiace na oddelenie viacerých dát • V našom zadaní by to mohlo byť napríklad bydlisko učiteľa, ktoré sa dá rozdeliť na ulicu, PSČ a mesto
Prvý krok • V prvom kroku si musíme roztriediť údaje do súvisiacich skupín • Z príkladu vidíme, že vždy zbierame údaje o nejakých objektoch a tieto údaje sú vlastne nejakými ich vlastnosťami • V našom prípade si rozdelíme dáta do týchto skupín: Učiteľ, Trieda, Učebňa, Predmet
Učiteľ Meno Priezvisko Dátum narodenia Ulica PSČ Mesto Trieda Označenie Počet žiakov Popis Po prvom kroku • Učebňa • Číslo učebne • Poschodie • Trakt • Počet miest • Predmet • Názov • Skratka • Popis
Načo nám to bolo treba? • Po tomto prvom kroku máme vlastne kus práce za sebou pretože sme si vytvorili tabuľky • V ďalšom kroku si vytvoríme vzťahy medzi tabuľkami • Najprv však nesmieme zabudnúť na dôležitú vec a tou vecou je náš starý známy primárny kľúč (PK), ktorý identifikuje každý záznam v tabuľke a zabezpečuje entitnú integritu
Učiteľ ID učiteľ (PK) Meno Priezvisko Dátum narodenia Ulica PSČ Mesto Trieda ID trieda (PK) Označenie Počet žiakov Popis Pred druhým krokom • Učebňa • ID učebňa (PK) • Číslo učebne • Poschodie • Trakt • Počet miest • Predmet • ID predmet (PK) • Názov • Skratka • Popis
Druhý krok • V druhom kroku si vytvoríme vzťahy medzi tabuľkami • Z minulých hodín (ne)vieme, že poznáme tri typy vzťahov a to 1:1, 1:n, m:n • V zadaní sme mali požiadavku na zistenie týchto údajov: • zoznam predmetov, ktoré učí učiteľ • zoznam učební a ich správcov • zoznam tried, triednych učiteľov a kmeňových učební • Vezmeme teda naše tabuľky a ideme zistiť vzťahy
Ako na druhý krok? • Základom je pýtať sa vždy z pohľadu oboch tabuliek • Vezmime si príklad • Chceme určiť taký vzťah, aby sme vedeli určiť učebne a ich správcov. • Správcom učebne je vždy učiteľ • Vytvárame vzťah medzi tabuľkou Učiteľ a tabuľkou Učebňa • Pýtame sa z jednej strany: Koľko učiteľov je správcom jednej učebne? Odpoveď je 1. • Pýtame sa z druhej strany: Koľkým učebniam môže byť jeden učiteľ správcom? Odpoveď je viacerým (teda n učebniam)
Pravidlá pre vzťahy • Vždy sa musíme pýtať z oboch strán! • Ak je v oboch otázkach odpoveď „jedna, jeden, jedno“ vzťah je 1:1 • Ak je v jednej otázke odpoveď „jedna, jeden, jedno“ a v druhej „n“ vzťah je 1:n • Ak je v oboch otázkach odpoveď „n“ vzťah je m:n
Po druhom kroku Učiteľ : Trieda 1 : 1 Je vzťah, ktorý priraďuje učiteľa k triede a tým z neho vytvára triedneho učiteľa Učiteľ : Učebňa 1 : n Je vzťah, ktorý priraďuje učiteľa k učebni a tým z neho vytvára správcu učebne Trieda : Učebňa 1 : 1 Je vzťah, ktorý priraďuje učebňu k triede a tým z nej vytvára kmeňovú učebňu triedy Učiteľ : Predmet m : n Je vzťah, ktorý priraďuje učiteľa k predmetu a tým z neho vytvára vyučujúceho daného predmetu
Načo nám to bolo treba? • Po tomto druhom kroku vieme, aké vzťahy „panujú“ medzi tabuľkami • Tento krok bol dôležitý na to, aby sme si vedeli do tabuliek vložiť cudzie kľúče (FK), prípadne vytvoriť novú tabuľku, ak máme vzťah m:n • Ja teraz „vypotím“ nejaké cudzie kľúče, ale nie z brucha – pravidlá tzv. exportu kľúčov máte popísané v nasledujúcej prezentácii o modelovaní databáz
Učiteľ ID učiteľ (PK) Meno Priezvisko Dátum narodenia Ulica PSČ Mesto Trieda ID trieda (PK) Označenie Počet žiakov Popis ID učiteľ (FK) ID učebňa (FK) Pred tretím krokom • Učebňa • ID učebňa (PK) • Číslo učebne • Poschodie • Trakt • Počet miest • ID učiteľ (FK) • Predmet - Učiteľ • ID predmet (PK, FK) • ID učiteľ (PK, FK) • Predmet • ID predmet (PK) • Názov • Skratka • Popis
Tretí krok • V treťom kroku priradíme jednotlivým stĺpcom dátové typy • Pre primárny kľúč budeme používať vždy dátový typ INTEGER • Nepýtajte sa prečo. Robí sa to proste tak a má to svoje dôvody. Ak to chcete vedieť tak si prečítajte prezentáciu o normalizácii
Učiteľ ID učiteľ (PK) - INTEGER Meno - VARCHAR Priezvisko - VARCHAR Dátum narodenia - DATE Ulica - VARCHAR PSČ - VARCHAR Mesto - VARCHAR Trieda ID trieda (PK) - INTEGER Označenie - VARCHAR Počet žiakov - INTEGER Popis - TEXT ID učiteľ (FK) - INTEGER ID učebňa (FK) - INTEGER Po treťom kroku • Učebňa • ID učebňa (PK) - INTEGER • Číslo učebne - VARCHAR • Poschodie - INTEGER • Trakt - VARCHAR • Počet miest - INTEGER • ID učiteľ (FK) - INTEGER • Predmet • ID predmet (PK) - INTEGER • Názov - VARCHAR • Skratka - VARCHAR • Popis - TEXT • Predmet - Učiteľ • ID predmet (PK, FK) - INTEGER • ID učiteľ (PK, FK) - INTEGER
A čo sme získali týmto? • Týmto krokom sme si určili aký typ dát sa bude v danom stĺpci nachádzať • Inteligentné DBS nám po zvolení dátového typu zaistia pri vkladaní údajov doménovú integritu a teda kontrolu, či sme vložili do daného „políčka“ správny údaj (dátum, číslo, znaky, ...)
Štvrtý krok • V tomto kroku nám už len zostáva pozrieť sa, či sa nám v tabuľke nevyskytujú nejaké nadbytočné dáta • Ak áno, treba z týchto dát vytvoriť novú tabuľku a s pôvodnou tabuľkou ju previazať cudzím kľúčom
Máme tam také údaje? • Máme a kto to nevidí, tak je na to jednoduchý liek a to: • Zájsť k očnému, alebo • Vložiť do tabuľky zopár desiatok údajov a zistiť, ktoré údaje sa opakujú • V našom prípade to budú údaje o meste a PSČ a teda z nich vytvoríme novú tabuľku s názvom Mesto a prevedieme ju všetkými doterajšími krokmi
Učiteľ ID učiteľ (PK) - INTEGER Meno - VARCHAR Priezvisko - VARCHAR Dátum narodenia - DATE Ulica - VARCHAR ID Mesto - INTEGER Trieda ID trieda (PK) - INTEGER Označenie - VARCHAR Počet žiakov - INTEGER Popis - TEXT ID učiteľ (FK) - INTEGER ID učebňa (FK) - INTEGER Po štvrtom kroku • Učebňa • ID učebňa (PK) - INTEGER • Číslo učebne - VARCHAR • Poschodie - INTEGER • Trakt - VARCHAR • Počet miest - INTEGER • ID učiteľ (FK) - INTEGER • Predmet • ID predmet (PK) - INTEGER • Názov - VARCHAR • Skratka - VARCHAR • Popis - TEXT • Mesto • ID mesto (PK) - INTEGER • Názov – VARCHAR • PSČ – VARCHAR (alebo INTEGER) • Predmet - Učiteľ • ID predmet (PK, FK) - INTEGER • ID učiteľ (PK, FK) - INTEGER
HOTOVO ETO VSJO