Databáza

5. októbra 2015, Ondrej Kvasnica Pridaj komentár »

Študijný materiál k predmetu Bázy dát žiakov SOŠ masmediálnych a informačných štúdií

Termín databáza (database) vznikol spojením slov báza (base = základňa) a dáta (data = údaje). Jej podstatu si môžete predstaviť na príklade vojenskej základne, kde je zavedený systém, posádka, budovy, vojenská technika a materiál, všetko je usporiadané prehľadne tak, aby fungovala efektívne. Podobne databáza sa oproti iným spôsobom spracovania údajov vyznačuje tým, že musia byť v nej uložené štruktúrovane podľa určitých princípov.

Definícia

Definície databázy sa rôznia, zrejme podľa toho, čo pokladajú autori tej príslušnej za najviac špecifické, napr.:

  • komplex súborov dát, ktoré sú v určitom logickom vzťahu (Krátky slovník slovenského jazyka, 2003);
  • elektronicky uložený súbor informácií usporiadaných tak, aby sa dali ľahko vyhľadávať, triediť a pod. (Slovník cudzích slov (akademický), 2005);
  • systematicky zhromaždený, eventuálne utriedený súbor informácií, ktorý môže byť spracovávaný pre rôzne účely informatické, výskumné a iné (Pedagogický slovník, 2008);
  • zdieľaná integrovaná počítačová štruktúra, ktorá zahŕňa koncové – používateľské dáta, t.j. všetko, čo zaujíma používateľa, a metadáta, čiže dáta o dátach, prostredníctvom ktorých sa dáta integrujú a spravujú (Delikát, T.: Základy databázových systémov, 2006);
  • súhrn navzájom previazaných dát bez zbytočnej redundancie (Králová Z., 2006);

Vlastnosti

Z uvedených definícií sa dajú vyčítať mnohé vlastnosti databázy:

  • databáza je komplex súborov, môže pozostávať z viacerých oddelených súborov;
  • údaje v databáze sú ukladané systematicky / usporiadané / utriedené, teda v nejakej stanovenej štruktúre;
  • údaje sú navzájom previazané / v logických vzťahoch;
  • v súčasnosti ide už bežne o elektronické súbory / počítačovú štruktúru, i keď databáza ako taká nemusí byť jedine elektronická a v dávnej minulosti ani nemohla byť, keď elektronika ešte neexistovala → papierové kartotéky;
  • v údajoch sa musí dať ľahko vyhľadávať a triediť, filtrovať, zoraďovať, atď.;
  • v databáze nesmie byť zbytočná redundancia – nadbytočnosť údajov, ktorá vzniká, keď sú v databáze nevyužívané alebo duplicitné údaje.

Okrem toho, aby databáza fungovala spoľahlivo, musí byť predovšetkým bez chýb. Programátor má k dispozícii mnohé nástroje, pomocou ktorých môže predchádzať problémom a zabrániť používateľovi do databázy zadávať chybné údaje.

Softvér

Na vytváranie a používanie databáz je nutné použiť softvér, ktorý dokáže vyššie uvedené vlastnosti zabezpečiť. Na systematicky usporiadané štruktúrované údaje je najvhodnejšia tabuľka. Tú vieme vytvoriť napr. aj v textovom procesore Microsoft Word, ale chýbali by nám tam mnohé ďalšie potrebné funkcie. Pre databázu je vhodný až tabuľkový procesor Microsoft Excel, ktorý umožňuje údaje nielen do tabuliek ukladať, ale aj rôznym spôsobom spracovávať (previazať, filtrovať, zoraďovať, atď.). Špeciálne pre tvorbu databáz je prispôsobený Microsoft Access, ktorý obsahuje všetky potrebné databázové objekty. Tieto aplikácie majú svoje limity, napr. pre rozsiahle podnikové systémy sa potom používa Microsoft SQL Server. Produkty spoločnosti Microsoft sú väčšinou spoplatnené, existujú však mnohé bezplatné alternatívy, ktoré nemusia funkčne plne zodpovedať, ale základy majú spoločné. Sú to napr. v rámci balíka Apache OpenOffice aplikácie Calc a Base. Pre internetové databázy sa používa napr. MySQL od spoločnosti Oracle.

Využitie v praxi

S databázami sa stretneme všade tam, kde je nutné efektívne spracovávať veľké množstvo údajov. Všetci si nosíme jednu v mobile ako telefónny zoznam, databázou je aj internetová žiacka knižka, knižničný katalóg, v podnikoch sa používajú databázy pre účtovníctvo, vo výskume na evidenciu rôznych nameraných hodnôt a následné štatistické spracovávanie. Skoro každá moderná internetová stránka má za sebou databázu, v ktorej sa evidujú informácie o používateľoch (mená, heslá, …), články, diskusné príspevky, atď.

Príklad:


Na obrázku je zobrazený výrez z databázy objednávkového systému. Ak by pri viacerých objednávkach od jedného zákazníka boli v každej objednávke uvedené kompletné informácie o zákazníkovi, vznikali by duplicity – redundancia. Preto bola vytvorená tabuľka Zákazníci, v ktorej sú údaje o každom zákazníkovi iba jedenkrát. Záznamy v tabuľke Objednávky sú so záznamom v tabuľke Zákazníci prepojené prostredníctvom číselného identifikátora.

Rovnakú situáciu je možné si všimnúť v poli Zamestnanec, kde sa opakuje celé meno jedného človeka v prípade, že vybavuje viac objednávok. Dalo by sa to vyriešiť vytvorením tabuľky Zamestnanci, kde by boli všetky mená len raz a v Objednávkach by sa opakovali iba ich kódy. Vďaka tomu by sa:

  • šetrilo miesto, lebo kód je kratší ako celé meno;
  • uľahčilo vypĺňanie, lebo stačí vybrať zo zoznamu zamestnancov, nie vypisovať celé meno;
  • uľahčilo premenovanie, lebo stačí zmeniť meno len raz v tabuľke zamestnancov a nie vo všetkých záznamoch, ktoré zamestnancovi prislúchajú;
  • zabránilo chybám, lebo pri opakovanom vypisovaní mena hrozia preklepy a pod.

Ďalší nedostatok poľa Zamestnanec je v tom, že jedno pole je spoločné pre meno aj priezvisko. To by spôsobovalo problémy, ak by sme chceli v databáze vyhľadávať iba podľa mena alebo iba podľa priezviska, taktiež by sa nedali záznamy zoradiť abecedne podľa priezviska, keď je meno na prvom mieste. Preto je nutné v tabuľkách údaje rozčleniť detailne podľa toho, s akými podrobnosťami budeme neskôr chcieť pracovať.

Databázový model

Databázový model je schéma alebo diagram, ktorý znázorňuje predovšetkým tabuľky, ich stĺpce a vzájomné vzťahy danej databázy. Ide o model hneď z dvoch hľadísk:

  1. ako vzor, plán, podľa ktorého sa bude programovať vyvíjaný databázový systém;
  2. a zároveň ako popis reality, predmetov a javov, ktorými sa zaoberáme.

To, čo je predmetom nášho záujmu, vo všeobecnosti nazývame entita. Môže ísť o osobu, vec, fakt, udalosť, a podobne. Pre entity rôzneho typu používame na ich evidovanie samostatné tabuľky, napr. jedna tabuľka pre zákazníkov, jedna tabuľka pre objednávky. Záznam o entite je odrazom reality v počítači. Záznam, teda súhrn údajov týkajúcich sa danej entity, sa eviduje v jednom riadku príslušnej tabuľky (napr. v tabuľke pre zákazníkov bude v každom jednom riadku jeden zákazník, v tabuľke pre objednávky budú po riadkoch jednotlivé objednávky). Každá entita je pri pozorovaní charakterizovaná určitými atribútmi (vlastnosťami, príznakmi), napr. objednávka má svoje číslo, dátumy, objednávateľa, vystavovateľa, môže byť štandardná / expresná, vybavená alebo nevybavená. V počítači sa vytvára pre každý atribút jedno pole, záznam entity teda pozostáva z polí, v ktorých sa evidujú atribúty. V tabuľke sú záznamy reprezentované riadkami a polia jednotlivými stĺpcami. V každej tabuľke je nutné mať v jednom poli evidovaný aj jedinečný identifikátor daného záznamu, ktorý sa bude používať na evidovanie vzťahov medzi entitami, tzv. primárny kľúč. Napríklad v tabuľke so zákazníkmi bude mať každý zákazník pridelené svoje číslo zákazníka, a potom v tabuľke objednávok sa do poľa vyjadrujúceho, kto je odberateľom, zapíše číslo zákazníka.

Pri tvorbe modelu je nutné zohľadniť situáciu a reálne potreby pre daný prípad databázy. Nie vždy každý typ entity potrebuje mať vlastnú tabuľku. Napríklad zákazníci, zamestnanci, dodávatelia, a podobne, všetky tieto entity môžu mať spoločnú tabuľku adresár. Je to dané tým, že pre všetky entity potrebujeme evidovať tie isté atribúty, ako názvy, mená, adresy, telefónne čísla, atď. Skutočnosť, že niektorý záznam je zákazníkom a niektorý zamestnancom, môžeme evidovať v rámci nových atribútov. V tomto prípade má spoločný adresár aj tú výhodu, že sa odstránia duplicity, ak je jedna entita zamestnancom, a zároveň zákazníkom, v spoločnom adresári bude záznam iba jeden. O rozdelení entít do samostatných tabuliek sa teda rozhoduje na základe toho, či pre ne chceme evidovať odlišné atribúty a v akej miere. Ďalej je v niektorých prípadoch na uváženie, či je vôbec treba niektoré entity evidovať samostatne s jedinečným identifikátorom. Napríklad, keď už sme pri adresári, budeme pracovať aj s ulicami. V bežných databázach, ktorých súčasťou sú adresáre, sa však zoznam ulíc v samostatnej tabuľke nevyskytuje, nakoľko využije sa len zlomok všetkých ulíc. Ich názvy sa zapisujú priamo do príslušného poľa v zázname adresy. Naopak na takom mestskom úrade sa v informačnom systéme zoznam ulíc určite vyskytovať bude.

Vzťahy medzi entitami sa evidujú prostredníctvom spojovacieho poľa v rámci jednej z príslušných tabuliek, ktoré chceme previazať, alebo pomocou novej spojovacej tabuľky. Prvý prípad sa dá použiť len vtedy, keď k danému záznamu prislúcha len jeden záznam z druhej tabuľky. Tomu zodpovedá vyššie uvedený príklad, kedy konkrétna objednávka je len od jedného zákazníka, preto môžeme do poľa v tabuľke objednávok zadávať identifikátor onoho jedného zákazníka. V prípade, keď potrebujeme jednému záznamu priradiť viac záznamov z inej tabuľky, musíme vytvoriť spojovaciu tabuľku. Príkladom môže byť, keď chceme jednej objednávke priradiť viac výrobkov. Vytvoríme novú tabuľku položky objednávky, ktorá bude obsahovať pole s identifikátorom objednávky a pole s identifikátorom výrobku. Jednotlivé záznamy budú reprezentovať jednotlivé priradenia niektorého výrobku niektorej objednávke. Pre vytváranie väzieb používame interné jedinečné identifikátory. Ak aj entita nejaký jedinečný identifikátor už obsahuje, hlavne ak ide o nejaký údaj, ktorý sa používa aj externe mimo databázového systému, doplníme nový interný identifikátor. Napríklad môže sa stať, že budeme chcieť zmeniť kódy výrobkov. Aby sme ich nemuseli zmeniť aj vo všetkých položkách objednávok, na vytváranie väzieb budeme používať interné identifikátory, pre ktoré nikdy nebude dôvod zmeny. Takže pre správne fungovanie databázového systému bude do každej tabuľky doplnené pole s interným jedinečným identifikátorom a na vytváranie vzťahov sa budú používať iba tieto identifikátory.

Ukážka databázového modelu vyššie opísaného príkladu objednávkového systému:
Databázový model

Cvičenie:

Navrhnite model databázy (tabuľky, ich stĺpce a vzťahy), v ktorej by sa evidovali nasledovné informácie:

  • zoznam žiakov (meno a priezvisko),
  • do ktorej triedy daný žiak chodí (I.A, I.B, …),
  • kto je jeho triednym učiteľom (meno a priezvisko),
  • zoznam učiteľov (meno a priezvisko),
  • ktoré predmety daný učiteľ učí (skratka a názov predmetu),
  • známkovanie (kedy, komu, od koho a z akého predmetu bola známka udelená + či ide o známku priebežnú, polročnú alebo koncoročnú).

Databázové objekty

Databázový systém (DBS) pozostáva zo štyroch základných databázových objektov:

  1. Tabuľka – jadro databázy, preto bola v schéme označená DB, v nej sú uložené samotné údaje;
  2. Dotaz – príkaz pre databázu, môže byť manipulačný, ktorým sa vkladajú / menia / čítajú vybrané údaje v databáze, alebo definičný, ktorým sa určujú vlastnosti databázy;
  3. Formulár – vstup do databázy, jeho vyplnením sa vygeneruje dotaz, ktorý zabezpečí uloženie zadaných údajov do príslušnej tabuľky;
  4. Zostava – výstup z databázy, prostredníctvom dotazu si vyžiada z tabuľky potrebné údaje a poskytne ich v príslušnom rozložení na zobrazenie alebo tlač.

Celý databázový systém sa rozdeľuje na dve časti:

  • Systém riadenia databázy (DBMS / database management system) – tvoria dotazy, ktorými sa dávajú príkazy tabuľkám, čiže sa tým riadi databáza;
  • Používateľské rozhranie (UI / user interface) – tvoria tie časti systému, ktoré vidí a má k nim prístup bežný používateľ, teda formuláre a zostavy;

Microsoft Access obsahuje všetky štyri druhy objektov, čiže sa v ňom dá vytvoriť kompletný databázový systém. Avšak nie je to nutné takto riešiť. Je možné napríklad využiť systém riadenia databázy v programe Access a používateľské rozhranie si vytvoriť v inom systéme.

Príloha:

Pridaj komentár