Archív Inet.sk Pôvodný autor: Libor Bešenyi
03. 08. 2006 o 00:00 6100x

Budovanie informačných systémov I. – Úvod do relačných systémov

Je načase, aby sme sa zoznámili s databázovými systémami a zistili, ako pracujú a načo je dobré ich využívať. Taktiež sa pozrieme, ako vytvárať vzťahy medzi entitami.
Budovanie informačných systémov I. – Úvod do relačných systémov

Databázy a relačný model

Čo majú spoločné žiacka kniha a Access? Obe veci sú vo svojej podstate databázy. To je spôsobené ľudským jazykom. Ak my chceme pracovať s pojmom databáza, musíme si vyhradiť tento pojem...


V druhej časti sme vytvárali akúsi analýzu nášho problému z reálneho života. Tento problém teraz musíme porozdeľovať na nejakú množinu objektov vzájomne prepojených určitými vzťahmi. Takto zavedieme do chaosu poriadok a o tomto procese budeme hovoriť ako o dátovom modeli, čo je teda myšlienkový popis problému.

Reprezentácia modelu v počítači – prepísanie do reči, s ktorou vieme „komunikovať“ so strojom, potom budeme nazývať databázová schéma. Táto reč je logicky závislá na konkrétnom databázovom systéme – je to podobné, ako programátor dokáže viesť „dialóg“ s počítačom v jazyku Pascal, C a pod.

Databázové systémy sú si ale veľmi podobné. Dalo by sa povedať, že jazyk je normovaný a nie je zložité „presedlať“ na iný systém. Zatiaľ nám bude stačiť takýto pohľad, pretože hovorím o ich väčšine. Táto norma je SQL. V čom sa potom tieto programy líšia? Rýchlosťou, stabilitou a veľkosťou dát, s ktorými môžu pracovať.

Čo ale je ten databázový systém? Je to obyčajný program, ktorý dokáže efektívne ukladať a narábať s dátami. Spomínali sme nejaký v úvode dátový model. Ľudská reč je kvetnatá a dokážeme rôzne veci popísať rôznymi slovami. Matematika nie je o nič konkrétnejšia. Dátový model je v podstate postup riešenia, nie výsledok. Existuje mnoho matematických metód, techník a spôsobov, ako sa dopracovať k exaktnému záveru... Preto je aj viacero možností popisov problému zo života do databázy. Vtedy rozprávame o dátovom prístupe.

Najrozšírenejší prístup je relačný, teda popis problému pomocou množiny vzťahov. V sedemdesiatych rokoch minulého storočia dr. E. F. Codd, pracovník IBM, prišiel s úžasným nápadom. Modernému človeku a hlavne programátorovi sa táto myšlienka nebude zdať nijako geniálna, ale určite je! Aby sme nemuseli zachádzať do nejakej teórie množín, či predikčnej logiky, pod pojmom relácia si môžeme predstaviť jednoduchý vzťah medzi nejakými objektmi.

Pozn.: Chcem však podotknúť, že relačný model nie je jediný. Existuje hierarchický, hviezdicový a mnoho iných, ktoré majú svoje výhody aj nevýhody. Niektoré sú stavané na špecifické situácie, pričom iným prístupom nie je možne ich definovať. Napríklad databázový systém Caché, nie je relačnou databázou a dokáže dokonale pracovať so stromovou štruktúrou typu XML, pričom s reláciami ani neviem, či je možné takúto schému popísať.

Relácie

Tak, ako si vytvoriť dátový model v relačnom ponímaní? Každý začiatočník, určite ukladal dáta do súborov. Musel si preto vytvoriť nejakú štruktúru. Tento súbor, je naša entita a v podstate sa jedná o jednu tabuľku. Informácie tak ukladáme do tabuliek. Ak ich vhodne prepojím, získavam medzi nimi vzťah. Databázový systém má tú výhodu, že rokmi vývoja a matematickými algoritmami, dokáže veľmi rýchlo pristupovať ku dátam a preto sa nemusíme báť, že vytiahnutie informácie z viacerých tabuliek by bolo pomalé, ak by sme to analogicky „ťahali“ z jednotlivých súborov.

Ale stále nevieme, aký je ten vzťah! Predstavme si, že potrebujeme viesť evidenciu o zamestnancoch. Tak chceme vedieť meno, priezvisko a miesto kde býva. Tabuľka teda vyzerá takto:

Tabuľka evidencie zamestnancov

Obrázok 1 Tabuľka evidencie zamestnancov


Teraz potrebujeme evidovať napríklad aj našich zákazníkov. Analogicky vytvoríme ďalšiu tabuľku:

Tabuľka evidencie zákazníkov
Obrázok 2 Tabuľka evidencie zákazníkov
Keď sa pozrieme na tieto tabuľky, nesú spoločné informácie – meno, priezvisko, ulicu, mesto, a štát. Potrebujeme tieto údaje nejako odbúrať a tak si vytvoríme novú tabuľku osoba, ktorá bude niesť práve tieto informácie a tabuľky zákazník a zamestnanec, budú odkazovať na túto tabuľku.

Ale prichádzame ku problému. Záznamy uložené v takýchto tabuľkách sú reprezentované v riadkoch. Ak teda, tabuľka zamestnanec, obsahuje informácie o Jožkovi Fľakovi a Ivanovi Kukovi, obsah v databázovom systéme si musíme predstaviť takto:

 

Meno

Priezvisko

Ulica

Mesto

Štát

Jozef

Fľak

Under oak 4

New York

USA

Ivan

Kuko

Kuková 44

Kukolárovo

Kukoland

Tabuľka 1 Reprezentácie údajov v tabuľke zamestnanec


A nech dáta v tabuľke zákazník sú takéto:

 

Firma

Meno

Priezvisko

Ulica

Mesto

Štát

Microsoft

Bill

Fľak

Wallstreet 3

New York

USA

Cisco

Ivan

Gates

Kremeľ 5

Moskva

Rusko


Tabuľka 2 Reprezentácia údajov v tabuľke zákazník

Ak by sme vytvorili tabuľku osoba, tá by niesla obdobne údaje a mala by štyri riadky. Problém je v relačnom vzťahu. Ako vieme, ktorá osoba je zákazník a ktorá zamestnanec? Musíme nájsť jedinečný kľúč. Ak by ním bolo meno, tak nová tabuľka zamestnancov by potom obsahovala iba jeden stĺpec a to „odkaz na tabuľku osoba“ s obsahom: Jozef a Ivan. Toto ale hneď zavrhneme - tabuľka osoba obsahuje dvoch Ivanov...

Tak by nás napadlo, vytvoriť napríklad ďalší stĺpec v osobe, ktorý by niesol hodnotu, či sa jedná o zamestnanca alebo zákazníka. Napríklad číslo 1 je zamestnanec, číslo 2 je zákazník. Ani o tom nevieme, ale už sa začíname zamotávať do veľkej špiny... Tak určite nás napadne, že aj iný zamestnanec (či zákazník) môže mať rovnaké meno (teda by vznikli dva záznamy s rovnakými menami a aj popisom, či sa jedná zákazníka / zamestnanca, čím by sme nemohli jednoznačne určiť konkrétnu osobu). Tento model teda odpadáva. Taktiež v budúcnosti, by sme mali mnoho problémov, čo keby sme chceli s tabuľkou osoba, pracovať aj v iných tabuľkách? Pridávali by sme nové a nové čísla. Takto by sme si robotu neuľahčili, ale skomplikovali.

Tak aký jedinečný ukazovateľ majú tieto tabuľky? Žiaden... Obdobný problém by bol aj pri priezvisku a informácii z adries. Preto si ho vytvorme! Napríklad si očíslujme riadky... Takto budeme odkazovať len na číslo riadku. Ak sa riadok vymaže, nezaplníme ho iným riadkom alebo neposunieme bunky, proste ostane prázdny (pre uľahčenie). Takýto spôsob nazývame autoinkrementácia, pričom číslo je v podstate index, „ID“ a nazývame ho aj primárny kľúč. Teda je jedinečný pre každý riadok a nutne povinný. Každá tabuľka by mala obsahovať nejaký primárny kľúč (nikdy nevieme, kedy budeme odkazovať na ňu) a podľa neho, dokážeme tabuľky prepájať. Tak sa pozrime, čo za model sme vytvorili:

Príklad referenčného prepojenia

Obrázok 3 Príklad referenčného prepojenia


Šípky reprezentujú reláciu. Názov stĺpca, ktorý je pomenovaný ako tabuľka, je náš index a názov stĺpca pomenovaný ako tabuľka na ktorú odkazuje referencia nesie číslo na konkrétny riadok. Najlepšie na pochopenie je, keď si znova vypíšeme obsahy tabuliek:


 

Osoba

Meno

Priezvisko

Ulica

Mesto

Štát

1

Bill

Fľak

Wallstreet 3

New York

USA

2

Ivan

Gates

Kremeľ 5

Moskva

Rusko

3

Jozef

Fľak

Under oak 4

New York

USA

4

Ivan

Kuko

Kuková 44

Kukolárovo

Kukoland

Tabuľka 3 Obsah tabuľky osoba


Zamestnanec

Osoba

1

3

2

4

Tabuľka 4 Obsah tabuľky zamestnanec pomocou referenčného odkazu


 

Zákazník

Firma

Osoba

1

Microsoft

1

2

Cisco

2

Tabuľka 5 Obsah tabuľky zákazník pomocou referenčného odkazu



Teraz si predstavme, že chceme vypísať všetkých zákazníkov, ktorí pochádzajú z Európskej Únie. Ako nato? Proste by sme si dali vypísať tabuľku zamestnanec. Podľa ID stĺpca osoba by sme ju prepojili s tabuľkou osoba a pridali ešte podmienku, že štát sa rovná Británia, Francúzsko, ... Hm, takáto „tvrdá“ podmienka zaváňa za konštantou a tie nie sú to pravé orechové. Takýto model by v prípade zmeny usporiadania únie bol k ničomu a program by nevykazoval relevantné výsledky. Na to znova dáva odpoveď správny návrh dátového modelu. Môžeme si pomôcť ďalšou tabuľkou, tzv. číselníkom, v ktorej budeme definovať štáty. Pridáme tam stĺpec EU, ktorý bude obsahovať boolovskú formu, teda áno je štátom EÚ, nie, štátom EÚ nieje.

Taktiež je vhodné vytvoriť aj číselník firiem. Veď mať napríklad tisíc zákazníkov, ktorí sú z opakujúcich sa firiem (záleží na konkrétnom probléme), nebudeme vypisovať n rovnakých reťazcov. Keď už budeme osobitne evidovať firmy, rovno si vytvorme naň kontakty. Firma taktiež má adresu a tak z tabuľky osoba extrahujeme polia adresy do novej entity, ktorá bude spoločne s tabuľkou firiem zdieľaná (analogicky, ako tabuľka osoba je spoločne zdieľaná s tabuľkami zákazník a zamestnanec).

Model preto znova upravíme a môže vyzerať, už pomerne komplikovane, hoci ako vidíme, nič strašné to nie je. Treba len tieto vzťahy „cítiť“:

Komplexnejší príklad dátového modelu
Obrázok 4 Komplexnejší príklad dátového modelu

S novou štruktúrou, sa zmenili aj hodnoty v jednotlivých tabuľkách. Keď pole firma v tabuľke zákazník bola v starom príklade text, teraz je číslo, ktoré odkazuje na riadok v číselníku firiem – tabuľky firma...

Nabudúce už začneme tieto veci „programovať“ do MySQL, ktorý sme si nainštalovali v predchádzajúcej časti.

Príloha ku článku.

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies