Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

1 Teorie zpracování dat SÍŤOVÝ DATOVÝ MODEL. 2  první databázový model, nejprve implementace různé  1971 definován pracovní skupinou pro databáze (DBTG.

Podobné prezentace


Prezentace na téma: "1 Teorie zpracování dat SÍŤOVÝ DATOVÝ MODEL. 2  první databázový model, nejprve implementace různé  1971 definován pracovní skupinou pro databáze (DBTG."— Transkript prezentace:

1 1 Teorie zpracování dat SÍŤOVÝ DATOVÝ MODEL

2 2  první databázový model, nejprve implementace různé  1971 definován pracovní skupinou pro databáze (DBTG = Data Base Task Group) při sdružení CODASYL (Conference on Data System Languages)  u nás starší síťové databázové systémy z konce 80.let IDMS (IBM 360, IBM 370, EC 1045, 1055) DBMS (SMEP, DEC, VAX) IMAGE (Hewlet-Packard, ADT)  v současnosti některé principy síťového modelu k využití u objektově- relačních SŘBD

3 3 Základní pojmy síťového modelu Logický model databáze... schéma Externí schéma... subschéma Typ entity … typ záznamu (RECORD) Atributy… komponenty Entity … výskyty záznamů příslušného typu. Množina výskytů záznamů deklarovaných typů … databáze Výskyty záznamů rozlišeny hodnotou databázového klíče. Vztah, vazba… množina (SET) Typ vazby … typ setu, má jméno a je definován typem záznamu vlastníka (OWNER) a typem záznamu člena setu (MEMBER). Vztah je reprezentován řadou výskytů setu.

4 4 Základní pojmy síťového modelu Základní rozdíl proti relačnímu datovému modelu je v realizaci vztahů. Jako u RDM realizovány jen vazby kardinality 1:M. SDM zaznamenává vztah pomocí ukazatelů na vazební entitu. K datové tabulce je připojena systémová část s tolika odkazy, ke kolika jiným typům záznamů je záznam v tabulce vázán.

5 5 Základní pojmy síťového modelu SETY  výskyt setu obsahuje právě jeden výskyt záznamu vlastníka a právě ty výskyty záznamů členů setu, které jsou s vlastníkem výskytu setu v příslušném vztahu  výskyt setu může obsahovat pouze výskyt záznamu vlastníka (prázdný výskyt setu)  množiny členů dvou výskytů téhož typu setu jsou disjunktní  implementace setu pomocí cyklického zřetězeného seznamu: ukazatel od vlastníka na prvního člena, pak zřetězeny členské záznamy, od posledního člena zpět na vlastníka.

6 6 Grafické znázornění prvků modelu (místo ERD) typ záznamu Katedra typ setu (hrana od vlastníka ke členu) jméno typu vlastníka Katedra jméno typu setu PRACOVNÍK-KATEDRY jméno typu člena Zaměstnanec výskyt záznamu Katedra kat.informatiky... UK

7 7 Grafické znázornění prvků modelu výskyt setu katedraKat.inform....Uk zaměstnČápUk zaměstnKosUk... zaměstnOrelUk

8 8 Pravidla pro definování setů Typ záznamu může být vlastníkem jednoho setu a členem jiného setu. Fak Fak_kat Kat Kat_zam Zam Typ záznamu může být členem libovolného počtu setů. Fak Kolej Stud_fak Stud Ubytov Typ záznamu může být vlastníkem libovolného počtu setů. Fak Fak_kat Stud_fak Kat Stud

9 9 Pravidla pro definování setů Vlastník a člen setu nemohou být téhož typu, unární vztah 1:N se realizuje prostřednictvím dalšího pomocného typu záznamu LINK. Zam Zam_link Link_zam LINK Vztah typu M:N není možno realizovat přímo a realizuje se pomocí dvou vazeb typu 1:M prostřednictvím spojovacího typu záznamu. Ten je členem v obou typech setů. Učit Třída Učit_učí Výuka_třídy Výuka

10 10 Jazyk pro definici dat Deklarace schématu SCHEMA NAME IS jméno_schématu RECORD SECTION deklarace_záznamů SET SECTION deklarace_setů Deklarace subschématu můžeme vynechat komponenty záznamů, záznamy nebo některé sety. komponentám záznamů je možno přiřadit jiný datový typ, změnit pořadí uvnitř záznamu, přiřadit jiná jména. neuvádíme vlastnosti definované ve schématu. SUBSCHEMA jméno_subschématu WITHIN jméno_schématu RECORD SECTION deklarace_záznamů SET SECTION deklarace_setů

11 11 Jazyk pro definici dat Deklarace typů záznamů (syntaxe z Cobolu) RECORD NAME IS jméno_typu_záznamu Způsob umístění nových záznamů LOCATION MODE IS SYSTEM... umístí sám systém DIRECT... přímo dle DB-klíče CALC proc USING sez-pol... hašováním VIA... pro členy setu "blízko" vlastníka 01 PIC 9(n) {9 znamená cifru} 01 PIC X(n) {X znamená znak} 02 PIC X(n) PIC X(n)...

12 12 Jazyk pro definici dat Deklarace typů setů SET NAME IS jméno_typu_setu OWNER IS jméno_typu_vlastníka uspořádání členů setu ORDER IS FIRST... uložení v setu jako první LAST... poslední NEXT... před aktuální PRIOR... za aktuální SORTED BY DEFINES KEYS... zatříděně PERMANENT... není možno měnit pořadí v aplikaci MEMBER IS MANDATORY... povinný člen, může měnit vlastníka FIXED... nemůže měnit vlastníka OPTIONAL... nepovinný člen AUTOMATIC... začlenění automaticky i do setu MANUAL... začlenění ručně uživatel v aplikaci DUPLICATE IS NOT ALLOWED... jednoznačnost

13 13 Jazyk pro definici dat Příklad: Typy záznamů: Učitel (ČU, jméno, funkce, plat) Předmět (ČP, název, ročník) Úvazek (ČU, ČP, hodin) Student (jméno, město, ulice) Kolej (název) Typy setů: UČITEL_UČÍ (Učitel, Úvazek) UČÍ_PŘEDMĚT (Předmět, Úvazek) BYDLÍ (Kolej, Student)

14 14 Jazyk pro definici dat

15 15 Jazyk pro definici dat SCHEMA NAME IS Fakulta RECORD SECTION RECORD NAME IS Učitel LOCATION MODE IS CALC hash_ču USING ču IN Učitel 02 ču PIC XXX 02 jméno PIC X(15) 02 funkce PIC X(10) 02 plat PIC 9(6) RECORD NAME IS Předmět LOCATION MODE IS CALC hash_čp USING čP IN Předmět 02 čp PIC XXX 02 název PIC X(15) 02 ročník PIC 9 RECORD NAME IS Úvazek LOCATION MODE IS SYSTEM-DEFAULT 02 ču PIC XXX 02 čp PIC XXX 02 hodin PIC 99

16 16 Jazyk pro definici dat SET SECTION SET NAME IS Učitel_učí OWNER IS Učitel ORDER IS PERMANENT SORTED BY DEFINED KEYS MEMBER IS Úvazek MANDATORY AUTOMATIC KEY IS ASCENDING čp IN Úvazek DUPLICATE ARE NOT ALLOWED SET SELECTION IS THRU Učitel_učí IDENTIFIED BY CALC-KEY SET NAME IS Učí_předmět OWNER IS Předmět ORDER IS PERMANENT SORTED BY DEFINED KEYS MEMBER IS Úvazek MANDATORY AUTOMATIC KEY IS ASCENDING ču IN Úvazek DUPLICATE ARE NOT ALLOWED SET SELECTION IS THRU Učí_předmět IDENTIFIED BY CALC-KEY

17 17 Jazyk pro manipulaci s daty Jazyk pro manipulaci s daty je vnořen do hostitelského jazyka (COBOL, PL/1). Dále předpokládáme hostitelský jazyk Pascal. Pro každý aplikační program (v paměti jich může současně být více) je v paměti počítače zvláštní oblast, nazývaná pracovní oblast uživatele (user work area). V každé uživatelské pracovní oblasti jsou umístěny: - místo pro uchování jeden záznam každého typu záznamu - ukazatele na aktuální objekty = ukazatele na naposledy zpracovávané záznamy každého typu = odkazy na naposledy zpracovávané záznamy v každém setu = odkaz na naposledy zpracovávaný záznam celého programu - stavové proměnné detekující chyby

18 18 Jazyk pro manipulaci s daty Paměť pro jedenČU jméno...Záznam Učitel výskyt každéhoČP název...Záznam Předmět typu záznamuČU ČP hodinZáznam Úvazek UkazateleDB-KEY programCurrent of PROGRAM aktuálníchDB-KEY UčitelCurrent of Učitel výskytůDB-KEY PředmětCurrent of Předmět záznamůDB-KEY ÚvazekCurrent of Úvazek... Ukazatele DB-KEY U-ÚCurrent of Učitel_učí uvnitř setuDB-KEY U-PCurrent of Učí_předmět... Systémové proměnné DB-STATUS... Příklad: pracovní oblast pro databázi FAKULTA

19 19 Jazyk pro manipulaci s daty – seznam příkazů FIND vyhledá výskyt záznamu v DB a definuje jej za aktuální záznam programu, aktuální záznam příslušného typu záznamu, případně aktuálním záznamem setů, v nichž je záznam zařazen … databázový klíč vyhledaného výskytu záznamu je uložen do položek Current of Program, příslušného Current of RECORD a příslušných Current of SET GET přesune do uživatelské oblasti aktuální záznam programu STOREuloží nový výskyt záznamu do DB, definuje jej za aktuální záznam programu, aktuální záznam příslušného typu záznamu a za aktuální záznamy setů, do nichž je případně automaticky zařazen MODIFY modifikuje aktuální záznam programu ERASE vymaže aktuální záznam programu z DB CONNECT vloží aktuální záznam programu do výskytu setu DISCONNECT vyjme aktuální záznam programu z výskytu setu RECONNECT přesune aktuální záznam do jiného setu

20 20 Jazyk pro manipulaci s daty – seznam příkazů ORDER setřídí set ACCEPT přesun hodnot systémových DB proměnných do položek v programu KEEP uzamkne výskyt záznamu pro ostatní uživatele FREE odemkne výskyt záznamu READY otevře pracovní uživatelskou oblast pro práci s DB FINISH ukončí práci s pracovní uživatelskou oblastí... Poznámka: Příkazy FIND a STORE mění obsah tabulky běžných ukazatelů, ostatní příkazy pracují s aktuálním záznamem jako s operandem. Označíme: T... typ záznamu S... typ setu DBK... db-klíč

21 21 Jazyk pro manipulaci s daty - příkazy GET T načte výskyt záznamu do uživatelské pracovní oblasti, pokud aktuálním záznamem programu je výskyt záznamu typu T Příkaz FIND vyhledává záznamy v DB a definuje je za aktuální záznam programu, má mnoho tvarů podle typu vyhledávání. Vyhledání záznamu podle hodnoty databázového klíče FIND T RECORD BY DB-KEY DBK Příklad: klíč:=CURRENT OF Učitel;... FIND Učitel RECORD BY DB-KEY klíč; GET Učitel;

22 22 Jazyk pro manipulaci s daty - příkazy Vyhledání záznamu podle CALC-klíče FIND T RECORD BY CALC_KEY je nutné dosadit hodnotu položkám definovaným jako CALC-klíče pro T Příklad: Najděte učitele s číslem U1. Učitel.ČU:="U1"; FIND Učitel RECORD BY CALC-KEY; GET Učitel;

23 23 Jazyk pro manipulaci s daty - příkazy Vyhledání dalších výskytů záznamů s hodnotou CALC- klíče FIND DUPLICATE T RECORD BY CALC-KEY Příklad: Předpokládejme deklaraci typu záznamu Úvazek se způsobem umístění pomocí CALC-KEY, kde ČU je definováno jako CALC-klíč tohoto záznamu. Z původní definice ČP je CALC-klíč záznamu Předmět. Pak názvy všech předmětů, které učí učitel U1 zjistíme takto: Úvazek.ČU:="U1”; FIND Úvazek RECORD BY CALC-KEY; WHILE (DB-STATUS=0) DO BEGIN GET Úvazek; Předmět.ČP:=Úvazek.ČP; FIND Předmět RECORD BY CALC-KEY; GET Předmět; PRINT(Předmět.ČP, Předmět.název); FIND DUPLICATE Úvazek RECORD BY CALC-KEY END;

24 24 Jazyk pro manipulaci s daty - příkazy Selektivní vyhledávání podle předem zadaných hodnot položek: FIND T RECORD USING POL Příklad: V záznamu STUDENT hledáme ulici, kde bydlí NOVÁK. Student.jméno:="NOVÁK"; FIND Student RECORD USING jméno; GET Student; PRINT(Student.ulice); Vyhledání dalších záznamů se stejnými hodnotami zadané položky FIND DUPLICATE T RECORD USING POL Příklad: Chceme vypsat všechna jména studentů, kteří bydlí v Opavě. Student.město:="Opava"; FIND Student RECORD USING město ; WHILE (DB-STATUS=0) DO BEGIN GET Student ; PRINT(Student.jméno) ; FIND DUPLICATE Student RECORD USING město END;

25 25 Jazyk pro manipulaci s daty - příkazy Student Kolej jmenomestoulicenazev HorákKarviná…Moravská NovosadOpavaOpletalova NovotnýOstravaZelená 23Studentská KrejčíOpavaDr. Malého …… … Student Kolej Ukaz – program Ukaz – Student Ukaz – Kolej Ukaz –Bydli chyba

26 26 Jazyk pro manipulaci s daty - příkazy Vyhledání záznamů uvnitř výskytu setu Pokud při hledání výskytu záznamu víme, do kterého setu záznam patří, hledání se výrazně urychlí. Hledat můžeme buď v právě aktuálním setu (CURRENT SET) nebo v setu daném vlastníkem (OWNER). Vyhledání vlastníka aktuálního výskytu zadaného setu: FIND OWNER OF CURRENT S SET Vyhledání prvního člena aktuálního výskytu zadaného setu: FIND FIRST T RECORD IN CURRENT S SET Vyhledání následujícího výskytu záznamu uvnitř aktuálního výskytu setu FIND NEXT T RECORD IN CURRENT S SET

27 27 Jazyk pro manipulaci s daty - příkazy Příklad: Vypište seznam všech předmětů, které učí učitel Bouchala. Učitel.jméno:=„Bouchala"; FIND Učitel RECORD USING jméno; FIND FIRST Úvazek RECORD IN CURRENT Učitel_učí SET WHILE (DB-STATUS=0) DO BEGIN FIND OWNER OF CURRENT Předmět_učí SET; GET Předmět; PRINT(Předmět.název); FIND NEXT Úvazek RECORD IN CURRENT Učitel_učí SET END;

28 28 Jazyk pro definici dat

29 29 Jazyk pro manipulaci s daty - příkazy Selektivní vyhledávání záznamů uvnitř aktuálního výskytu setu: FIND T RECORD IN CURRENT S SET USING POL FIND DUPLICATE T RECORD IN CURRENT S SET USING POL Příklad: Vypište čísla učitelů, kteří učí předmět Logika 4 hodiny/týd Předmět.název:= „Logika“; FIND Předmět RECORD USING název; Úvazek.hodin:= 4; FIND Úvazek RECORD IN CURRENT Učí-před SET USING hodin; WHILE (DB-STATUS = 0) DO BEGIN GET Úvazek; PRINT(Úvazek.ČU); FIND DUPLICATE Úvazek RECORD IN CURRENT Před-učí SET USING hodin; END;

30 30 Jazyk pro manipulaci s daty - příkazy Vyhledání záznamů podle hodnot z tabulky aktuálních ukazatelů FIND CURRENT OF T RECORD Nastaví aktuální záznam nějakého typu za aktuální záznam programu. FIND CURRENT OF S SET Nastaví aktuální záznam typu setu za aktuální záznam programu

31 31 Jazyk pro manipulaci s daty - příkazy Příklad: Učí učitel U1 předmět Logika? Pokud ano, v jakém rozsahu? Učitel.ČU:="U1"; FIND Učitel RECORD BY CALC-KEY; neučí:=TRUE; FIND FIRST Úvazek RECORD IN CURRENT Učitel-učí SET; WHILE (DB-STATUS=0) AND neučí DO BEGIN FIND OWNER OF CURRENT Učí_předmět SET; GET Předmět; IF Předmět.název = "Logika" THEN BEGIN FIND CURRENT OF Úvazek RECORD; GET Úvazek; PRINT(Úvazek.hodin); neučí:=FALSE END ELSE FIND NEXT Úvazek RECORD IN CURRENT Učitel-učí SET END;

32 32 Jazyk pro manipulaci s daty - příkazy Nový záznam STORE T Zapíše nový záznam do databáze. Nejprve vytvoříme výskyt záznamu v pracovní uživatelské oblasti a odtud ho příkazem STORE do DB uložíme. Ukládaný záznam se stane aktuálním záznamem programu a je zařazen do všech setů, v nichž je deklarován jako člen typu AUTOMATIC. Příklad: Do databáze Fakulta přidáme další výskyt záznamu učitele do záznamu Učitel. Učitel.jméno:="Novotný“ Učitel.ČU:=123; Učitel.funkce:="Docent"; STORE Učitel ;

33 33 Jazyk pro manipulaci s daty - příkazy Modifikace záznamu MODIFY T Modifikace záznamu. Záznam v DB najdeme příkazem FIND, načteme do pracovní oblasti příkazem GET, opravíme příslušné komponenty záznamu a pomocí příkazu MODIFY zapíšeme zpět. Příklad: Student Novotný se přestěhoval do ulice Zelené 23. Student.jméno:="Novotný"; FIND Student USING jméno ; GET Student ; Student.ulice:="Zelená 23" ; MODIFY Student ;

34 34 Jazyk pro manipulaci s daty - příkazy Zrušení záznamu ERASE T [ PERMANENT ] [ SELECTIVE ] [ ALL ] Zruší aktuální záznam programu (vyhledaný pomocí FIND), pokud není vlastníkem neprázdného výskytu nějakého setu. Je-li zadáno PERMANENT a aktuální záznam programu je vlastníkem výskytů setů, pak jsou spolu zrušeny i všechny členské záznamy s členstvím MANDATORY (= povinné členství). SELECTIVE navíc zruší všechny členské záznamy s členstvím OPTIONAL (= nepovinné členství), pokud nejsou zařazeny v žádném jiném setu. ALL zruší všechny členské záznamy bez ohledu na druh členství a zařazení v jiných setech.

35 35 Jazyk pro manipulaci s daty - příkazy Modifikace struktury setů CONNECT T TO S zařadí aktuální záznam programu jako aktuální výskyt zadaného setu; nelze použít pro druh členství MANDATORY AUTOMATIC (= povinné automatické členství). Příklad: Máme set BYDLÍ s vlastníkem Kolej a členem Student. Máme zařadit studentku se jménem Kosová Helena na kolej Opletalovu. Kolej.název:="Opletalova"; FIND Kolej RECORD USING název; Student.jméno:="Kosová Helena"; FIND Student RECORD USING jméno; CONNECT Student TO Bydlí;

36 36 Jazyk pro manipulaci s daty - příkazy Modifikace struktury setů DISCONNECT T FROM S vyřadí aktuální záznam programu z výskytu zadaného setu. Druh členství v setu musí být OPTIONAL. Příklad: Vyloučení studenta Jana Skřivánka z koleje Mánesova. Kolej.název:="Mánesova"; FIND Kolej RECORD USING název; Student.jméno:="Skřivánek Jan"; FIND Student RECORD USING jméno; DISCONNECT Student FROM Bydlí;

37 37 Jazyk pro manipulaci s daty - příkazy Modifikace struktury setů RECONNECT T TO S přesune aktuální záznam z původního do aktuálního výskytu setu. Příklad: Student Novotný se přestěhoval z koleje Opletalovy do koleje Mánesovy. Student.jméno:="Novotný"; FIND Student RECORD USING jméno; Kolej.název:="Mánesova"; FIND Kolej RECORD USING název; RECONNECT Student TO Bydlí

38 38 Jazyk pro manipulaci s daty - příkazy Animace příkazů find duplicate using pol.exe

39 39 Hierarchický datový model Používán hlavně v počátcích rozvoje databázových systémů, zjednodušený síťový model. Zobrazíme-li záznamy jako uzly a vazby jako hrany grafu, odpovídá databázi v síťovém modelu obecný graf. Databázi v hierarchickém modelu odpovídá strom (graf bez cyklů) nebo les (množina stromů). Záznam nemůže patřit do více než jednoho setu. Při popisování se používá rodinné terminologie - místo vlastník otec, místo člen syn. vlastníkotec členovésynové síťový model hierarchický model


Stáhnout ppt "1 Teorie zpracování dat SÍŤOVÝ DATOVÝ MODEL. 2  první databázový model, nejprve implementace různé  1971 definován pracovní skupinou pro databáze (DBTG."

Podobné prezentace


Reklamy Google