Image
7.6.2016 0 Comments

Databázy / 2. časť

Späť na úvod >> Späť na seriál

V predchádzajúcej časti sme sa venovali iba jednej tabuľke. Povedali sme si však, že v databáze môže byť (a obyčajne býva) viac tabuliek. Hlavný význam databáz spočíva práve vo väčšom počte vzájomne previazaných tabuliek. Predstavme si teraz, že naša knižnica má viac oddelení, kde sú knihy uložené podľa jednotlivých žánrov. Prehľad týchto oddelení je v tabuľke č. 3, ktorú si nazveme ZANER:
 

CIS_ODD

TEMATIKA

1

poézia

2

román

3

krimi

4

detská lit.

5

cestopis

6

lit. faktu

7

odborná lit.

Vráťme sa k našej prvej tabuľke s názvom KNIHA. Vidíme, že stĺpec TEMA sa dá nahradiť stĺpcom CIS_ODD z tabuľky ZANER. Potom bude naša opravená tabuľka KNIHA vyzerať takto:

ID

NAZOV

AUTOR

VYDAVATEL

CIS_ODD

CENA

POZNAMKA

1

Angelika a kráľ

Golon, Anne a Serge

Slovenský spisovateľ

2

56

 

2

KGB

Gordijevsky, Oleg

EAAP

6

239

 

3

Bratia Ricovci

Simenon, Georges

Smena

3

18

 

4

Vtáky v tŕni

Mcclloughová, Collen

Slovenský spisovateľ

2

66

 

5

Linux – praktický průvodce

Sobell, Mark G.

Computer Press

7

1073

 

6

Naučte se programovat v Delphi

Binzinger, Thomas

Grada

7

439

 

7

Používame Linux

Welsh, M. – Kaufman, L.

Computer Press

7

494

 

Nebudeme sa teraz zaoberať spôsobom, ktorým by sme upravili tabuľku v databáze,  prejdime rovno k výslednej podobe tabuľky KNIHA. Na čo je dobré, že sme vymenili textový zápis žánra za číslo riadka z inej tabuľky?

Ak budeme pridávať ďalší záznam o novej knihe v našej knižnici, už nemusíme prácne vypisovať textový reťazec, napr. odborná, ale stačí zapísať príslušný číselný kód z tabuľky ZANER. Pri zapisovaní veľkého počtu kníh to podstatne zjednoduší a zrýchli napĺňanie tabuľky KNIHA.

Predstavme si, že by sa jedného dňa oddelenie román premenovalo na próza, čím by zahŕňalo aj novely, poviedky a iné (priznávam, že to nie je z literárnovedného pohľadu úplne čisté, ale ide o ilustračný príklad). Potom stačí opraviť iba jedno miesto v jedinej tabuľke ZANER. Keby sme si nechali pôvodnú tabuľku, museli by sme v každom zázname, ktorý v stĺpci TEMA obsahuje slovo román, prepísať zameranie tematiky na próza. V našom prípade by išlo iba o dva riadky z tabuľky KNIHA, ale čo by to bolo za knižnicu, keby sme mali iba dve knihy z tohto žánra, veď v reálnej situácii by to mohli byť stovky a stovky záznamov.

Takýmto istým spôsobom by sme mohli nahradiť stĺpec VYDAVATEL. Zistili sme, že do pomocných tabuliek vkladáme tie informácie, ktoré sa nie veľmi často menia a sú pre mnohé záznamy v hlavnej tabuľke spoločné. Potom sa v hlavnej tabuľke stačí odvolať na príslušné položky pomocnej tabuľky. 

Vidíme, že takto vznikol medzi dvoma rôznymi tabuľkami určitý vzťah a na opis tohto vzťahu sa používajú tzv. identifikátory.

Identifikátory riadkov
Úlohou identifikátora je jednoznačne identifikovať jeden riadok v tabuľke. Identifikátor teda musí byť v rámci jednej tabuľky jedinečný – nesmú existovať dva riadky s rovnakou hodnotou identifikátora. Teraz vieme, že stĺpec ID tabuľky KNIHA , ako aj stĺpec CIS_ODD tabuľky ZANER sú identifikátormi, lebo spĺňajú podmienku jedinečnosti.

Identifikátorom býva spravidla číselná hodnota, pri ktorej máme istotu, že sa nikdy nezmení. U osôb to býva ich rodné číslo, číslo pasu alebo číslo občianskeho preukazu.

Dôvodom na použitie čísel namiesto textových názvov býva úspora miesta a následne i zvýšenie rýchlosti spracovania. Textový reťazec totiž môže byť až 255 znakov (a teda aj bajtov) veľký, zatiaľ čo číslo môže mať veľkosť jedného bajtu. A pri vyhľadávaní je oveľa rýchlejšie porovnať jeden bajt ako 255 bajtov. Ak si domyslíme tabuľku s miliónom záznamov, potom také vyhľadávanie v nevhodne vytvorenej tabuľke môže trvať aj veľmi dlhý čas. Zapamätajme si, že v niektorých prípadoch nestačí na jednoznačnú identifikáciu riadka iba jedna hodnota. Aby sme mohli presne identifikovať daný riadok, musíme poznať viac hodnôt. Vtedy hovoríme o zložených identifikátoroch.

Primárny kľúč
Identifikátor je akýmsi kľúčom k danému riadku tabuľky, a preto mu hovoríme aj kľúč. Ak má identifikátor okrem vlastnosti jedinečnosti aj minimálnu dĺžku, hovoríme mu primárny kľúč alebo primary key. Môžeme povedať, že stĺpec ID a CIS_ODD sú primárne kľúče vo svojich tabuľkách.

Vieme, že v tabuľke KNIHA odkazujeme do tabuľky ZANER pomocou stĺpca CIS_ODD. Ak sa teda primárnym kľúčom cudzej tabuľky vytvára odkaz v tabuľke KNIHA, je tento stĺpec tzv. cudzím kľúčom (foreign key).

Indexy
Okrem vlastných dát, ako je názov, autor, vydavateľ, cena, žáner knihy a podobne, sú v databáze uložené aj informácie, ktoré sú iba pomocné. Tieto informácie slúžia hlavne na zrýchlenie spracovania našich požiadaviek. Medzi najviac používané doplnkové informácie k tabuľkám patria tzv. indexy. S indexmi sa stretneme  aj v našej knižnici.

Namiesto toho, aby sme museli prezerať dlhé police a hľadať požadovanú knižku, stačí prehľadať malé kartičky v katalógu. Tieto kartičky, ktorým hovoríme aj indexy, sú spravidla uložené v zásuvke v registračnej skrini a sú zoradené podľa názvu knihy, čo nám veľmi zľahčuje vyhľadávanie. Samozrejme, že podľa názvu môžu byť zoradené aj knihy priamo v policiach na regáloch, ale to má niekoľko nevýhod. Manipulácia s ťažkými knihami je určite náročnejšia než s malými kartičkami. Keby sme chceli pridať ďalšiu knihu doprostred police, museli by sme posunúť všetky nasledujúce knihy o jedno miesto ďalej. Na konci police by nemusel byť dostatok miesta, a tak by sme museli prenášať poslednú knihu do ďalšej police. Naproti tomu vloženie malej kartičky do katalógu na správne miesto nie je vôbec náročné. A v prípade nedostatku miesta nie je problém presunúť niekoľko posledných kartičiek do inej priehradky.

Hlavnou výhodou použitia indexov však je, že ich môžeme vytvoriť aj niekoľko pre tie isté dáta. Môžeme mať jeden katalóg zoradený podľa názvu kníh, druhý podľa mien autorov a konečne tretí podľa žánra. Pri vyhľadávaní potom použijeme ten, ktorý sa najviac hodí pre naše potreby. Keď budeme vyhľadávať knihy o leteckom modelárstve (ach, krááásne časy), použijeme žánrový katalóg. Ak potrebujeme všetky diela od Karla Maya (ach, prekrááásne časy), použijeme katalóg podľa autorov.

Hoci hovoríme o knižnici a katalógoch s papierovými kartičkami, uvedené výhody a nevýhody platia aj v prípade použitia počítačov a elektronických médií. Aj v počítači musia byť dáta umiestnené na disku a ich fyzické radenie do určitého poradia a z toho vyplývajúce presúvanie zaberie určitý čas. Aj keď dáta vyhľadáva počítač, bude výsledok k dispozícii skôr (až o niekoľko rádov), ak bude „vedieť“, na ktorom mieste disku sú uložené záznamy o knihách s titulom začínajúcim sa na M. V opačnom prípade by musel postupne od začiatku prejsť riadok po riadku a kontrolovať názov titulu. V súčasnosti nie je potrebné vedieť presnú štruktúru indexov a spôsob práce s nimi. Stačí, ak vieme o ich existencii a o tom, že môžu výrazne urýchliť dobu potrebnú na získanie požadovaných informácií z tabuľky.

Metadáta
Okrem vlastných dát a indexov sú v databáze uložené informácie opisujúce tieto dáta. V týchto „metadátach“ sú zaznamenané názvy existujúcich tabuliek, počty a názvy polí a ďalšie informácie potrebné na to, aby sme mohli s databázou pracovať. Týmto metadátam sa niekedy hovorí slovník dát. Spravidla bývajú pre bežného používateľa databázy neprístupné, a preto sa nimi nebudeme ďalej zaoberať.

Administrátorské tabuľky práv
Okrem vlastných dát, indexov a metadát existujú v databázovom systéme špeciálne tabuľky, ktorým sa hovorí administrátorské tabuľky práv. V nich sú uložené informácie, kto a čo môže robiť s tou-ktorou databázou alebo tabuľkou. Nie všetci používatelia databázy môžu robiť rovnaké operácie. Napríklad hlavný knihovník môže dopĺňať záznamy do tabuľky KNIHA, zatiaľ čo bežný čitateľ môže túto tabuľku iba prezerať, aby zistil, aké knihy sú k dispozícii, nemôže však záznamy upravovať. A napríklad účtovníčka knižnice nemôže dopĺňať záznamy, môže však meniť cenu jednotlivých kníh podľa ceny nákupu alebo precenenia.

Na toto slúžia práve tabuľky práv. Prístup do týchto tabuliek má správca databázového systému, ktorému sa hovorí aj administrátor. Môže to byť aj osoba, ktorej správca poskytne svoje práva alebo ich časť. V našom prípade budeme správcami systému my.

Fakt, že dáta (všetky – či vlastné, alebo administrátorské) verne zobrazujú reálny stav, ktorý opisujú, sa nazýva integrita alebo konzistencia dát. Základným predpokladom udržania dát v konzistentnom stave je kvalitne navrhnutá dátová základňa. Nekonzistencia medzi realitou a dátami, ktoré ju opisujú, môže vznikať z týchto dôvodov:

  • Nedostatočná aktualizácia dát

     Dáta sa postupne stávajú neaktuálnymi. Stáva sa tak v prípade, že nedokážeme zaistiť pridanie nových záznamov do tabuľky, opravu hodnôt v existujúcich riadkoch a rušenie riadkov o už neexistujúcich objektoch reálneho sveta. Ako príklad poslúži strata určitej knihy. Ak neupravíme záznam o tejto knihe v tabuľke KNIHA, môže sa stať, že sa stále na ňu budú viazať objednávky na zápožičku a s tým súvisiace záznamy v iných tabuľkách. Pri štatistických údajoch o činnosti knižnice by sme mohli dostať nejednoznačné , ba dokonca nezmyselné výsledky. Preto treba pravidelne aktualizovať dáta. Aj keď ide o triviálne úkony, môže udržiavanie dátovej základne v aktuálnom stave vyžadovať pri rozsiahlych aplikáciách veľa úsilia, času a peňazí.

  • Referenčná integrita

     Tým, že máme údaje o knihách v jednej tabuľke, údaje o čitateľoch v ďalšej tabuľke a o vypožičaných knihách v tretej tabuľke, musíme dbať o to, aby sme pri rušení konkrétneho čitateľa vymazali nielen základné informácie o ňom, ale aj všetky jeho výpožičky. Všeobecne povedané, musíme vymazať všetky záznamy z ostatných tabuliek, ktoré na tohto čitateľa odkazovali. Ak by sme tak neučinili, neboli by sme neskôr schopní určiť, ku ktorému čitateľovi tieto údaje patria, a dátová základňa by už nezobrazovala verne stav reality.

Relačný model dát
Keď sme hovorili o našich tabuľkách a vzťahoch medzi nimi, tieto vzťahy by sa dali opísať pomocou relačnej algebry. Týmto vzťahom potom hovoríme relácie a z toho vyplýva, že používame relačný model dát. Na tejto algebre je postavený jazyk SQL, ktorý je nosnou časťou našej práce. My sa tu nebudeme teraz zaoberať matematikou, ale toto uvádzam len pre úplnosť.

SRBD
Už vieme, čo sú to tabuľky a databázy. Prístup k údajom uloženým v databáze obstaráva program, ktorému sa hovorí SRBD – systém riadenia bázy dát. Tento krkolomný názov vznikol z anglického DBMS – DataBase Management System. Medzi SRBD patria také programy, ako je Oracle, Informix, MS SQL Server, Progress. Nejde práve o lacné programy, ich cena sa pohybuje v desiatkach či skôr v stovkách tisícov korún. Našťastie aj na poli SRBD existujú programy šírené zadarmo ako freeware, napr. PostgreSQL či MySQL, ktorý budeme používať aj my.

Jazyk SQL
V rokoch 1974 až 1975 prebiehal vo firme IBM výskum možností využitia relačných databáz. Pre tento projekt bolo treba vytvoriť súbor príkazov, ktorými by sa relačná databáza ovládala. Tak vznikol jazyk SEQUEL (Structured English Query Language). Ako napovedá názov, cieľom tvorcov bolo vytvoriť jazyk, v ktorom by sa príkazy tvorili syntakticky čo najbližšie k bežnému (anglickému) jazyku. Tento jazyk sa veľmi rozšíril aj medzi ostatné firmy zaoberajúce sa databázovými systémami a časom sa premenoval na SQL (Structured Query Language – štruktúrovaný dopytovací jazyk) a štandardizoval sa. Preto väčšina príkazov, používaných napr. v MySQL, je funkčná aj v Informixe a iných systémoch. Hovorím väčšina, lebo – ako to už vo svete chodí – každý tvorca databázy vytvorí aj špecifickú skupinu príkazov len pre svoju databázu.

Architektúra klient – server
Databázové systémy mávajú rôznu architektúru. Najčastejšie sa používajú systémy s centrálnym uložením dát. Dáta sú uložené v databázach na konkrétnom centrálnom počítači a jednotlivé programy, pracujúce na lokálnych staniciach používateľov v sieti, si zdieľajú disk s uloženými dátami. To umožňuje, aby dáta boli centralizované a spravované na jednom mieste. Má to však určité obmedzenia, ktoré treba rešpektovať. Predstavme si, že máme databázu s veľkosťou 20 megabajtov. Ak chce nejaký program pristúpiť k dátam v tejto databáze, potrebuje si po sieti natiahnuť do operačnej pamäte značnú časť z tejto databázy, pokiaľ nenájde príslušné informácie a nespracuje ich. Takto sa veľmi zaťaží prenosová schopnosť siete, a ak budú k tejto databáze naraz pristupovať viacerí používatelia, ohlasy budú viac než katastrofálne. Preto sa systém zdieľania dát v tomto spôsobe už veľmi nevyužíva. Z tohto dôvodu sa vytvoril systém klient – server s jazykom SQL. Server pochádza z latinského servo = sluha, teda slúži ostatným klientom a vykonáva ich príkazy. Systém klient – server tiež využíva centrálne uloženie dát, no nad dátami operuje server SQL. Ten prijíma od jednotlivých klientov požiadavky (query), ktoré majú veľmi malú veľkosť niekoľkých bajtov, tie spracuje a výsledok vracia po sieti klientovi. Ak je výsledkom napr. iba jeden riadok z  20-megabajtovej tabuľky, ktorý vyhovel požiadavke klienta, má odpoveď veľkosť iba pár bajtov. Takto sa informácie dostanú veľmi rýchlo k žiadateľovi, čo sa využíva hlavne v internete a intranete. Ak takto pristupuje v lokálnej sieti naraz aj niekoľko používateľov, sú odpovede aj tak veľmi rýchle. Moderné SQL systémy s architektúrou klient – server spracúvajú „on line“ požiadavky od tisícok používateľov a tí ani nepostrehnú akési zdržanie vo svojej práci. Takýmto systémom sa hovorí, že sú to SQL servery. Zapamätajme si, že SQL server ani klient nemusia, ale môžu bežať na tom istom počítači. Dokonca nemusia bežať na tej istej platforme. Server môže byť na Linuxe a klient na Windows alebo naopak, ako si to ukážeme neskôr.

Ako som spomínal, budeme pracovať s SQL serverom, ktorý sa nazýva MySQL. Dnes je tento server (pre Linux) už free, čo znamená, že ho môžeme používať bez toho, aby sme platili licenčné poplatky. A samozrejme, takisto ho môžeme slobodne použiť v našich komerčných aplikáciách. Tento server je dostupný tak pre platformu Linux, ako aj pre Windows. (Pre Windows môžete voľne použiť iba staršie verzie programu, za aktuálnu poslednú verziu pre Windows sa platia licenčné poplatky. Ale aj tie sú v porovnaní s inými komerčnými SQL servermi smiešne nízke.) Takže tí, ktorí majú možnosť pracovať s Linuxom, budú asi preferovať verziu pre Linux, ostatní, ktorým Linux ešte stále zaváňa exotikou, môžu pracovať na „oknoidnej“ verzii. Obe tieto verzie sú dostupné na rôznych cédečkách alebo na internetovej adrese www.mysql.com alebo na českom zrkadle www.mysql.cz. Na týchto adresách nájdete aj príslušného klienta pre požadovanú platformu. Posledná stabilná verzia nesie označenie 3.22.xx, verzie s označením 3.23.xx sú uvoľnené ako alpha release, preto ich nebudeme používať. Na niektorých CD diskoch s Linuxom, vydaných u nás alebo v Čechách, je verzia, ktorá je preložená aj s českým triedením. Toto však teraz nie je nevyhnutnosťou, ale pri tvorbe ozajstného projektu sa to hodí.

Pripravte si inštalačné súbory pre tú vašu platformu, nabudúce si ich nainštalujeme a začneme s nimi pracovať.

 

 

 

 

 

 

 

 

 


Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Ako zbaviť fotky hmly

08.12.2016 11:59

Hmla alebo dym sú často veľmi kreatívne nástroje. No všetkého veľa škodí. Fotka potom stráca kontrast a v podstate na nej nič nevidieť. Hmlu môžete neraz následnými úpravami odstrániť alebo zredukovať ...

Ako na to

Užitočné SW nástroje

08.12.2016 11:53

AllDup v4.0.3 Určenie: program na vyhľadávanie a odstraňovanie duplicitných súborov Vlastnosti: duplicitné súbory sa vyhľadávajú len na zvolených diskových jednotkách alebo len v rámci vybraných ...

Ako na to

Fotografovanie s bleskom

08.12.2016 11:47

Ak máte moderný fotoaparát so vstavaným alebo externým bleskom, zdá sa vám téma článku triviálna. Jednoducho nastavíte vhodný režim, vyberiete najlepšiu kompozíciu záberu, exponujete a o zvyšok sa už ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá