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

SÍŤOVÝ DATOVÝ MODEL

  • Upload
    armina

  • View
    46

  • Download
    0

Embed Size (px)

DESCRIPTION

SÍŤOVÝ DATOVÝ MODEL. Teorie zpracování dat. SÍŤOVÝ DATOVÝ MODEL. 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) - PowerPoint PPT Presentation

Citation preview

Page 1: SÍŤOVÝ DATOVÝ MODEL

1

Teorie zpracování dat

SÍŤOVÝ DATOVÝ MODEL

Page 2: SÍŤOVÝ DATOVÝ MODEL

2

SÍŤOVÝ DATOVÝ MODEL

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

Page 3: SÍŤOVÝ DATOVÝ MODEL

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.

Page 4: SÍŤOVÝ DATOVÝ MODEL

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.

Page 5: SÍŤOVÝ DATOVÝ MODEL

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.

Page 6: SÍŤOVÝ DATOVÝ MODEL

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

Page 7: SÍŤOVÝ DATOVÝ MODEL

7

Grafické znázornění prvků modelu

výskyt setukatedra Kat.inform. . . . Uk

zaměstn Čáp Uk

zaměstn Kos Uk

. . .

zaměstn Orel Uk

Page 8: SÍŤOVÝ DATOVÝ MODEL

8

Pravidla pro definování setů

Typ záznamu může být vlastníkem jednoho setu a členem jiného setu .Fak

Fak_katKat

Kat_zamZam

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_fakKat Stud

Page 9: SÍŤOVÝ DATOVÝ MODEL

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.

ZamZam_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

Page 10: SÍŤOVÝ DATOVÝ MODEL

10

Jazyk pro definici dat

Deklarace schématu SCHEMA NAME IS jméno_schématu

RECORD SECTIONdeklarace_záznamů

SET SECTIONdeklarace_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ů

Page 11: SÍŤOVÝ DATOVÝ MODEL

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 <komponenta 1> PIC 9(n) {9 znamená cifru}

01 <komponenta 2> PIC X(n) {X znamená znak}

02 <komponenta 3> PIC X(n)

...

01 <komponenta 5> PIC X(n)

...

Page 12: SÍŤOVÝ DATOVÝ MODEL

12

Jazyk pro definici dat

Deklarace typů setů SET NAME IS jméno_typu_setu

OWNER IS jméno_typu_vlastníkauspořá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 <jméno typu člena>MANDATORY ... povinný člen, může měnit vlastníkaFIXED ... nemůže měnit vlastníka OPTIONAL ... nepovinný členAUTOMATIC ... začlenění automaticky i do setu

MANUAL ... začlenění ručně uživatel v aplikaciDUPLICATE IS NOT ALLOWED ... jednoznačnost

Page 13: SÍŤOVÝ DATOVÝ MODEL

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)

Page 14: SÍŤOVÝ DATOVÝ MODEL

14

Jazyk pro definici dat

Page 15: SÍŤOVÝ DATOVÝ MODEL

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 XXX02 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 XXX02 název PIC X(15)02 ročník PIC 9

RECORD NAME IS Úvazek LOCATION MODE IS SYSTEM-DEFAULT

02 ču PIC XXX02 čp PIC XXX02 hodin PIC 99

Page 16: SÍŤOVÝ DATOVÝ MODEL

16

Jazyk pro definici dat

SET SECTIONSET 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-KEYSET NAME IS Učí_předmět OWNER IS Předmět ORDER IS PERMANENT SORTED BY DEFINED KEYSMEMBER 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

Page 17: SÍŤOVÝ DATOVÝ MODEL

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

Page 18: SÍŤOVÝ DATOVÝ MODEL

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 hodin Záznam Úvazek

Ukazatele DB-KEY program Current of PROGRAM

aktuálních DB-KEY Učitel Current of Učitel

výskytů DB-KEY Předmět Current of Předmět

záznamů DB-KEY Úvazek Current of Úvazek

. . .

Ukazatele DB-KEY U-Ú Current of Učitel_učí

uvnitř setu DB-KEY U-P Current of Učí_předmět

. . .

Systémové proměnné

DB-STATUS . . .

Příklad: pracovní oblast pro databázi FAKULTA

Page 19: SÍŤOVÝ DATOVÝ MODEL

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 programuSTORE uloží 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 programuERASE vymaže aktuální záznam programu z DB

CONNECT vloží aktuální záznam programu do výskytu setuDISCONNECT vyjme aktuální záznam programu z výskytu setuRECONNECT přesune aktuální záznam do jiného setu

Page 20: SÍŤOVÝ DATOVÝ MODEL

20

Jazyk pro manipulaci s daty – seznam příkazů

ORDER setřídí setACCEPT přesun hodnot systémových DB proměnných do položek v

programuKEEP uzamkne výskyt záznamu pro ostatní uživateleFREE odemkne výskyt záznamuREADY otevře pracovní uživatelskou oblast pro práci s DBFINISH 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íč

Page 21: SÍŤOVÝ DATOVÝ MODEL

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;

Page 22: SÍŤOVÝ DATOVÝ MODEL

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;

Page 23: SÍŤOVÝ DATOVÝ MODEL

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;

Page 24: SÍŤOVÝ DATOVÝ MODEL

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žkyFIND 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;

Page 25: SÍŤOVÝ DATOVÝ MODEL

25

Jazyk pro manipulaci s daty - příkazy

Student Kolejjmeno mesto ulice nazev

Horák Karviná … Moravská

Novosad Opava Opletalova

Novotný Ostrava Zelená 23 Studentská

Krejčí Opava Dr. Malého

… …

Student

Kolej

Ukaz – program

Ukaz – Student

Ukaz – Kolej

Ukaz –Bydli

chyba

Page 26: SÍŤOVÝ DATOVÝ MODEL

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

Page 27: SÍŤOVÝ DATOVÝ MODEL

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;

Page 28: SÍŤOVÝ DATOVÝ MODEL

28

Jazyk pro definici dat

Page 29: SÍŤOVÝ DATOVÝ MODEL

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;

Page 30: SÍŤOVÝ DATOVÝ MODEL

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

Page 31: SÍŤOVÝ DATOVÝ MODEL

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;

Page 32: SÍŤOVÝ DATOVÝ MODEL

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 ;

Page 33: SÍŤOVÝ DATOVÝ MODEL

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 ;

Page 34: SÍŤOVÝ DATOVÝ MODEL

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.

Page 35: SÍŤOVÝ DATOVÝ MODEL

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í;

Page 36: SÍŤOVÝ DATOVÝ MODEL

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í;

Page 37: SÍŤOVÝ DATOVÝ MODEL

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í

Page 38: SÍŤOVÝ DATOVÝ MODEL

38

Jazyk pro manipulaci s daty - příkazy

Animace příkazů

find duplicate using pol.exe

Page 39: SÍŤOVÝ DATOVÝ MODEL

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ík otec

členové synové

síťový model hierarchický model