Modely databázových systémov
Najrozšírenejšie modely databáz
Otvorené súbory
Otvorené súbory sú „obyčajné“ súbory operačného systému. To znamená, že záznamy v nich obsiahnuté so sebou nenesú žiadne informácie, ktoré by do cieľovej aplikácie vnášali štruktúru súboru, alebo akékoľvek vzťahy medzi záznamami v nich uložených. Všetky informácie o štruktúre dát, ich význame a vzájomných vzťahoch musíme začleniť do príslušnej aplikácie, ktorá so súborom pracuje, alebo ich musí poznať človek, ako cieľový užívateľ dát.
Otvorené súbory v podstate nie sú databázami , ako takými, pretože nezodpovedajú žiadnym databázovým kritériám. Pri otvorených súboroch sú všetky údaje ukladané na disk sekvenčne do jedného veľkého súboru. Usporiadanie je možné znovuprepísaním súboru alebo použitím indexového súboru (podmnožina údajového súboru obsahujúca jednu alebo viac položiek). Napriek uvedenému je dôležité si o nich niečo povedať a to hneď z dvoch dôvodov:
(1) Do otvorených súborov sa často ukladajú i informácie z databáz. V takomto prípade operačný systém opäť nepozná obsah týchto súborov, ani ich štruktúru, ale databázový systém má metadáta o dátach , podľa ktorých môže realizovať prevody medzi otvorenými súbormi vo fyzickej vrstve, respektíve medzi databázovými štruktúrami v logickej vrstve. Pojem metadáta, doslova „dáta o dátach“, tu označuje informácie, ktoré sú v rámci databázy zapísané do katalógu a ktoré popisujú, aké dáta sú v databáze uložené a aké sú medzi nimi vzťahy . Súčasťou metadát zákazníka môže byť napríklad zoznam všetkých dátových položiek, ktoré v systéme o zákazníkovi zhromažďujeme, vrátane dĺžky, minimálnej a maximálnej dátovej hodnoty a stručného popisu každej z položiek.
(2) Otvorené súbory existovali dávno pred vznikom databáz a prvé databázové systémy sa vyvinuli práve z nich.
Príklad systému s otvorenými súbormi, v tomto prípade s podmnožinou dát z ukážkovej databázy vidíme na nasledujúcom obrázku. Nezabudnite, že nadpisy stĺpcov (Kód zákazníka, Firma, atď.) sú tu uvedené len z ilustračných dôvodov – v dátových súboroch budú uložené iba samotné vlastné dátové záznamy. Dáta o zákazníkoch budú uložené v súbore Zákazníci, v ktorom každého zákazníka reprezentuje jeden určitý záznam. Podobne každý zamestnanec firmy má záznam v súbore Zamestnanci a každý predávaný výrobok má záznam v súbore Výrobok. Do ďalších otvorených súborov sa ukladajú dáta s objednávkami zákazníkov: súbor Objednávky obsahuje záznam ku každej objednávke zákazníka a v ňom údaje o objednávke ako takej, napríklad identifikátor zákazníka, ktorý objednávku podal a meno zamestnanca, ktorý ju prijal. Súbor s riadkami objednávok, Rozpis objednávok, potom obsahuje rozpísané záznamy jednotlivých položiek z tabuľky Objednávky – k jednej objednávke môže byť takýchto detailných riadkov niekoľko a každý popisuje jeden objednaný výrobok, teda najmä jeho jednotkovú cenu a množstvo.
Obrázok 1.2 Systém objednávok s otvorenými súbormi
Aplikačný program je ucelená jednotka programovej logiky, ktorá na počítači v operačnom systéme vykonáva určitú funkciu. Jeden takýto aplikačný program napríklad vytlačí výpis všetkých objednávok. Táto aplikácia musí prečítať objednávku a zjednotiť dáta z uvedených 5-tich súborov:
- Podľa ID zákazníka nájde v súbore Zákazníci meno zákazníka
- Podľa ID zamestnanca nájde v súbore Zamestnanci aj meno zamestnanca
- Podľa ID objednávky nájde zodpovedajúce riadky (rozpis) objednávky v súbore Rozpis objednávok
- V každom riadku rozpísanej objednávky vyhľadá podľa ID výrobku v súbore Výrobky jeho názov
Tento postup je dosť komplikovaný, i napriek tomu, že sa pokúšame vypísať len zoznam všetkých objednávok. V systéme s otvorenými súbormi je to napriek tomu najlepší možný spôsob usporiadania dát .
Inou možnosťou návrhu dátovej štruktúry by bolo zlúčiť všetky informácie do jednotného dátového súboru. Tím by sa síce výrazne zjednodušilo načítanie dát, súčasne by sme ale museli všetky dáta o zákazníkovi na každom riadku z jeho objednávky opakovať, čo by malo pre činnosť aplikácie výrazne nepríjemné dôsledky. Do takejto databázy by sme napríklad nemohli zapísať nového zákazníka, pokiaľ by nepodal nejakú objednávku. Na viac, ako náhle niekto odstráni poslednú objednávku určitého zákazníka, stratíme o ňom všetky informácie. Najhoršie je ale realizovanie zmien akýchkoľvek informácií o zákazníkovi – musíme vyhľadať a aktualizovať všetky záznamy, v ktorých rovnaké údaje opakujú.
Ďalší možný postup, ktorý sa v systémoch s otvorenými súbormi často používa, je zlúčenie príbuzných informácií, napríklad súboru Objednávok a ich Rozpisov do jediného súboru . V tomto prípade by sme ku každej objednávke vytvorili záznam s jej záhlavím a potom záznamy rozpisov príslušnej objednávky. Medzi obidvomi typmi záznamov by sme v aplikácii rozlišovali pomocou zvláštnej dátovej položky, napríklad Typ záznamu. Aj keď si týmto spôsobom uľahčíme zviazanie dát jednej objednávky, súčasne tím ale celú databázu komplikujeme, pretože v jednom a v tom istom súbore zmiešavame 2 rôzne typy záznamov a konečným výsledkom nie je ani jednoduchšia aplikácia, ani jej rýchlejší vývoj.
Najhorším problémom štruktúry otvorených súborov ale je, že definíciu obsahu jednotlivých súborov a logiku potrebnú pre prepojenie akýchkoľvek dát umiestnených v rôznych súboroch musíme začleniť do každého aplikačného programu, ktorý s dátami pracuje. Výsledné aplikačné programy sú tím pádom zložitejšie a nákladnejšie.