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