Upload
turi
View
48
Download
0
Embed Size (px)
DESCRIPTION
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ť - PowerPoint PPT Presentation
Citation preview
Normalizácia DBNormalizácia DBalebo ako vytvoriť dobrú databázu
(rečou normálneho človeka)
Spracoval, vypracoval a prepracoval: Ing. Michal COPKO
Čo máme?Č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íkladPrí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ý krokNultý 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ý krokPrvý 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
Po prvom krokuPo prvom kroku• Učiteľ
– Meno– Priezvisko– Dátum narodenia– Ulica– PSČ– Mesto
• Trieda– Označenie– Počet žiakov– Popis
• Učebňa– Číslo učebne– Poschodie– Trakt– Počet miest
• Predmet– Názov– Skratka– Popis
Načo nám to bolo treba?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
Pred druhým krokomPred druhým krokom• Učiteľ
– ID učiteľ (PK)– Meno– Priezvisko– Dátum narodenia– Ulica– PSČ– Mesto
• Trieda– ID trieda (PK)– Označenie– Počet žiakov– Popis
• 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ý krokDruhý 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?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ťahyPravidlá 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 krokuPo druhom kroku
Učiteľ : Trieda1 : 1
Učiteľ : Učebňa1 : n
Trieda : Učebňa1 : 1
Učiteľ : Predmetm : n
Je vzťah, ktorý priraďuje učiteľa k triede a tým z neho vytvára triedneho učiteľa
Je vzťah, ktorý priraďuje učiteľa k učebni a tým z neho vytvára správcu učebne
Je vzťah, ktorý priraďuje učebňu k triede a tým z nej vytvára kmeňovú učebňu triedy
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?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
Pred tretím krokomPred tretím krokom
• 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)
• Učebňa– ID učebňa (PK)– Číslo učebne– Poschodie– Trakt– Počet miest– ID učiteľ (FK)
• Predmet– ID predmet (PK)
– Názov
– Skratka
– Popis
• Predmet - Učiteľ– ID predmet (PK, FK)
– ID učiteľ (PK, FK)
Tretí krokTretí 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
Po treťom krokuPo treťom kroku
• 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
• 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?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Š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 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
Po štvrtom krokuPo štvrtom kroku
• 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
• 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
• Mesto– ID mesto (PK) - INTEGER– Názov – VARCHAR– PSČ – VARCHAR (alebo INTEGER)
HOTOVOHOTOVO
ETO VSJO