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

Slides:



Advertisements
Podobné prezentace
Databázové modelování
Advertisements

Univerzita třetího věku kurz Znalci Databáze 1.
Mgr. Bc. Peter Adamko, PhD. NAT a Proxy.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
Úpravy algebrických výrazov
Lineárna funkcia a jej vlastnosti
Vonkajšie pamäťové média
Dobré rady alebo Ako na to
NAVIGÁCIA V KNIŽNIČNOM SYSTÉME ARL (Advanced Rapid Library)
BLOKOVÁ SCHÉMA POČÍTAČA
Pavol Nečas Gymnázium L. N. Senica Šk. rok 2008/2009 III.A
Dátové modely.
Priama úmernosť ISCED 2.
Autority a ich úloha pri spracovaní muzejných zbierok
Pamäťové zariadenia Adam Lech Tomáš Kožurko I.A.
Získavanie a spracovanie informácií
SOČ 3. roč. v prípade, že máme problém, aký výskum ku svojej teoreticke časti použijeme, môžeme vykonať sociologický, psychologický alebo edukačný (napr.
Výber maturitných predmetov
2. A STOP FAJČENIU ID:179 Stredná priemyselná škola
Plánovanie a príprava hodiny
Učíme sa inak a máme z učenia radosť
Čo je informatika? Je všeobecne veda o informáciách.
POWERPOINT Tvorba prezentácií Mgr. Gabriela Zbojeková, ZŠ Turzovka.
Kvalitatívne heuristiky
Sprievodca predpovedí
Geografia ako veda.
Ako prispôsobiť webovú lokalitu služby Microsoft SharePoint Online
Základná schéma počítača
Skúmanie vlastností kvapalín, plynov, tuhých látok a telies
Potravinová pyramída Bc. Agáta Šuleková.
Úloha Internetu v živote školáka ...
Nepriama úmernosť ISCED 2.
Ako má vyzerať prezentácia v PowerPoint-e?
Panel nástrojov „Vložiť“
Objektovo – relačné mapovanie
- žiacka práca.
Cieľ: Normu si musíme nielen osvojiť, ale ju aj dodržiavať
ÚČTOVNÍCTVO Zmeny v programe v roku 2014.
Bezpečnosť na internete
PhDr.Mgr. Pavel Bryndzák, PhD.
Informácie okolo nás Kódovanie znakov.
JEDINEC – OSOBNOSŤ (etika)
Prezentácia k 2. hodine – 4.ročník VYT
Prehľad projektu Oblasti vzdelávania Veková skupina Vzdelávacie ciele
Microsoft Office PowerPoint 2010
Ako napísať životopis a motivačný list
Príkaz riaditeľa Kód ITMS projektu „Učíme inovatívne, kreatívne a hravo – učíme pre život a prax“ „Moderné vzdelávanie pre vedomostnú spoločnosť.
Ing. Zlatica Molčanová Košice
Von Neumannova architektúra počítača
Informatika, údaj, informácia, jednotka informácie, digitalizácia
MIESTO, KTORÉ MÁM RaDa BIANKA LACKOVÁ 7.ROČ.
Podnikové hospodárstvo
1.1 TELESÁ A LÁTKY Mgr. Viera Levočová.
Aký by mal byť dobrý učiteľ
Entrópia, redundancia a sci-fi príklad.
NETIKETA.
Stredná odborná škola automobilová Moldavská cesta 2, Košice
FUNKČNÉ ZÁVISLOSTI A NORMALIZÁCIA PRE RELAČNÉ DATABÁZY
DÁTOVÉ MODELOVANIE analýza a návrh informácií v systéme – oblasť modelovania a projektovania IS dôraz na logické entity a logické závislosti medzi týmito.
autor: Mgr. Marta Vozárová
Prezentácia 5 Radwan Al Ali
Neinformované procedúry
5 jednoduchých tipov pre viac organických návštev z Google
3D modelovanie Polygony
alebo ako vytvoriť dobrú databázu (rečou normálneho človeka)
VLOOKUP (po česky SVYHLEDAT)
Informatika Adriana Petríková 1.A.
Mgr. Petra Bejšovcová 4. roč
Hromadná korešpondencia
Inovácia obsahu a metód vzdelávania prispôsobená potrebám vedomostnej spoločnosti POUŽÍVANIE VRSTIEV VYPRACOVAL: Mgr. art. Katarína Ivanová.
Transkript prezentace:

Základné pojmy a návrh databáz 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 SRBD pomáha realizovať základné databázové funkcie - umožňuje komunikáciu s používateľom, 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

Relačné databázy Sú najviac používaným typom databáz vo svete Ich základom sú dvojrozmerné entity – tabuľky Tabuľky sa skladajú z riadkov a stĺpcov a zhromažďujú údaje o jednom druhu objektov (napr. osobné údaje zamestnancov firmy)

Príklad tabuľky P.č. Meno Priezvisko Vek Pohlavie 1 Jozef Púčik 13 M 2 Mária Ďuríčková 46 Z 3 Ján Hraško 5

Riadky a stĺpce tabuľky Jeden riadok predstavuje tzv. jeden záznam (alebo vetu), teda skupinu vzájomne súvisiacich údajov (usporiadanú n-ticu) Stĺpce sa nazývajú tiež atribúty objektov a údaje v nich sú jedného rovnakého dátového typu Každý stĺpec má svoje meno, aby sa dal jednoducho identifikovať Každý riadok má svoj jednoznačný identifikátor nazývaný aj primárny kľúč

Primárne a cudzie kľúče Primárny kľúč je atribút alebo skupina atribútov, ktoré jednoznačne identifikujú riadok v tabuľke Primárny kľúč má skratku PK (primary key) Cudzí kľúč je atribút alebo skupina atribútov tvoriacich v inej relácii primárny kľúč Používa sa na previazanie dvoch alebo viacerých tabuliek Cudzí kľúč má skratku FK (foreign key)

Vzťahy medzi tabuľkami Na to, aby v databáze nemusela existovať redundancia, s výhodou využívame možnosť „previazať“ dve tabuľky pomocou primárnych kľúčov Napr. ak máme tabuľku s osobnými údajmi zamestnancov, kde uchovávame mesto a PSČ, vznikali by duplicitné dáta, zaberajúce príliš veľa miesta Previazanie tabuliek je znázornené na ďalšom snímku

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

Vzťah 1:n Modeluje vzťah medzi tabuľkami, keď jeden objekt môže vlastniť resp. popisovať viacero iných, resp. viac objektov môže mať rovnakú vlastnosť Je to napríklad vzťah medzi autorom a knihou, keď jeden autor môže mať v databáze viac kníh ID_kniha (PK) Názov Vydanie ID_autor (FK) 1 Harry Potter a kameň mudrcov 2 Čin čin ... 99 Harry Potter a ohnivá čaša ID_autor (PK) Meno 1 J.K. Rowling 2 Ľ. Podjavorinská 3 J. Verne 4 J.C. Hronský

Vzťah m:n Modeluje vzťah medzi tabuľkami, keď niekoľko objektov môže vlastniť resp. popisovať viacero iných Je to napríklad vzťah medzi zamestnancom a projektom na ktorom pracuje v prípade, že na jednom projekte môže pracovať viac zamestnancov a jeden zamestnanec môže pracovať na viacerých projektoch Takýto vzťah nahradíme dvojicou vzťahov 1:n Meno ID_zamestnanec (PK) J. Sova 1 T. Takáčová 2 ... V. Dudáš 34 ID_zamestnanec (FK) ID_projekt (FK) 1 50 2 ... 34 ID_projekt (PK) Názov ... 1 Vzdelávanie dôchodcov 2 Rekvalifikačný kurz 50 Kurz požiarnej ochrany

Vzťah 1:1 Špeciálny, málo používaný prípad vzťahu 1:n Modeluje vzťah medzi tabuľkami, keď jeden objekt môže vlastniť resp. popisovať práve jeden iný 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 triedu

alebo ako vytvoriť dobrú databázu Normalizácia DB alebo ako vytvoriť dobrú databázu

Č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í

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

Po prvom kroku Učiteľ Trieda Učebňa Predmet 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? 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

Pred druhým krokom Učiteľ Trieda Učebňa Predmet 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ý 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 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 ďalšej časti prezentácie

Pred tretím krokom Učebňa Trieda Predmet - Učiteľ Predmet Učiteľ ID učebňa (PK) Číslo učebne Poschodie Trakt Počet miest ID učiteľ (FK) Trieda ID trieda (PK) Označenie Počet žiakov Popis ID učiteľ (FK) ID učebňa (FK) Predmet - Učiteľ ID predmet (PK, FK) ID učiteľ (PK, FK) Predmet ID predmet (PK) Názov Skratka Popis Učiteľ ID učiteľ (PK) Meno Priezvisko Dátum narodenia Ulica PSČ Mesto

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

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 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 Predmet ID predmet (PK) - INTEGER Názov - VARCHAR Skratka - VARCHAR Popis - TEXT Učiteľ ID učiteľ (PK) - INTEGER Meno - VARCHAR Priezvisko - VARCHAR Dátum narodenia - DATE Ulica - VARCHAR PSČ - VARCHAR Mesto - VARCHAR 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

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 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čiteľ ID učiteľ (PK) - INTEGER Meno - VARCHAR Priezvisko - VARCHAR Dátum narodenia - DATE Ulica - VARCHAR ID Mesto - 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

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

Export cudzích kľúčov Cudzí kľúč (FK) vznikne prenosom primárneho kľúča (PK) z tzv. hlavnej (master) tabuľky do vedľajšej tabuľky (detail), kde sa tento atribút stane FK Tento presun sa zvykne označovať pojmom export cudzích kľúčov

Smer exportu FK (1:n) Na vzťahy medzi tabuľkami sa môžeme pozrieť z pohľadu oboch tabuliek Napr. tabuľky trieda a žiaci: Koľkí žiaci môžu byť v jednej triede? Jeden alebo viacero (1,n) Jeden žiak patrí do koľkých tried? Práve do jednej (1,1)

Smer exportu FK (1:n) V tomto prípade je smer exportu cudzieho kľúča od tabuľky s násobnosťou (1,1) k tabuľke s násobnosťou (1,n) Teda z predchádzajúceho príkladu bola tabuľka s násobnosťou (1,1) tabuľka trieda a tabuľka s násobnosťou (1,n) je tabuľka s názvom žiaci Teda PK z tabuľky trieda (napr. id_trieda) presunieme do tabuľky žiaci kde vytvoríme stĺpec id_trieda ako FK

Príklad exportu Ako vytvoríme vzťah medzi žiakom a triedou? id_ziak meno priezvisko datum_nar 1 Ján Hraško 20.07.2007 2 Martin Klingáčik 19.09.1909 id_trieda rocnik pismenko 1 A 2 3 F Ako vytvoríme vzťah medzi žiakom a triedou? id_ziak meno priezvisko datum_nar id_trieda 1 Ján Hraško 20.07.2007 2 Martin Klingáčik 19.09.1909

Smer exportu FK (1:1) Aj na tieto vzťahy medzi tabuľkami sa môžeme pozrieť z pohľadu oboch tabuliek Napr. tabuľky trieda a učiteľ: Koľko triednych učiteľov má trieda? Práve jedného (1,1) Koľkým triedam môže byť jeden učiteľ triednym učiteľom? Žiadnej alebo jednej (0,1)

Smer exportu FK (1:1) V tomto prípade je smer exportu cudzieho kľúča od tabuľky s násobnosťou práve jedna (1,1) k tabuľke s násobnosťou 0 alebo 1 (0,1) Teda z predchádzajúceho príkladu bola tabuľka s násobnosťou (0,1) tabuľka trieda a tabuľka s násobnosťou (1,1) je tabuľka s názvom učiteľ Teda PK z tabuľky učiteľ (napr. id_ucitel) presunieme do tabuľky trieda kde vytvoríme stĺpec id_ucitel ako FK

Príklad exportu Ako vytvoríme vzťah medzi učiteľom a triedou? id_ucitel meno priezvisko datum_nar 1 Ján Hraško 20.07.2007 2 Martin Klingáčik 19.09.1909 id_trieda rocnik pismenko 1 A 2 3 F Ako vytvoríme vzťah medzi učiteľom a triedou? id_trieda rocnik pismenko id_ucitel 1 A 2 3 F 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 tomto prípade vložili stĺpec s FK do tabuľky učiteľ, niektoré polia by ostali prázdne, pretože nie každý učiteľ je triedny učiteľ.

Smer exportu FK (m:n) Aj na tieto vzťahy medzi tabuľkami sa môžeme pozrieť z pohľadu oboch tabuliek Napr. tabuľky predmet a učiteľ: Koľko predmetov učí jeden učiteľ? 1 alebo viac (1,n) Koľko učiteľov učí jeden predmet?

Smer exportu FK (m:n) V tomto prípade vytvoríme novú tabuľku, ktorá väčšinou obsahuje len cudzie kľúče Teda PK z tabuľky učiteľ (napr. id_ucitel) presunieme do tabuľky ucitel_predmet a rovnako PK z tabuľky predmet (napr. id_predmet) presunieme do tabuľky ucitel_predmet kde budú tieto stĺpce ako FK

Príklad exportu Ako vytvoríme vzťah medzi učiteľom a predmetom? id_ucitel meno priezvisko datum_nar 1 Ján Hraško 20.07.2007 2 Martin Klingáčik 19.09.1909 id_predmet nazov skratka 1 Fyzika FYZ 2 Chémia CHE Ako vytvoríme vzťah medzi učiteľom a predmetom? id_ucitel id_predmet 1 2

Ďakujem za pozornosť