SÍŤOVÝ A HIERARCHICKÝ DATABÁZOVÝ MODEL Lenka Novotná & Lada Oberreiterová 20.10.2004
OBSAH - struktura Úvod k databázovým modelům Síťový databázový model - vlastnosti - manipulace s daty - jazyk pro manipulaci s daty (DML) Hierarchický databázový model - podmínky úplnosti a definice dat - jazyk pro manipulaci s daty
ÚVOD K DATABÁZOVÝM MODELŮM Hierarchický - nebyl pro něj ustanoven žádný standard - nejznámější verze je označována IMS (Information Management System) Síťový - standardizován 1972 výborem Database Task Group (DBTG), který vznikl v rámci konference CODASYL (Conference on Data Systems Languages) - je systém IDMS (Integrated Database Management System) Relační Objektově orientovaný Objektově relační
Síťový databázový model Struktura - záznamy (records) - záznamové typy .. členské, vlastnické - množiny (sets) - množinové typy .. reprezentace vztahu 1:N
ZÁZNAMOVÝ TYP
MNOŽINOVÝ TYP (Bachmanův diagram) Definice - jméno množinového typu - jméno vlastnického záznamového typu - jméno členského záznamového typu
INSTANCE MNOŽINY Jeden vlastnický záznam Nula nebo více členských záznamů Členský záznamový typ nemůže existovat ve více jedné instanci množiny určitého množinového typu Určena vlastnickým záznamem (většinou) nebo některým z členských záznamů Nezaměňovat s množinou v matematice
SYSTÉMEM VLASTNĚNÁ MNOŽINA (SYSTEM-OWNED SET) Vlastnickým záznamem je systém (SŘDB) - „virtuální“ vlastnický typ (bez atributů) Vstupní body do databáze Uspořádání záznamů daného záznamového typu
REPREZENTACE MNOŽINOVÉ INSTANCE Musí dovolovat operace: - dán vlastník, najdi všechny členy této instance - dán vlastník, najdi první, i-tý nebo poslední člen instance; neexistuje-li vrať výjimku - dán člen, najdi následujícího (předchozího) člena; neexistuje-li vrať výjimku - dán člen, najdi vlastníka této instance
REPREZENTACE MNOŽINOVÉ INSTANCE Kruhový spojový seznam (kruhový řetěz) - nejčastější Kruhový spojový seznam s obousměrnými ukazateli „Ukazatel na vlastníka“ („owner-pointer“) Sousedící členské záznamy Pole ukazatelů Indexovaná reprezentace
KRUHOVÝ SPOJOVÝ SEZNAM Pole typů (type field) pro rozlišení členského a vlastnického záznamu K tomuto poli je každému záznamovému typu přiřazeno pole ukazatelů (pointer field) Ukazatel v členském záznamu se obvykle nazývá NEXT, ve vlastnickém záznamu FIRST
KRUHOVÝ SPOJOVÝ SEZNAM
VZTAH M:N
VZTAH M:N
VZTAH M:N
Síťový databázový model Vlastnosti - volby pro vkládání (insertion options) - volby pro uchovávání (retencion options) - volby pro uspořádání množiny (set ordering options) - volby pro výběr množiny (set selection options) - definice dat v síťovém modelu (data definition in the network model)
VOLBY PRO VKLÁDÁNÍ Volby: - AUTOMATIC Příkazy: - STORE - MANUAL - CONNECT
VOLBY PRO UCHOVÁVÁNÍ - OPTIONAL Volby: Příkazy: - CONNECT - MANDATORY - FIXED Příkazy: - CONNECT - DISCONNECT - RECONNECT
VOLBY PRO USPOŘÁDÁNÍ Třídění uspořádávajícím polem (sorted by an ordering field) Systémové implicitní nastavení (system default) První nebo poslední (first or last) Následující nebo předchozí (next or prior)
VOLBY PRO VÝBĚR MNOŽINY SET SELECTION IS STRUCTURAL - výběr množiny pomocí hodnot dvou polí, které se musí rovnat .. strukturální podmínka SET SELECTION BY APLICATION - množinová instance je určena aplikačním programem
DEFINICE DAT V SÍŤOVÉM MODELU RECORD NAME IS - pojmenování záznamového typu SET NAME IS - pojmenování množinového typu INSERTION IS - specifikace voleb pro vkládání RETENTION IS - specifikace voleb pro uchovávání SET SELECTION - specifikace výběru množinové instance (při volbě pro vkládání AUTOMATIC)
Síťový databázový model Manipulace s daty - DML (Data Manipulation Language) - UWA (User Work Area) - indikátory životnosti (currency indicators) - indikátory stavu (status indicators)
INDIKÁTORY ŽIVOTNOSTI Current of record type (aktuální záznam) Current of set type (aktuální množina) Current of run unit .. CRU (aktuální běhová jednotka)
INDIKÁTORY STAVU Vrací příznak úspěchu nebo chyby po vykonání každého DML příkazu Volá se hlavní stavová proměnná DB_STATUS, jejíž hodnota indikuje, zda byl příkaz úspěšný nebo zda došlo k chybě či výjimce
Síťový databázový model Jazyk pro manipulaci s daty (DML) - DML příkazy pro vyhledávání a navigaci - DML příkazy pro zpracování množiny - DML příkazy pro aktualizaci záznamů - DML příkazy pro aktualizaci množinových instancí
DML PŘÍKAZY PRO VYHLEDÁVÁNÍ A NAVIGACI GET .. vyhledání záznamu FIND .. určí polohu záznamu a specifikuje ho jako CRU - dvě hlavní varianty: - FIND ANY <record type name> [USING <field list>] … najde první výskyt - FIND DUPLICATE <record type name>[USING<field list>] … najde další stejný výskyt, hledání započíná na aktuálním záznamu
DML PŘÍKAZY PRO VYHLEDÁVÁNÍ A NAVIGACI
DML PŘÍKAZY PRO ZPRACOVÁVÁNÍ MNOŽINY FIND v následujících variantách: - FIND (FIRST | NEXT | PRIOR | LAST | …) <record type name> - FIND OWNER WITHIN <set type name>
DML PŘÍKAZY PRO ZPRACOVÁVÁNÍ MNOŽINY
DML PŘÍKAZY PRO AKTUALIZACI ZÁZNAMŮ STORE .. vkládání nových záznamů ERASE .. odstranění záznamu z databáze ERASE ALL .. odstranění záznamu i všech záznamů jím přímo i nepřímo vlastněných MODIFY .. mění některé z hodnot polí záznamu
DML PŘÍKAZY PRO AKTUALIZACI MNOŽINOVÝCH INSTANCÍ CONNECT .. vkládá členský záznam do množinové instance DISCONNECT .. odstranění členského záznamu z množinové instance bez připojení k jiné množinové instanci RECCONECT .. přesunutí členského záznamu z jedné množinové instance do jiné, která musí být stejného množinového typu
HIERARCHICKÝ DATABÁZOVÝ MODEL Struktura - parent-child relationship (PCR) a hierarchická schémata - vlastnosti hierarchického schématu - strom hierarchiských instancí - linearizovaná podoba stromu hierarchických instancí - virtuální PCR
HIERARCHICKÝ DATABÁZOVÝ MODEL Dva základní koncepty strukturování dat: - záznamy .. sbírky hodnot polí s informacemi o entitách nebo instancích vztahů - vztahy předek-potomek (parent-child relationship, PCR) .. 1:N vztahy mezi dvěma záznamovými typy
PARENT-CHILD RELATIONSHIP Složen ze dvou záznamových typů: - rodičovský záznamový typ .. jeden výskyt ve vztahu - typ záznamu potomek .. 0 až N výskytů ve vztahu
HIERARCHICKÁ SCHÉMATA Složeno z několika záznamových typů a PCR typů Na PCR typy se odvoláváme vypsáním uzávorkovaných dvojic (rodič, potomek) Znázorňuje se jako hierarchický diagram
VLASTNOSTI HIERARCHICKÉHO SCHÉMATU Kořen hierarchického schématu se nevyskytuje jako potomek v žádném PCR typu Každý záznamový typ kromě kořene se vyskytuje jako potomek právě v jednom PCR typu Záznamový typ může být rodičem v jakémkoli počtu (0 či více) PCR typů Záznamový typ, který není rodičem v žádném PCR typu, se nazývá list Jestliže typ se objevuje jako rodičovský ve více PCR typech, pak jsou jeho potomci uspořádáni dle konvencí zleva doprava (v diagramu)
STROM HIERARCHICKÝCH INSTANCÍ Uzlu odpovídá záznamový typ Hraně odpovídá PCR typ Na rozdíl od zobrazení hierarchie, zde nesplývají ani částečně hrany
LINEARIZOVANÁ PODOBA STROMU HIERARCHICKÝCH
VIRTUÁLNÍ PCR Hierarchický model má problémy s modelováním určitých typů vztahů, např.: - M:N vztah - záznam se vyskytuje jako potomek ve více než jednom PCR typu - n-ární vztahy s více než dvěma výskyty záznamových typů Virtuální PCR je podobný obyčejnému PCR, hlavní rozdíl je v implementaci; VPCR obvykle implementujeme pomocí pevně daného ukazatele z virtuálního potomka na jeho virtuálního předka
VIRTUÁLNÍ PCR
HIERARCHICKÝ DATABÁZOVÝ MODEL Podmínky úplnosti: - žádná instance záznamu (kromě kořenového) nemůže existovat bez toho, aby byla ve vztahu k nějaké instanci rodičovského záznamu - pokud má potomek více rodičů stejného typu, musí být duplikován pro každého z rodičů - potomek s více rodiči různých typů může mít nejvýše jednoho skutečného rodiče, ostatní jsou reprezentováni jako virtuální
HIERARCHICKÝ DATABÁZOVÝ MODEL Definice dat: - HDDL (Hierarchical Data Definition Language) - musíme definovat pole každého záznamového typu, typ dat každého pole a nějaké klíčové podmínky pro pole - dále musíme určit typ záznamu kořene a pro každý nekořenový záznamový typ určit jeho (skutečného) předka PCR typu - VPCR typy musí být také specifikovány
HIERARCHICKÝ DATABÁZOVÝ MODEL Jazyk pro manipulaci s daty - HDML (Hierarchical Data Manipulation Language) - poslední záznam, ke kterému přistoupil nějaký příkaz, se nazývá aktuální databázový záznam (current database record) - SŘBD udržuje ukazatel na aktuální záznam - posloupnost DB příkazů probíhá od aktuálního záznamu, může definovat nový aktuální záznam
PŘÍKAZY HDML GET .. Příkaz pro nalezení záznamu - uvedeme dvě varianty: GET FIRST <record type name>[WHERE<condition>] GET NEXT <record type name> [WHERE<condition>] - GET FIRST prohledává databázi od začátku hierarchické sekvence, hledá první instanci záznamu splňující podmínky - GET NEXT prohledává od aktuálního záznamu a hledá další záznam splňující podmínky
PŘÍKAZY HDML GET PATH .. vyhledávání záznamů za podmínek na jednotlivé záznamy v cestě k hledanému záznamu GET (FIRST | NEXT) PATH <hierarchical path>[WHERE<condition>] GET NEXT WITHIN PARENT .. nalezne další záznam daného typu, který má stejný rodičovský záznam GET NEXT <child record type name> WITHIN [VIRTUAL] PARENT [<parent record type name>] [WHERE<condition>]
PŘÍKLAD GET PATH
PŘÍKAZY HDML Aktualizační příkazy: - INSERT .. vloží záznam do databáze - DELETE .. vymaže záznam z databáze - GET HOLD .. používá se pro nastavení daného záznamu jako aktuálního záznamu
PŘÍKLAD DELETE
SHRNUTÍ - struktura Síťový databázový model - vlastnosti - manipulace s daty - jazyk pro manipulaci s daty (DML) Hierarchický databázový model - podmínky úplnosti a definice dat - jazyk pro manipulaci s daty