základné pojmy a návrh databáz

42
Základné pojmy a návrh Základné pojmy a návrh databáz databáz Základné pojmy Základné pojmy Normalizácia DB Normalizácia DB Export cudzích kľúčov Export cudzích kľúčov

Upload: takara

Post on 10-Jan-2016

60 views

Category:

Documents


12 download

DESCRIPTION

Základné pojmy a návrh databáz. Základné pojmy Normalizácia DB Export cudzích kľúčov. Databázový systém. DBS = BD + SRBD Je zložený z bázy dát a skupiny programov nazývanej Systém Riadenia Bázy Dát - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Základné pojmy a návrh databáz

Základné pojmy a Základné pojmy a návrh databáznávrh databáz

Základné pojmyZákladné pojmy

Normalizácia DBNormalizácia DB

Export cudzích kľúčovExport cudzích kľúčov

Page 2: Základné pojmy a návrh databáz

Databázový systémDatabázový systém

• DBS = BD + SRBDDBS = BD + SRBD

• Je zložený z bázy dát a skupiny programov Je zložený z bázy dát a skupiny programov nazývanej Systém Riadenia Bázy Dátnazývanej Systém Riadenia Bázy Dát

• SRBD pomáha realizovať základné databázové SRBD pomáha realizovať základné databázové funkcie - umožňuje komunikáciu s používateľom, funkcie - umožňuje komunikáciu s používateľom, definovanie, údržbu, uloženie a výber dát + definovanie, údržbu, uloženie a výber dát + kontrolu a riadenie databázkontrolu a riadenie databáz

• Databáza je množina dát, ktoré nejakým Databáza je množina dát, ktoré nejakým spôsobom súvisia spôsobom súvisia

Page 3: Základné pojmy a návrh databáz

Relačné databázyRelačné databázy

• Sú najviac používaným typom databáz vo Sú najviac používaným typom databáz vo svetesvete

• Ich základom sú dvojrozmerné entity – Ich základom sú dvojrozmerné entity – tabuľkytabuľky

• Tabuľky sa skladajú z riadkov a stĺpcov a Tabuľky sa skladajú z riadkov a stĺpcov a zhromažďujú údaje o jednom druhu zhromažďujú údaje o jednom druhu objektov (napr. osobné údaje objektov (napr. osobné údaje zamestnancov firmy)zamestnancov firmy)

Page 4: Základné pojmy a návrh databáz

Príklad tabuľkyPríklad tabuľky

P.č.P.č. MenoMeno PriezviskoPriezvisko VekVek PohlaviPohlaviee

11 JozefJozef PúčikPúčik 1313 MM

22 MáriaMária ĎuríčkováĎuríčková 4646 ZZ

33 JánJán HraškoHraško 55 MM

Page 5: Základné pojmy a návrh databáz

Riadky a stĺpce tabuľkyRiadky a stĺpce tabuľky

• Jeden riadok predstavuje tzv. jeden záznam Jeden riadok predstavuje tzv. jeden záznam (alebo vetu), teda skupinu vzájomne súvisiacich (alebo vetu), teda skupinu vzájomne súvisiacich údajov (usporiadanú n-ticu)údajov (usporiadanú n-ticu)

• Stĺpce sa nazývajú tiež atribúty objektov a údaje Stĺpce sa nazývajú tiež atribúty objektov a údaje v nich sú jedného rovnakého dátového typuv nich sú jedného rovnakého dátového typu

• Každý stĺpec má svoje meno, aby sa dal Každý stĺpec má svoje meno, aby sa dal jednoducho identifikovaťjednoducho identifikovať

• Každý riadok má svoj jednoznačný identifikátor Každý riadok má svoj jednoznačný identifikátor nazývaný aj nazývaný aj primárny kľúčprimárny kľúč

Page 6: Základné pojmy a návrh databáz

Primárne a cudzie kľúčePrimárne a cudzie kľúče

• Primárny kľúč je atribút alebo skupina atribútov, Primárny kľúč je atribút alebo skupina atribútov, ktoré jednoznačne identifikujú riadok v tabuľkektoré jednoznačne identifikujú riadok v tabuľke

• Primárny kľúč má skratku PK (primary key)Primárny kľúč má skratku PK (primary key)

• Cudzí kľúč je atribút alebo skupina atribútov Cudzí kľúč je atribút alebo skupina atribútov tvoriacich v inej relácii primárny kľúčtvoriacich v inej relácii primárny kľúč

• Používa sa na previazanie dvoch alebo viacerých Používa sa na previazanie dvoch alebo viacerých tabuliektabuliek

• Cudzí kľúč má skratku FK (foreign key)Cudzí kľúč má skratku FK (foreign key)

Page 7: Základné pojmy a návrh databáz

Vzťahy medzi tabuľkamiVzťahy medzi tabuľkami

• Na to, aby v databáze nemusela existovať Na to, aby v databáze nemusela existovať redundancia, s výhodou využívame možnosť redundancia, s výhodou využívame možnosť „previazať“ dve tabuľky pomocou primárnych „previazať“ dve tabuľky pomocou primárnych kľúčovkľúčov

• Napr. ak máme tabuľku s osobnými údajmi Napr. ak máme tabuľku s osobnými údajmi zamestnancov, kde uchovávame mesto a PSČ, zamestnancov, kde uchovávame mesto a PSČ, vznikali by duplicitné dáta, zaberajúce príliš veľa vznikali by duplicitné dáta, zaberajúce príliš veľa miestamiesta

• Previazanie tabuliek je znázornené na ďalšom Previazanie tabuliek je znázornené na ďalšom snímkusnímku

Page 8: Základné pojmy a návrh databáz

Rod_cislo (PK)Rod_cislo (PK) MenoMeno PriezviskoPriezvisko UlicaUlica MestoMesto PSCPSC

89113182138911318213 JánJán HraškoHraško Záhradná 5Záhradná 5 Košice 1Košice 1 0400104001

88521798318852179831 SnehSnehuu

LienkaLienka Palácová 13Palácová 13 RozprávkovoRozprávkovo 1234512345

82051712348205171234 ValiVali BukBuk Hôrna 96Hôrna 96 TatryTatry 7433174331

Rod_cislo (PK) Meno Priezvisko UlicaID_mesto

(FK)

8911318213 Ján Hraško Záhradná 5 1

8852179831 Snehu Lienka Palácová 13 4

8205171234 Vali Buk Hôrna 96 3

ID_mesto (PK)

Mesto PSC

1 Košice 1 04001

2 Košice 23 04023

3 Tatry 74331

4 Rozprávkovo 12345

Page 9: Základné pojmy a návrh databáz

Vzťah 1:nVzťah 1:n

• Modeluje vzťah medzi tabuľkami, keď jeden objekt môže Modeluje vzťah medzi tabuľkami, keď jeden objekt môže vlastniť resp. popisovať viacero iných, resp. viac objektov vlastniť resp. popisovať viacero iných, resp. viac objektov môže mať rovnakú vlastnosťmôže mať rovnakú vlastnosť

• Je to napríklad vzťah medzi autorom a knihou, keď jeden Je to napríklad vzťah medzi autorom a knihou, keď jeden autor môže mať v databáze viac kníhautor môže mať v databáze viac kníh

ID_kniha (PK) Názov VydanieID_autor

(FK)

1Harry Potter a kameň mudrcov

1 1

2 Čin čin 1 2

... ... ... ...

99Harry Potter a ohnivá čaša

2 1

ID_autor (PK)

Meno

1 J.K. Rowling

2 Ľ. Podjavorinská

3 J. Verne

4 J.C. Hronský

Page 10: Základné pojmy a návrh databáz

Vzťah m:nVzťah m:n• Modeluje vzťah medzi tabuľkami, keď niekoľko objektov môže Modeluje vzťah medzi tabuľkami, keď niekoľko objektov môže

vlastniť resp. popisovať viacero inýchvlastniť resp. popisovať viacero iných

• Je to napríklad vzťah medzi zamestnancom a projektom na ktorom Je to napríklad vzťah medzi zamestnancom a projektom na ktorom pracuje v prípade, že na jednom projekte môže pracovať viac pracuje v prípade, že na jednom projekte môže pracovať viac zamestnancov a jeden zamestnanec môže pracovať na viacerých zamestnancov a jeden zamestnanec môže pracovať na viacerých projektochprojektoch

• Takýto vzťah nahradíme dvojicou vzťahov 1:nTakýto vzťah nahradíme dvojicou vzťahov 1:n

ID_projekt (PK)

Názov...

1Vzdelávanie dôchodcov

..

.

2Rekvalifikačný kurz

..

.

... ......

50Kurz požiarnej ochrany

..

.

MenoID_zamestnanec

(PK)

J. Sova 1

T. Takáčová 2

... ...

V. Dudáš 34

ID_zamestnanec (FK)

ID_projekt (FK)

1 50

1 2

... ...

34 2

Page 11: Základné pojmy a návrh databáz

Vzťah 1:1Vzťah 1:1

• Špeciálny, málo používaný prípad vzťahu 1:nŠpeciálny, málo používaný prípad vzťahu 1:n

• Modeluje vzťah medzi tabuľkami, keď jeden objekt môže Modeluje vzťah medzi tabuľkami, keď jeden objekt môže vlastniť resp. popisovať práve jeden inývlastniť resp. popisovať práve jeden iný

• Je to napríklad vzťah medzi triedou a triednym učiteľom kde Je to napríklad vzťah medzi triedou a triednym učiteľom kde jeden učiteľ je triednym učiteľom práve pre jednu triedujeden učiteľ je triednym učiteľom práve pre jednu triedu

Page 12: Základné pojmy a návrh databáz

Normalizácia DBNormalizácia DBalebo ako vytvoriť dobrú databázualebo ako vytvoriť dobrú databázu

Page 13: Základné pojmy a návrh databáz

Čo máme?Čo máme?

• Máme kopec údajov, Máme kopec údajov, ktoré chceme spracovaťktoré chceme spracovať

• Predpokladom je aby Predpokladom je aby sme si zozbierali všetky sme si zozbierali všetky potrebné informácie o potrebné informácie o tom, aké dáta má tom, aké dáta má databáza uchovávať a databáza uchovávať a aké výstupy chceme z aké výstupy chceme z databázy „vydolovať“databázy „vydolovať“

Page 14: Základné pojmy a návrh databáz

PríkladPríklad

• Máme vytvoriť databázu, ktorá bude uchovávať Máme vytvoriť databázu, ktorá bude uchovávať údaje zo školského systému a to konkrétne: mená údaje zo školského systému a to konkrétne: mená a bydliská učiteľov, triedy, čísla učební, dátum a bydliská učiteľov, triedy, čísla učební, dátum narodenia učiteľov, údaje o umiestnení učební, narodenia učiteľov, údaje o umiestnení učební, počet miest na sedenie v učebni, trakt školy v počet miest na sedenie v učebni, trakt školy v ktorom je umiestnená učebňa, počet žiakov v ktorom je umiestnená učebňa, počet žiakov v triedach, popis tried, názov predmetu, skratku triedach, popis tried, názov predmetu, skratku predmetu, popis predmetupredmetu, popis predmetu

• Z databázy by sme chceli zistiť tieto údaje: Z databázy by sme chceli zistiť tieto údaje: – zoznam predmetov, ktoré učí učiteľzoznam predmetov, ktoré učí učiteľ– zoznam učební a ich správcovzoznam učební a ich správcov– zoznam tried, triednych učiteľov a kmeňových učebnízoznam tried, triednych učiteľov a kmeňových učební

Page 15: Základné pojmy a návrh databáz

Prvý krokPrvý krok

• V prvom kroku si musíme roztriediť údaje V prvom kroku si musíme roztriediť údaje do súvisiacich skupíndo súvisiacich skupín

• Z príkladu vidíme, že vždy zbierame údaje Z príkladu vidíme, že vždy zbierame údaje o nejakých objektoch a tieto údaje sú o nejakých objektoch a tieto údaje sú vlastne nejakými ich vlastnosťamivlastne nejakými ich vlastnosťami

• V našom prípade si rozdelíme dáta do V našom prípade si rozdelíme dáta do týchto skupín: Učiteľ, Trieda, Učebňa, týchto skupín: Učiteľ, Trieda, Učebňa, PredmetPredmet

Page 16: Základné pojmy a návrh databáz

Po prvom krokuPo prvom kroku• UčiteľUčiteľ

– MenoMeno– PriezviskoPriezvisko– Dátum narodeniaDátum narodenia– UlicaUlica– PSČPSČ– MestoMesto

• TriedaTrieda– OznačenieOznačenie– Počet žiakovPočet žiakov– PopisPopis

• UčebňaUčebňa– Číslo učebneČíslo učebne– PoschodiePoschodie– TraktTrakt– Počet miestPočet miest

• PredmetPredmet– NázovNázov– SkratkaSkratka– PopisPopis

Page 17: Základné pojmy a návrh databáz

Načo nám to bolo treba?Načo nám to bolo treba?

• Po tomto prvom kroku máme vlastne kus Po tomto prvom kroku máme vlastne kus práce za sebou pretože sme si vytvorili práce za sebou pretože sme si vytvorili tabuľkytabuľky

• V ďalšom kroku si vytvoríme vzťahy medzi V ďalšom kroku si vytvoríme vzťahy medzi tabuľkamitabuľkami

• Najprv však nesmieme zabudnúť na Najprv však nesmieme zabudnúť na dôležitú vec a tou vecou je náš starý známy dôležitú vec a tou vecou je náš starý známy primárny kľúč (PK), ktorý identifikuje každý primárny kľúč (PK), ktorý identifikuje každý záznam v tabuľkezáznam v tabuľke

Page 18: Základné pojmy a návrh databáz

Pred druhým krokomPred druhým krokom• UčiteľUčiteľ

– ID učiteľ (PK)ID učiteľ (PK)– MenoMeno– PriezviskoPriezvisko– Dátum narodeniaDátum narodenia– UlicaUlica– PSČPSČ– MestoMesto

• TriedaTrieda– ID trieda (PK)ID trieda (PK)– OznačenieOznačenie– Počet žiakovPočet žiakov– PopisPopis

• UčebňaUčebňa– ID učebňa (PK)ID učebňa (PK)– Číslo učebneČíslo učebne– PoschodiePoschodie– TraktTrakt– Počet miestPočet miest

• PredmetPredmet– ID predmet (PK)ID predmet (PK)– NázovNázov– SkratkaSkratka– PopisPopis

Page 19: Základné pojmy a návrh databáz

Druhý krokDruhý krok

• V druhom kroku si vytvoríme vzťahy medzi tabuľkamiV druhom kroku si vytvoríme vzťahy medzi tabuľkami

• Z minulých hodín (ne)vieme, že poznáme tri typy Z minulých hodín (ne)vieme, že poznáme tri typy vzťahov a to 1:1, 1:n, m:nvzťahov a to 1:1, 1:n, m:n

• V zadaní sme mali požiadavku na zistenie týchto V zadaní sme mali požiadavku na zistenie týchto údajov:údajov:– zoznam predmetov, ktoré učí učiteľzoznam predmetov, ktoré učí učiteľ– zoznam učební a ich správcovzoznam učební a ich správcov– zoznam tried, triednych učiteľov a kmeňových učebnízoznam tried, triednych učiteľov a kmeňových učební

• Vezmeme teda naše tabuľky a ideme zistiť vzťahyVezmeme teda naše tabuľky a ideme zistiť vzťahy

Page 20: Základné pojmy a návrh databáz

Ako na druhý krok?Ako na druhý krok?

• Základom je pýtať sa vždy z pohľadu oboch tabuliekZákladom je pýtať sa vždy z pohľadu oboch tabuliek

• Vezmime si príklad Vezmime si príklad – Chceme určiť taký vzťah, aby sme vedeli určiť učebne a ich Chceme určiť taký vzťah, aby sme vedeli určiť učebne a ich

správcov. správcov. – Správcom učebne je vždy učiteľSprávcom učebne je vždy učiteľ– Vytvárame vzťah medzi tabuľkou Učiteľ a tabuľkou UčebňaVytvá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 Pýtame sa z jednej strany: Koľko učiteľov je správcom

jednej učebne? Odpoveď je 1.jednej učebne? Odpoveď je 1.– Pýtame sa z druhej strany: Koľkým učebniam môže byť 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 jeden učiteľ správcom? Odpoveď je viacerým (teda n učebniam)učebniam)

Page 21: Základné pojmy a návrh databáz

Pravidlá pre vzťahyPravidlá pre vzťahy

• Vždy sa musíme pýtať z oboch strán!Vždy sa musíme pýtať z oboch strán!

• Ak je v oboch otázkach odpoveď „jedna, Ak je v oboch otázkach odpoveď „jedna, jeden, jedno“ vzťah je 1:1jeden, jedno“ vzťah je 1:1

• Ak je v jednej otázke odpoveď „jedna, Ak je v jednej otázke odpoveď „jedna, jeden, jedno“ a v druhej „n“ vzťah je 1:njeden, jedno“ a v druhej „n“ vzťah je 1:n

• Ak je v oboch otázkach odpoveď „n“ vzťah Ak je v oboch otázkach odpoveď „n“ vzťah je m:nje m:n

Page 22: Základné pojmy a návrh databáz

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

Page 23: Základné pojmy a návrh databáz

Načo nám to bolo treba?Načo nám to bolo treba?

• Po tomto druhom kroku vieme, aké vzťahy Po tomto druhom kroku vieme, aké vzťahy „panujú“ medzi tabuľkami„panujú“ medzi tabuľkami

• Tento krok bol dôležitý na to, aby sme si Tento krok bol dôležitý na to, aby sme si vedeli do tabuliek vložiť cudzie kľúče (FK), vedeli do tabuliek vložiť cudzie kľúče (FK), prípadne vytvoriť novú tabuľku, ak máme prípadne vytvoriť novú tabuľku, ak máme vzťah m:nvzťah m:n

• Ja teraz „vypotím“ nejaké cudzie kľúče, ale Ja teraz „vypotím“ nejaké cudzie kľúče, ale nie z brucha – pravidlá tzv. exportu kľúčov nie z brucha – pravidlá tzv. exportu kľúčov máte popísané v ďalšej časti prezentáciemáte popísané v ďalšej časti prezentácie

Page 24: Základné pojmy a návrh databáz

Pred tretím krokomPred tretím krokom

• UčiteľUčiteľ– ID učiteľ (PK)ID učiteľ (PK)– MenoMeno– PriezviskoPriezvisko– Dátum narodeniaDátum narodenia– UlicaUlica– PSČPSČ– MestoMesto

• TriedaTrieda– ID trieda (PK)ID trieda (PK)– OznačenieOznačenie– Počet žiakovPočet žiakov– PopisPopis– ID učiteľ (FK)ID učiteľ (FK)– ID učebňa (FK)ID učebňa (FK)

• UčebňaUčebňa– ID učebňa (PK)ID učebňa (PK)– Číslo učebneČíslo učebne– PoschodiePoschodie– TraktTrakt– Počet miestPočet miest– ID učiteľ (FK)ID učiteľ (FK)

• PredmetPredmet– ID predmet (PK)ID predmet (PK)– NázovNázov– SkratkaSkratka– PopisPopis

• Predmet - UčiteľPredmet - Učiteľ– ID predmet (PK, FK)ID predmet (PK, FK)– ID učiteľ (PK, FK)ID učiteľ (PK, FK)

Page 25: Základné pojmy a návrh databáz

Tretí krokTretí krok

• V treťom kroku priradíme jednotlivým V treťom kroku priradíme jednotlivým stĺpcom dátové typystĺpcom dátové typy

• Pre primárny kľúč budeme používať vždy Pre primárny kľúč budeme používať vždy dátový typ INTEGERdátový typ INTEGER

• Nepýtajte sa prečo. Robí sa to proste tak a Nepýtajte sa prečo. Robí sa to proste tak a má to svoje dôvody. Ak to chcete vedieť má to svoje dôvody. Ak to chcete vedieť tak si prečítajte prezentáciu o normalizáciitak si prečítajte prezentáciu o normalizácii

Page 26: Základné pojmy a návrh databáz

Po treťom krokuPo treťom kroku

• UčiteľUčiteľ– ID učiteľ (PK) - INTEGERID učiteľ (PK) - INTEGER– Meno - VARCHARMeno - VARCHAR– Priezvisko - VARCHARPriezvisko - VARCHAR– Dátum narodenia - DATEDátum narodenia - DATE– Ulica - VARCHARUlica - VARCHAR– PSČ - VARCHARPSČ - VARCHAR– Mesto - VARCHARMesto - VARCHAR

• TriedaTrieda– ID trieda (PK) - INTEGERID trieda (PK) - INTEGER– Označenie - VARCHAROznačenie - VARCHAR– Počet žiakov - INTEGERPočet žiakov - INTEGER– Popis - TEXTPopis - TEXT– ID učiteľ (FK) - INTEGERID učiteľ (FK) - INTEGER– ID učebňa (FK) - INTEGERID učebňa (FK) - INTEGER

• UčebňaUčebňa– ID učebňa (PK) - INTEGERID učebňa (PK) - INTEGER– Číslo učebne - VARCHARČíslo učebne - VARCHAR– Poschodie - INTEGERPoschodie - INTEGER– Trakt - VARCHARTrakt - VARCHAR– Počet miest - INTEGERPočet miest - INTEGER– ID učiteľ (FK) - INTEGERID učiteľ (FK) - INTEGER

• PredmetPredmet– ID predmet (PK) - INTEGERID predmet (PK) - INTEGER– Názov - VARCHARNázov - VARCHAR– Skratka - VARCHARSkratka - VARCHAR– Popis - TEXTPopis - TEXT

• Predmet - UčiteľPredmet - Učiteľ– ID predmet (PK, FK) - ID predmet (PK, FK) -

INTEGERINTEGER– ID učiteľ (PK, FK) - INTEGERID učiteľ (PK, FK) - INTEGER

Page 27: Základné pojmy a návrh databáz

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 Týmto krokom sme si určili aký typ dát sa bude v danom stĺpci nachádzaťbude v danom stĺpci nachádzať

• Inteligentné DBS nám po zvolení dátového Inteligentné DBS nám po zvolení dátového typu zaistia pri vkladaní údajov doménovú typu zaistia pri vkladaní údajov doménovú integritu a teda kontrolu, či sme vložili do integritu a teda kontrolu, či sme vložili do daného „políčka“ správny údaj (dátum, daného „políčka“ správny údaj (dátum, číslo, znaky, ...)číslo, znaky, ...)

Page 28: Základné pojmy a návrh databáz

Štvrtý krokŠtvrtý krok

• V tomto kroku nám už len zostáva V tomto kroku nám už len zostáva pozrieť sa, či sa nám v tabuľke pozrieť sa, či sa nám v tabuľke nevyskytujú nejaké nadbytočné dátanevyskytujú nejaké nadbytočné dáta

• Ak áno, treba z týchto dát vytvoriť Ak áno, treba z týchto dát vytvoriť novú tabuľku a s pôvodnou tabuľkou novú tabuľku a s pôvodnou tabuľkou ju previazať cudzím kľúčomju previazať cudzím kľúčom

Page 29: Základné pojmy a návrh databáz

Máme tam také údaje?Máme tam také údaje?

• Máme a kto to nevidí, tak je na to Máme a kto to nevidí, tak je na to jednoduchý liek a to:jednoduchý liek a to:– Zájsť k očnému, aleboZájsť k očnému, alebo– Vložiť do tabuľky zopár desiatok údajov a zistiť, Vložiť do tabuľky zopár desiatok údajov a zistiť,

ktoré údaje sa opakujúktoré údaje sa opakujú

• V našom prípade to budú údaje o meste a V našom prípade to budú údaje o meste a PSČ a teda z nich vytvoríme novú tabuľku PSČ a teda z nich vytvoríme novú tabuľku s názvom Mesto a prevedieme ju všetkými s názvom Mesto a prevedieme ju všetkými doterajšími krokmidoterajšími krokmi

Page 30: Základné pojmy a návrh databáz

Po štvrtom krokuPo štvrtom kroku

• UčiteľUčiteľ– ID učiteľ (PK) - INTEGERID učiteľ (PK) - INTEGER– Meno - VARCHARMeno - VARCHAR– Priezvisko - VARCHARPriezvisko - VARCHAR– Dátum narodenia - DATEDátum narodenia - DATE– Ulica - VARCHARUlica - VARCHAR– ID Mesto - INTEGERID Mesto - INTEGER

• TriedaTrieda– ID trieda (PK) - INTEGERID trieda (PK) - INTEGER– Označenie - VARCHAROznačenie - VARCHAR– Počet žiakov - INTEGERPočet žiakov - INTEGER– Popis - TEXTPopis - TEXT– ID učiteľ (FK) - INTEGERID učiteľ (FK) - INTEGER– ID učebňa (FK) - INTEGERID učebňa (FK) - INTEGER

• UčebňaUčebňa– ID učebňa (PK) - INTEGERID učebňa (PK) - INTEGER– Číslo učebne - VARCHARČíslo učebne - VARCHAR– Poschodie - INTEGERPoschodie - INTEGER– Trakt - VARCHARTrakt - VARCHAR– Počet miest - INTEGERPočet miest - INTEGER– ID učiteľ (FK) - INTEGERID učiteľ (FK) - INTEGER

• PredmetPredmet– ID predmet (PK) - INTEGERID predmet (PK) - INTEGER– Názov - VARCHARNázov - VARCHAR– Skratka - VARCHARSkratka - VARCHAR– Popis - TEXTPopis - TEXT

• Predmet - UčiteľPredmet - Učiteľ– ID predmet (PK, FK) - ID predmet (PK, FK) -

INTEGERINTEGER– ID učiteľ (PK, FK) - INTEGERID učiteľ (PK, FK) - INTEGER

• MestoMesto– ID mesto (PK) - INTEGERID mesto (PK) - INTEGER– Názov – VARCHARNázov – VARCHAR– PSČ – VARCHAR (alebo INTEGER)PSČ – VARCHAR (alebo INTEGER)

Page 31: Základné pojmy a návrh databáz

Spájanie dát pomocou Spájanie dát pomocou kľúčovkľúčov

Page 32: Základné pojmy a návrh databáz

Export cudzích kľúčovExport cudzích kľúčov

• Cudzí kľúč (FK) vznikne prenosom Cudzí kľúč (FK) vznikne prenosom primárneho kľúča (PK) z tzv. hlavnej primárneho kľúča (PK) z tzv. hlavnej (master) tabuľky do vedľajšej (master) tabuľky do vedľajšej tabuľky (detail), kde sa tento atribút tabuľky (detail), kde sa tento atribút stane FKstane FK

• Tento presun sa zvykne označovať Tento presun sa zvykne označovať pojmom pojmom export cudzích kľúčovexport cudzích kľúčov

Page 33: Základné pojmy a návrh databáz

Smer exportu FK (1:n)Smer exportu FK (1:n)

• Na vzťahy medzi tabuľkami sa Na vzťahy medzi tabuľkami sa môžeme pozrieť z pohľadu oboch môžeme pozrieť z pohľadu oboch tabuliektabuliek

• Napr. tabuľky Napr. tabuľky triedatrieda a a žiacižiaci::– Koľkí žiaci môžu byť v jednej triede?Koľkí žiaci môžu byť v jednej triede?

• Jeden alebo viacero (1,n)Jeden alebo viacero (1,n)

– Jeden žiak patrí do koľkých tried?Jeden žiak patrí do koľkých tried?• Práve do jednej (1,1)Práve do jednej (1,1)

Page 34: Základné pojmy a návrh databáz

Smer exportu FK (1:n)Smer exportu FK (1:n)

• V tomto prípade je smer exportu cudzieho V tomto prípade je smer exportu cudzieho kľúča od tabuľky s násobnosťou (1,1) k kľúča od tabuľky s násobnosťou (1,1) k tabuľke s násobnosťou (1,n)tabuľke s násobnosťou (1,n)

• Teda z predchádzajúceho príkladu bola Teda z predchádzajúceho príkladu bola tabuľka s násobnosťou (1,1) tabuľka trieda tabuľka s násobnosťou (1,1) tabuľka trieda a tabuľka s násobnosťou (1,n) je tabuľka s a tabuľka s násobnosťou (1,n) je tabuľka s názvom žiacinázvom žiaci

• Teda PK z tabuľky trieda (napr. id_trieda) Teda PK z tabuľky trieda (napr. id_trieda) presunieme do tabuľky žiaci kde presunieme do tabuľky žiaci kde vytvoríme stĺpec id_trieda ako FKvytvoríme stĺpec id_trieda ako FK

Page 35: Základné pojmy a návrh databáz

Príklad exportuPríklad exportuid_ziakid_ziak menomeno priezviskopriezvisko datum_nardatum_nar

11 JánJán HraškoHraško 20.07.200720.07.2007

22 MartinMartin KlingáčikKlingáčik 19.09.190919.09.1909

id_triedaid_trieda rocnikrocnik pismenkopismenko

11 11 AA

22 33 FF

id_ziakid_ziak menomeno priezviskopriezvisko datum_nardatum_nar id_triedaid_trieda

11 JánJán HraškoHraško 20.07.200720.07.2007 22

22 MartinMartin KlingáčikKlingáčik 19.09.190919.09.1909 11

Ako vytvoríme vzťah medzi žiakom a triedou?

Page 36: Základné pojmy a návrh databáz

Smer exportu FK (1:1)Smer exportu FK (1:1)

• Aj na tieto vzťahy medzi tabuľkami Aj na tieto vzťahy medzi tabuľkami sa môžeme pozrieť z pohľadu oboch sa môžeme pozrieť z pohľadu oboch tabuliektabuliek

• Napr. tabuľky Napr. tabuľky triedatrieda a a učiteľučiteľ::– Koľko triednych učiteľov má trieda?Koľko triednych učiteľov má trieda?

• Práve jedného (1,1)Práve jedného (1,1)

– Koľkým triedam môže byť jeden učiteľ Koľkým triedam môže byť jeden učiteľ triednym učiteľom?triednym učiteľom?• Žiadnej alebo jednej (0,1)Žiadnej alebo jednej (0,1)

Page 37: Základné pojmy a návrh databáz

Smer exportu FK (1:1)Smer exportu FK (1:1)

• V tomto prípade je smer exportu cudzieho V tomto prípade je smer exportu cudzieho kľúča od tabuľky s násobnosťou práve kľúča od tabuľky s násobnosťou práve jedna (1,1) k tabuľke s násobnosťou 0 jedna (1,1) k tabuľke s násobnosťou 0 alebo 1 (0,1)alebo 1 (0,1)

• Teda z predchádzajúceho príkladu bola Teda z predchádzajúceho príkladu bola tabuľka s násobnosťou (0,1) tabuľka trieda tabuľka s násobnosťou (0,1) tabuľka trieda a tabuľka s násobnosťou (1,1) je tabuľka s a tabuľka s násobnosťou (1,1) je tabuľka s názvom učiteľnázvom učiteľ

• Teda PK z tabuľky učiteľ (napr. id_ucitel) Teda PK z tabuľky učiteľ (napr. id_ucitel) presunieme do tabuľky trieda kde presunieme do tabuľky trieda kde vytvoríme stĺpec id_ucitel ako FKvytvoríme stĺpec id_ucitel ako FK

Page 38: Základné pojmy a návrh databáz

Príklad exportuPríklad exportuid_ucitelid_ucitel menomeno priezviskopriezvisko datum_nardatum_nar

11 JánJán HraškoHraško 20.07.200720.07.2007

22 MartinMartin KlingáčikKlingáčik 19.09.190919.09.1909

id_triedaid_trieda rocnikrocnik pismenkopismenko

11 11 AA

22 33 FF

id_triedaid_trieda rocnikrocnik pismenkopismenko id_ucitelid_ucitel

11 11 AA 22

22 33 FF 11

Ako vytvoríme vzťah medzi učiteľom a triedou?

Vždy teda vytvárame stĺpec s cudzím kľúčom v tej tabuľke,kde budú vyplnené všetky cudzie kľúče. Ak by sme v tomtoprípade vložili stĺpec s FK do tabuľky učiteľ, niektoré poliaby ostali prázdne, pretože nie každý učiteľ je triedny učiteľ.

Page 39: Základné pojmy a návrh databáz

Smer exportu FK (m:n)Smer exportu FK (m:n)

• Aj na tieto vzťahy medzi tabuľkami Aj na tieto vzťahy medzi tabuľkami sa môžeme pozrieť z pohľadu oboch sa môžeme pozrieť z pohľadu oboch tabuliektabuliek

• Napr. tabuľky Napr. tabuľky predmetpredmet a a učiteľučiteľ::– Koľko predmetov učí jeden učiteľ?Koľko predmetov učí jeden učiteľ?

• 1 alebo viac (1,n)1 alebo viac (1,n)

– Koľko učiteľov učí jeden predmet?Koľko učiteľov učí jeden predmet?• 1 alebo viac (1,n)1 alebo viac (1,n)

Page 40: Základné pojmy a návrh databáz

Smer exportu FK (m:n)Smer exportu FK (m:n)

• V tomto prípade vytvoríme novú tabuľku, V tomto prípade vytvoríme novú tabuľku, ktorá väčšinou obsahuje len cudzie kľúčektorá väčšinou obsahuje len cudzie kľúče

• Teda PK z tabuľky učiteľ (napr. id_ucitel) Teda PK z tabuľky učiteľ (napr. id_ucitel) presunieme do tabuľky ucitel_predmet a presunieme do tabuľky ucitel_predmet a rovnako PK z tabuľky predmet (napr. rovnako PK z tabuľky predmet (napr. id_predmet) presunieme do tabuľky id_predmet) presunieme do tabuľky ucitel_predmet kde budú tieto stĺpce ako ucitel_predmet kde budú tieto stĺpce ako FKFK

Page 41: Základné pojmy a návrh databáz

Príklad exportuPríklad exportuid_ucitelid_ucitel menomeno priezviskopriezvisko datum_nardatum_nar

11 JánJán HraškoHraško 20.07.200720.07.2007

22 MartinMartin KlingáčikKlingáčik 19.09.190919.09.1909

id_predmetid_predmet nazovnazov skratkaskratka

11 FyzikaFyzika FYZFYZ

22 ChémiChémiaa

CHECHE

id_ucitelid_ucitel id_predmetid_predmet

11 22

22 11

Ako vytvoríme vzťah medzi učiteľom a predmetom?

Page 42: Základné pojmy a návrh databáz

Ďakujem za pozornosťĎakujem za pozornosť