• Nie Znaleziono Wyników

Sk ł ad danych cwiczenia 2. JPS

N/A
N/A
Protected

Academic year: 2021

Share "Sk ł ad danych cwiczenia 2. JPS"

Copied!
15
0
0

Pełen tekst

(1)

JPS

Skład danych

cwiczenia 2.

© Michał Lentner

Polsko-Japońska Wyższa Szkoła Technik Komputerowych

(2)

Obiekty

Proste

<OID, nazwa, wartość>

np. <i0, imie, “Jan”>, <i1, pensja, 3354>

Złożone

<OID, nazwa, { OID1, OID2, OID3, ... }>

np. <i2, pracownik, { i0, i1 }>

Referencyjne

<OID, nazwa, OID1>

np. <i3, pracuje_w, i4>

(3)

Baza danych

<i0, entry, {i1, i2, i5}>

<i1, emp, {i15, i16, i17}>

<i16, ename, "Dudek">

<i17, works_in, i5>

<i15, job, "Clerk">

<i2, emp, {i18, i19, i20, i21}>

<i21, ename, "Nowak">

<i18, salary, 3500>

<i19, works_in, i4>

<i20, job, "Programmer">

<i5, dept, {i22, i23, i24}>

<i24, dname, "Sales">

<i23, loc, "Kraków">

<i22, employs, i1>

(4)

CRUD składu

Create

Tworzenie obiektów w składzie.

Alokacja miejsca, aktualizacja wartości obiektu nadrzędnego.

Create(rodzaj_obiektu, nazwa, wartość, OID_nadrzędnego)

Retrieve

Zwracanie wartości obiektów.

Retrieve(OID) = wartość

Update

Zmiana wartości istniejących obiektów.

Update(OID, wartość)

Delete

Usuwanie obiektów ze składu.

Aktualizacja obiektu nadrzędnego, usunięcie podobiektów, usunięcie referencji wskazujących na dany obiekt, zwolnienie miejsca.

Delete(OID)

(5)

Create (1)

1. Pusta baza danych

Create(COMPLEX, ”entry”, { }, -)

<i0, “entry”, {}>

2. Tworzymy pracownika

Create(COMPLEX, ”emp”, { }, i0)

<i0, “entry”, {i1}>

<i1, “emp”, { }>

3. Tworzymy nazwisko

Create(STRING, ”ename”, “Kowalski”, i1)

<i0, “entry”, {i1}>

<i1, “emp”, {i2}>

<i2, “ename”, “Kowalski”>

4. Tworzymy pensję

Create(INTEGER, ”salary”, 1000, i1)

<i0, “entry”, {i1}>

<i1, “emp”, {i2, i3}>

<i2, “ename”, “Kowalski”>

<i3, “salary”, 1000>

(6)

Create (2)

1. Tworzymy drugiego pracownika Create(COMPLEX, “emp”, { }, i0)

<i0, “entry”, {i1, i4}>

<i1, “emp”, {i2, i3}>

<i2, “ename”, “Kowalski”>

<i3, “salary”, 1000>

<i4, “emp”, { }>

2. Tworzymy nazwisko drugiego pracownika Create(STRING, “ename”, “Nowak”, i4);

<i0, “entry”, {i1, i4}>

<i1, “emp”, {i2, i3}>

<i2, “ename”, “Kowalski”>

<i3, “salary”, 1000>

<i4, “emp”, {i5}>

<i5, “ename, “Nowak”>

(7)

Retrieve

Baza:

<i0, “entry”, {i1, i4}>

<i1, “emp”, {i2, i3}>

<i2, “ename”, “Kowalski”>

<i3, “salary”, 1000>

<i4, “emp”, {i5}>

<i5, “ename, “Nowak”>

Operacje:

Retrieve(i0) = {i1, i4}

Retrieve(i1) = {i2, i3}

Retrieve(i2) = “Kowalski”

Retrieve(i3) = 1000

(8)

Update

Baza:

<i0, “entry”, {i1, i4}>

<i1, “emp”, {i2, i3}>

<i2, “ename”, “Kowalski”>

<i3, “salary”, 1000>

<i4, “emp”, {i5}>

<i5, “ename, “Nowak”>

Aktualizacja nazwiska i pensji:

Update(i2, “Walewski”) Update(i3, 2000)

Baza po modyfikacjach:

<i0, “entry”, {i1, i4}>

<i1, “emp”, {i2, i3}>

<i2, “ename”, “Walewski”>

<i3, “salary”, 2000>

<i4, “emp”, {i5}>

<i5, “ename, “Nowak”>

(9)

Delete

Baza:

<i0, “entry”, {i1, i4, i7}>

<i1, “emp”, {i2, i3, i6}>

<i2, “ename”, “Kowalski”>

<i3, “salary”, 1000>

<i4, “emp”, {i5}>

<i5, “ename, “Nowak”>

<i6, “works_in”, i7>

<i7, “dept”, {i8, i9}>

<i8, “dname”, “Sales”>

<i9, “location”, “Warsaw”>

Usunięcie pierwszego pracownika, nazwiska drugiego pracownika i departamentu:

Delete(i5) - usuwa obiekt i5

Delete(i7) - usuwa obiekt i7, wszystkie jego podobiekty i obiekt i6 Delete(i1) - usuwa obiekt i1 i wszystkie jego podobiekty

Baza

<i0, “entry”, {i4}>

<i4, “emp”, { }>

(10)

Implementacja

OID ID : integer

DataStore SBAObject[] Data

OID Entry

CreateStringObject(name : string, value : string, parent : OID) : OID CreateIntegerObject(name : string, value : integer, parent : OID) : OID CreateSpiderObject(name : string, value : OID[], parent : OID) : OID CreateReferenceObject(name : string, value : OID, parent : OID) : OID RetrieveStringObjectValue(ref : OID) : string

RetrieveIntegerObjectValue(ref : OID) : integer RetrieveSpiderObjectValue(ref : OID) : OID[]

RetrieveReferenceObjectValue(ref : OID) : OID UpdateStringObjectValue(ref : OID, val : string) UpdateIntegerObjectValue(ref : OID, val : integer) UpdateSpiderObjectValue(ref : OID, val : OID[]) UpdateReferenceObjectValue(ref : OID, val : OID) DeleteObject(ref : OID)

FindByName(string : name, parent : OID) : OID[]

SBAObject name : string parent : OID

StringObject val : string

IntegerObject val : integer

SpiderObject val : OID[]

SimpleObject ComplexObject

ReferenceObject val : OID

(11)

Obiekty

(12)

Obiekty

(13)

Przykład implementacji:

tworzenie, odczytywanie i aktualizowanie

obiektów

(14)

XML

Interpreter powinien mieć moduł ładujący dokumenty XML do składu

Wykorzystać DOM, SAX, lub coś jeszcze innego

(15)

Ć wiczenia

Cytaty

Powiązane dokumenty

• Zamiast umieszczać metodę eval w każdym węźle drzewa, wszystkie je umieszczamy w osobnej klasie zapewniającej określoną funkcjonalność (interpreter, type

+ IntegerResult StringResult BooleanResult RealResult StructResult BinderResult ReferenceResult BagResult SequenceResult?. IntegerResult

Polsko-Japońska Wyższa Szkoła Technik Komputerowych.. pracownik where nazwisko =

Przenoszenie zakażenia COVID-19 z matki na dziecko rzadkie Wieczna zmarzlina może zacząć uwalniać cieplarniane gazy Ćwiczenia fizyczne pomocne w leczeniu efektów długiego

There are described case reports about the femoral vein approach, for the extraction of the pacemaker lead by using a snare [4, 5].. In the present case, as is rarely in

Według danych autorów wśród wskazań do histe- rektomii okołoporodowej znalazły się według malejącej częstości: nieprawidłowości łożyska (50%), atonia macicy (41,6%)

* Uwaga zgoda podwójna tj. zgoda pacjenta oraz jego przedstawiciela ustawowego wymagana jest, gdy pacjent ukończył 16 rok życia).  Nie zgadzam się na proponowany mi

dodatkowy podpis pacjenta małoletniego , który ukończył 16 lat (zgoda podwójna- zgoda pacjenta małoletniego oraz jego.