Modely databázových systémov
Najrozšírenejšie modely databáz
Hierarchický model
Prvé databázy boli postavené na hierarchickom modeli. Ten sa vyvinul z pôvodných systémových súborov a záznamy v ňom boli usporiadané do hierarchie podobnej napríklad organizačnému diagramu. Každý zo súborov definovaných v systéme otvorených súborov je v tomto prípade nahradený typom záznamu alebo v hierarchickej terminológii – uzlom. Pre zjednodušenie budeme i naďalej používať záznam . Jednotlivé záznamy sú tu prepojené pomocou ukazovateľov, ktoré obsahujú adresu príslušného zviazaného záznamu. Ukazovateľ tak počítačovému systému hovorí, kde sa zviazaný záznam fyzicky nachádza, tak že sa trochu podobá bežnej poštovej adrese s ulicou a číslom domu v meste alebo adrese URL z prostredia Internetu. To znamená, že ukazovateľ definuje vzťah nadriadený - podriadený záznam ( rodič – potomok), ktorý označuje taktiež ako reláciu jedna k viacerým: jeden rodič môže mať viac potomkov, ale každý potomok má len jedného rodiča. Každý „synovský“ uzol môže obsahovať ukazovatele na ľubovoľný počet súrodencov, ale iba jediný ukazovateľ na „rodičovský uzol“.
Táto štruktúra sa hodne podobá klasickému usporiadaniu v podniku, v ktorom každý vedúci či riaditeľ môže mať viac priamo podriadených zamestnancov, ale každý zamestnanec má naopak len jedného bezprostredného nadriadeného. Zrejmým problémom hierarchického modelu je, že je príliš striktne definovaný a niektoré dáta do neho ťažko zapadajú – napríklad objednávka, ktorú musel do firmy podať nejaký zákazník (to by mohol byť jeden rodič záznamu), ale súčasne ju musel vybaviť určitý zamestnanec (čo by mal byť druhý rodič). Najrozšírenejšou hierarchickou databázou býval systém ISM (Information Management System) od firmy IBM.
Na nasledujúcom obrázku vidíme štruktúru (predchádzajúcej) databázy s otvorenými súbormi prevedenú do hierarchického modelu. Ako typy záznamov tu vidíme už známe položky Zákazník, Zamestnanec, Výrobok, Objednávka a Rozpis objednávok. Ak túto hierarchickú štruktúru porovnáme so systémom otvorených súborov z obrázku 1.2 vidíme, že záznamy Zamestnanec a Výrobok sú do hierarchickej štruktúry zapojené čiarkovanou čiarou, podľa ktorej nemôžu byť spojené s inými záznamami pomocou ukazovateľov. Z toho jasne vidíme najzávažnejšie obmedzenie hierarchického modelu, od ktorého bolo nakoniec upustené: Žiadny záznam nemôže mať viac ako jedného rodiča. To znamená, že záznam Zamestnanec nemôžeme prepojiť so záznamom Objednávka, pretože záznam Objednávka už rodiča má – a to záznam Zákazník. Podobne nemôžeme zviazať záznam Výrobok so záznamom Rozpis objednávok, pretože rodičom záznamu Rozpis objednávok je záznam Objednávka.
Obrázok 1.3: Štruktúra databázy v hierarchickom modeli
Databázový technici museli často problém obchádzať – buď príslušný rodičovský záznam, ten ktorý bol “na viac” zviazali až v aplikačnom programe, v podstate rovnako ako v systéme s otvorenými súbormi, alebo zopakovali všetky záznamy pod každým z rodičov a priradili tomu príslušnému rodičovskému záznamu čo bol „na viac“, čo pochopiteľne viedlo k plytvaniu diskovým priestorom, v tej dobe veľmi drahým. Žiadne z týchto riešení nebolo rozumne prijateľné, a preto nakoniec firma IBM systém IMS upravila do podoby, v ktorej mohol mať každý záznam niekoľko rodičov. Výsledný systém bol pomenovaný ako “rozšírený” hierarchický databázový model a svojou funkciou veľmi pripomínal sieťový databázový model.
Obrázok 1.4 ukazuje obsah vybraných záznamov v hierarchickom modeli. Niektoré dátové položky sme pre jednoduchosť vypustili, ale na celý obsah záznamov sa podľa potreby môžeme pozrieť na obrázku 1.2. Záznam zákazníka ALFKI obsahuje ukazovateľ na jeho prvú objednávku (číslo 10643) a táto prvá objednávka má ukazovateľ na ďalšiu objednávku (číslo 10692). Pretože objednávka číslo 10692 už ukazovateľ na ďalšiu objednávku neobsahuje, je to súčasne posledná objednávka tohto zákazníka. Podobne objednávka číslo 10643 obsahuje ukazovateľ na záznam s jej prvým riadkom (Rozpis objednávok, Výrobok 28), tento záznam obsahuje ukazovateľ na záznam ďalšieho riadku (Výrobok 39) tejto objednávky a tak ďalej.
Obrázok 1.4: Obsah záznamov v hierarchickom modeli
Medzi systémom s otvorenými súbormi a hierarchickým systémom je jeden ďalší dôležitý rozdiel – identifikátor ( kľúč ) rodičovského záznamu sa v hierarchickej databáze do potomkov nezapisuje, pretože vzťahy medzi záznamami sú sprostredkované pomocou ukazovateľov . Konkrétne teda zo záznamu Objednávky zmizlo číslo zákazníka a číslo zamestnanca a zo záznamu Rozpis objednávok bolo vypustené číslo výrobku. Ponechať tieto údaje v databáze nie je vhodné, pretože tím by v dátach mohli vznikať protichodné informácie – predstavte si napríklad objednávku, na ktorú ukazuje záznam jedného zákazníka, ale ktorá sama v sebe obsahuje číslo iného zákazníka.
Obrázok 1.5: Štruktúra databázy v hierarchickom modeli