Z - PowerPoint PPT Presentation

1 / 42
About This Presentation
Title:

Z

Description:

M me a kto to nevid , tak je na to jednoduch liek a to: Z js k o n mu, ... Pravidl pre vz ahy Po druhom kroku Na o n m to bolo treba? – PowerPoint PPT presentation

Number of Views:111
Avg rating:3.0/5.0
Slides: 43
Provided by: Polepetko
Category:
Tags:

less

Transcript and Presenter's Notes

Title: Z


1
Základné pojmy a návrh databáz
  • Základné pojmy
  • Normalizácia DB
  • Export cudzích klúcov

2
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
  • SRBD pomáha realizovat základné databázové
    funkcie - umožnuje komunikáciu s používatelom,
    definovanie, údržbu, uloženie a výber dát
    kontrolu a riadenie databáz
  • Databáza je množina dát, ktoré nejakým spôsobom
    súvisia

3
Relacné databázy
  • Sú najviac používaným typom databáz vo svete
  • Ich základom sú dvojrozmerné entity tabulky
  • Tabulky sa skladajú z riadkov a stlpcov a
    zhromaždujú údaje o jednom druhu objektov (napr.
    osobné údaje zamestnancov firmy)

4
Príklad tabulky
P.c. Meno Priezvisko Vek Pohlavie
1 Jozef Púcik 13 M
2 Mária Durícková 46 Z
3 Ján Hraško 5 M
5
Riadky a stlpce tabulky
  • Jeden riadok predstavuje tzv. jeden záznam (alebo
    vetu), teda skupinu vzájomne súvisiacich údajov
    (usporiadanú n-ticu)
  • Stlpce sa nazývajú tiež atribúty objektov a údaje
    v nich sú jedného rovnakého dátového typu
  • Každý stlpec má svoje meno, aby sa dal jednoducho
    identifikovat
  • Každý riadok má svoj jednoznacný identifikátor
    nazývaný aj primárny klúc

6
Primárne a cudzie klúce
  • Primárny klúc je atribút alebo skupina atribútov,
    ktoré jednoznacne identifikujú riadok v tabulke
  • Primárny klúc má skratku PK (primary key)
  • Cudzí klúc je atribút alebo skupina atribútov
    tvoriacich v inej relácii primárny klúc
  • Používa sa na previazanie dvoch alebo viacerých
    tabuliek
  • Cudzí klúc má skratku FK (foreign key)

7
Vztahy medzi tabulkami
  • Na to, aby v databáze nemusela existovat
    redundancia, s výhodou využívame možnost
    previazat dve tabulky pomocou primárnych klúcov
  • Napr. ak máme tabulku s osobnými údajmi
    zamestnancov, kde uchovávame mesto a PSC,
    vznikali by duplicitné dáta, zaberajúce príliš
    vela miesta
  • Previazanie tabuliek je znázornené na dalšom
    snímku

8
Rod_cislo (PK) Meno Priezvisko Ulica Mesto PSC
8911318213 Ján Hraško Záhradná 5 Košice 1 04001
8852179831 Snehu Lienka Palácová 13 Rozprávkovo 12345
8205171234 Vali Buk Hôrna 96 Tatry 74331
ID_mesto (PK) Mesto PSC
1 Košice 1 04001
2 Košice 23 04023
3 Tatry 74331
4 Rozprávkovo 12345
Rod_cislo (PK) Meno Priezvisko Ulica ID_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
9
Vztah 1n
  • Modeluje vztah medzi tabulkami, ked jeden objekt
    môže vlastnit resp. popisovat viacero iných,
    resp. viac objektov môže mat rovnakú vlastnost
  • Je to napríklad vztah medzi autorom a knihou, ked
    jeden autor môže mat v databáze viac kníh

ID_autor (PK) Meno
1 J.K. Rowling
2 L. Podjavorinská
3 J. Verne
4 J.C. Hronský
ID_kniha (PK) Názov Vydanie ID_autor (FK)
1 Harry Potter a kamen mudrcov 1 1
2 Cin cin 1 2
... ... ... ...
99 Harry Potter a ohnivá caša 2 1
10
Vztah mn
  • Modeluje vztah medzi tabulkami, ked niekolko
    objektov môže vlastnit resp. popisovat viacero
    iných
  • Je to napríklad vztah medzi zamestnancom a
    projektom na ktorom pracuje v prípade, že na
    jednom projekte môže pracovat viac zamestnancov a
    jeden zamestnanec môže pracovat na viacerých
    projektoch
  • Takýto vztah nahradíme dvojicou vztahov 1n

ID_projekt (PK) Názov ...
1 Vzdelávanie dôchodcov ...
2 Rekvalifikacný kurz ...
... ... ...
50 Kurz požiarnej ochrany ...
Meno ID_zamestnanec (PK)
J. Sova 1
T. Takácová 2
... ...
V. Dudáš 34
ID_zamestnanec (FK) ID_projekt (FK)
1 50
1 2
... ...
34 2
11
Vztah 11
  • Špeciálny, málo používaný prípad vztahu 1n
  • Modeluje vztah medzi tabulkami, ked jeden objekt
    môže vlastnit resp. popisovat práve jeden iný
  • Je to napríklad vztah medzi triedou a triednym
    ucitelom kde jeden ucitel je triednym ucitelom
    práve pre jednu triedu

12
Normalizácia DB
  • alebo ako vytvorit dobrú databázu

13
Co máme?
  • Máme kopec údajov, ktoré chceme spracovat
  • Predpokladom je aby sme si zozbierali všetky
    potrebné informácie o tom, aké dáta má databáza
    uchovávat a aké výstupy chceme z databázy
    vydolovat

14
Príklad
  • Máme vytvorit databázu, ktorá bude uchovávat
    údaje zo školského systému a to konkrétne mená a
    bydliská ucitelov, triedy, císla ucební, dátum
    narodenia ucitelov, údaje o umiestnení ucební,
    pocet miest na sedenie v ucebni, trakt školy v
    ktorom je umiestnená ucebna, pocet žiakov v
    triedach, popis tried, názov predmetu, skratku
    predmetu, popis predmetu
  • Z databázy by sme chceli zistit tieto údaje
  • zoznam predmetov, ktoré ucí ucitel
  • zoznam ucební a ich správcov
  • zoznam tried, triednych ucitelov a kmenových
    ucební

15
Prvý krok
  • V prvom kroku si musíme roztriedit ú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 vlastnostami
  • V našom prípade si rozdelíme dáta do týchto
    skupín Ucitel, Trieda, Ucebna, Predmet

16
Po prvom kroku
  • Ucitel
  • Meno
  • Priezvisko
  • Dátum narodenia
  • Ulica
  • PSC
  • Mesto
  • Trieda
  • Oznacenie
  • Pocet žiakov
  • Popis
  • Ucebna
  • Císlo ucebne
  • Poschodie
  • Trakt
  • Pocet miest
  • Predmet
  • Názov
  • Skratka
  • Popis

17
Naco nám to bolo treba?
  • Po tomto prvom kroku máme vlastne kus práce za
    sebou pretože sme si vytvorili tabulky
  • V dalšom kroku si vytvoríme vztahy medzi
    tabulkami
  • Najprv však nesmieme zabudnút na dôležitú vec a
    tou vecou je náš starý známy primárny klúc (PK),
    ktorý identifikuje každý záznam v tabulke

18
Pred druhým krokom
  • Ucitel
  • ID ucitel (PK)
  • Meno
  • Priezvisko
  • Dátum narodenia
  • Ulica
  • PSC
  • Mesto
  • Trieda
  • ID trieda (PK)
  • Oznacenie
  • Pocet žiakov
  • Popis
  • Predmet
  • ID predmet (PK)
  • Názov
  • Skratka
  • Popis
  • Ucebna
  • ID ucebna (PK)
  • Císlo ucebne
  • Poschodie
  • Trakt
  • Pocet miest

19
Druhý krok
  • V druhom kroku si vytvoríme vztahy medzi
    tabulkami
  • Z minulých hodín (ne)vieme, že poznáme tri typy
    vztahov a to 11, 1n, mn
  • V zadaní sme mali požiadavku na zistenie týchto
    údajov
  • zoznam predmetov, ktoré ucí ucitel
  • zoznam ucební a ich správcov
  • zoznam tried, triednych ucitelov a kmenových
    ucební
  • Vezmeme teda naše tabulky a ideme zistit vztahy

20
Ako na druhý krok?
  • Základom je pýtat sa vždy z pohladu oboch
    tabuliek
  • Vezmime si príklad
  • Chceme urcit taký vztah, aby sme vedeli urcit
    ucebne a ich správcov.
  • Správcom ucebne je vždy ucitel
  • Vytvárame vztah medzi tabulkou Ucitel a tabulkou
    Ucebna
  • Pýtame sa z jednej strany Kolko ucitelov je
    správcom jednej ucebne? Odpoved je 1.
  • Pýtame sa z druhej strany Kolkým ucebniam môže
    byt jeden ucitel správcom? Odpoved je viacerým
    (teda n ucebniam)

21
Pravidlá pre vztahy
  • Vždy sa musíme pýtat z oboch strán!
  • Ak je v oboch otázkach odpoved jedna, jeden,
    jedno vztah je 11
  • Ak je v jednej otázke odpoved jedna, jeden,
    jedno a v druhej n vztah je 1n
  • Ak je v oboch otázkach odpoved n vztah je mn

22
Po druhom kroku
Ucitel Trieda 1 1
Je vztah, ktorý priraduje ucitela k triede a tým
z neho vytvára triedneho ucitela
Ucitel Ucebna 1 n
Je vztah, ktorý priraduje ucitela k ucebni a tým
z neho vytvára správcu ucebne
Trieda Ucebna 1 1
Je vztah, ktorý priraduje ucebnu k triede a tým z
nej vytvára kmenovú ucebnu triedy
Ucitel Predmet m n
Je vztah, ktorý priraduje ucitela k predmetu a
tým z neho vytvára vyucujúceho daného predmetu
23
Naco nám to bolo treba?
  • Po tomto druhom kroku vieme, aké vztahy panujú
    medzi tabulkami
  • Tento krok bol dôležitý na to, aby sme si vedeli
    do tabuliek vložit cudzie klúce (FK), prípadne
    vytvorit novú tabulku, ak máme vztah mn
  • Ja teraz vypotím nejaké cudzie klúce, ale nie z
    brucha pravidlá tzv. exportu klúcov máte
    popísané v dalšej casti prezentácie

24
Pred tretím krokom
  • Ucebna
  • ID ucebna (PK)
  • Císlo ucebne
  • Poschodie
  • Trakt
  • Pocet miest
  • ID ucitel (FK)
  • Predmet - Ucitel
  • ID predmet (PK, FK)
  • ID ucitel (PK, FK)
  • Trieda
  • ID trieda (PK)
  • Oznacenie
  • Pocet žiakov
  • Popis
  • ID ucitel (FK)
  • ID ucebna (FK)
  • Predmet
  • ID predmet (PK)
  • Názov
  • Skratka
  • Popis
  • Ucitel
  • ID ucitel (PK)
  • Meno
  • Priezvisko
  • Dátum narodenia
  • Ulica
  • PSC
  • Mesto

25
Tretí krok
  • V tretom kroku priradíme jednotlivým stlpcom
    dátové typy
  • Pre primárny klúc budeme používat vždy dátový typ
    INTEGER
  • Nepýtajte sa preco. Robí sa to proste tak a má to
    svoje dôvody. Ak to chcete vediet tak si
    precítajte prezentáciu o normalizácii

26
Po tretom kroku
  • Ucebna
  • ID ucebna (PK) - INTEGER
  • Císlo ucebne - VARCHAR
  • Poschodie - INTEGER
  • Trakt - VARCHAR
  • Pocet miest - INTEGER
  • ID ucitel (FK) - INTEGER
  • Trieda
  • ID trieda (PK) - INTEGER
  • Oznacenie - VARCHAR
  • Pocet žiakov - INTEGER
  • Popis - TEXT
  • ID ucitel (FK) - INTEGER
  • ID ucebna (FK) - INTEGER
  • Predmet
  • ID predmet (PK) - INTEGER
  • Názov - VARCHAR
  • Skratka - VARCHAR
  • Popis - TEXT
  • Ucitel
  • ID ucitel (PK) - INTEGER
  • Meno - VARCHAR
  • Priezvisko - VARCHAR
  • Dátum narodenia - DATE
  • Ulica - VARCHAR
  • PSC - VARCHAR
  • Mesto - VARCHAR
  • Predmet - Ucitel
  • ID predmet (PK, FK) - INTEGER
  • ID ucitel (PK, FK) - INTEGER

27
A co sme získali týmto?
  • Týmto krokom sme si urcili aký typ dát sa bude v
    danom stlpci nachádzat
  • Inteligentné DBS nám po zvolení dátového typu
    zaistia pri vkladaní údajov doménovú integritu a
    teda kontrolu, ci sme vložili do daného polícka
    správny údaj (dátum, císlo, znaky, ...)

28
Štvrtý krok
  • V tomto kroku nám už len zostáva pozriet sa, ci
    sa nám v tabulke nevyskytujú nejaké nadbytocné
    dáta
  • Ak áno, treba z týchto dát vytvorit novú tabulku
    a s pôvodnou tabulkou ju previazat cudzím klúcom

29
Máme tam také údaje?
  • Máme a kto to nevidí, tak je na to jednoduchý
    liek a to
  • Zájst k ocnému, alebo
  • Vložit do tabulky zopár desiatok údajov a zistit,
    ktoré údaje sa opakujú
  • V našom prípade to budú údaje o meste a PSC a
    teda z nich vytvoríme novú tabulku s názvom Mesto
    a prevedieme ju všetkými doterajšími krokmi

30
Po štvrtom kroku
  • Ucebna
  • ID ucebna (PK) - INTEGER
  • Císlo ucebne - VARCHAR
  • Poschodie - INTEGER
  • Trakt - VARCHAR
  • Pocet miest - INTEGER
  • ID ucitel (FK) - INTEGER
  • Trieda
  • ID trieda (PK) - INTEGER
  • Oznacenie - VARCHAR
  • Pocet žiakov - INTEGER
  • Popis - TEXT
  • ID ucitel (FK) - INTEGER
  • ID ucebna (FK) - INTEGER
  • Predmet
  • ID predmet (PK) - INTEGER
  • Názov - VARCHAR
  • Skratka - VARCHAR
  • Popis - TEXT
  • Ucitel
  • ID ucitel (PK) - INTEGER
  • Meno - VARCHAR
  • Priezvisko - VARCHAR
  • Dátum narodenia - DATE
  • Ulica - VARCHAR
  • ID Mesto - INTEGER
  • Mesto
  • ID mesto (PK) - INTEGER
  • Názov VARCHAR
  • PSC VARCHAR (alebo INTEGER)
  • Predmet - Ucitel
  • ID predmet (PK, FK) - INTEGER
  • ID ucitel (PK, FK) - INTEGER

31
Spájanie dát pomocou klúcov
32
Export cudzích klúcov
  • Cudzí klúc (FK) vznikne prenosom primárneho klúca
    (PK) z tzv. hlavnej (master) tabulky do vedlajšej
    tabulky (detail), kde sa tento atribút stane FK
  • Tento presun sa zvykne oznacovat pojmom export
    cudzích klúcov

33
Smer exportu FK (1n)
  • Na vztahy medzi tabulkami sa môžeme pozriet z
    pohladu oboch tabuliek
  • Napr. tabulky trieda a žiaci
  • Kolkí žiaci môžu byt v jednej triede?
  • Jeden alebo viacero (1,n)
  • Jeden žiak patrí do kolkých tried?
  • Práve do jednej (1,1)

34
Smer exportu FK (1n)
  • V tomto prípade je smer exportu cudzieho klúca od
    tabulky s násobnostou (1,1) k tabulke s
    násobnostou (1,n)
  • Teda z predchádzajúceho príkladu bola tabulka s
    násobnostou (1,1) tabulka trieda a tabulka s
    násobnostou (1,n) je tabulka s názvom žiaci
  • Teda PK z tabulky trieda (napr. id_trieda)
    presunieme do tabulky žiaci kde vytvoríme stlpec
    id_trieda ako FK

35
Príklad exportu
id_ziak meno priezvisko datum_nar
1 Ján Hraško 20.07.2007
2 Martin Klingácik 19.09.1909
id_trieda rocnik pismenko
1 1 A
2 3 F
Ako vytvoríme vztah medzi žiakom a triedou?
id_ziak meno priezvisko datum_nar id_trieda
1 Ján Hraško 20.07.2007 2
2 Martin Klingácik 19.09.1909 1
36
Smer exportu FK (11)
  • Aj na tieto vztahy medzi tabulkami sa môžeme
    pozriet z pohladu oboch tabuliek
  • Napr. tabulky trieda a ucitel
  • Kolko triednych ucitelov má trieda?
  • Práve jedného (1,1)
  • Kolkým triedam môže byt jeden ucitel triednym
    ucitelom?
  • Žiadnej alebo jednej (0,1)

37
Smer exportu FK (11)
  • V tomto prípade je smer exportu cudzieho klúca od
    tabulky s násobnostou práve jedna (1,1) k tabulke
    s násobnostou 0 alebo 1 (0,1)
  • Teda z predchádzajúceho príkladu bola tabulka s
    násobnostou (0,1) tabulka trieda a tabulka s
    násobnostou (1,1) je tabulka s názvom ucitel
  • Teda PK z tabulky ucitel (napr. id_ucitel)
    presunieme do tabulky trieda kde vytvoríme stlpec
    id_ucitel ako FK

38
Príklad exportu
id_ucitel meno priezvisko datum_nar
1 Ján Hraško 20.07.2007
2 Martin Klingácik 19.09.1909
id_trieda rocnik pismenko
1 1 A
2 3 F
Ako vytvoríme vztah medzi ucitelom a triedou?
id_trieda rocnik pismenko id_ucitel
1 1 A 2
2 3 F 1
Vždy teda vytvárame stlpec s cudzím klúcom v tej
tabulke, kde budú vyplnené všetky cudzie klúce.
Ak by sme v tomto prípade vložili stlpec s FK do
tabulky ucitel, niektoré polia by ostali prázdne,
pretože nie každý ucitel je triedny ucitel.
39
Smer exportu FK (mn)
  • Aj na tieto vztahy medzi tabulkami sa môžeme
    pozriet z pohladu oboch tabuliek
  • Napr. tabulky predmet a ucitel
  • Kolko predmetov ucí jeden ucitel?
  • 1 alebo viac (1,n)
  • Kolko ucitelov ucí jeden predmet?
  • 1 alebo viac (1,n)

40
Smer exportu FK (mn)
  • V tomto prípade vytvoríme novú tabulku, ktorá
    väcšinou obsahuje len cudzie klúce
  • Teda PK z tabulky ucitel (napr. id_ucitel)
    presunieme do tabulky ucitel_predmet a rovnako PK
    z tabulky predmet (napr. id_predmet) presunieme
    do tabulky ucitel_predmet kde budú tieto stlpce
    ako FK

41
Príklad exportu
id_ucitel meno priezvisko datum_nar
1 Ján Hraško 20.07.2007
2 Martin Klingácik 19.09.1909
id_predmet nazov skratka
1 Fyzika FYZ
2 Chémia CHE
Ako vytvoríme vztah medzi ucitelom a predmetom?
id_ucitel id_predmet
1 2
2 1
42
Dakujem za pozornost
Write a Comment
User Comments (0)
About PowerShow.com