rĪgas tehniskĀ universitĀte web viewlikumiem atbilstošais tips, kurā ir definēti divi...

43
RĪGAS TEHNISKĀ UNIVERSITĀTE DATORZINĀTNES UN INFORMĀCIJAS TEHNOLOĢIJAS FAKULTĀTE Deduktīvās datu bāzes projektēšana un izstrāde Izstrādāja Edgars Matisāns

Upload: lydan

Post on 19-Mar-2018

220 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

RĪGAS TEHNISKĀ UNIVERSITĀTE

DATORZINĀTNES UN INFORMĀCIJASTEHNOLOĢIJAS FAKULTĀTE

Deduktīvās datu bāzes projektēšana un izstrāde

Izstrādāja Edgars Matisāns

2009./2010. mācību gads

Page 2: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Anotācija

Dotā darba tēma ir deduktīvās datu bāzes projektēšana un izstrāde, kas sevī ietver likumu

datu bāzes projektējuma izstrādi, objekta tipu definēšanu, likumu, faktu, izvedumu koka

uzglabāšanas struktūru izveidošanu, kā arī procedūru un funkciju paketes izveidošanu, kas

nodrošina deduktīvās datu bāzes darbības.

Darbs sastāv no praktiskā darba, kas tika veikts izmantojot Oracle 10g datu bāzes vadības

sistēmu un SQL grafisko klienta lietojumu Oracle SQL Developer, un šī apraksta, kas iever

lietotās komandas un to aprakstus.

Darbā iekļauti 46 attēli, 5 literatūras avoti bibliogrāfiskajā rādītājā un darba kopējais

apjoms ir 32 lpp.

Page 3: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Saturs

UZDEVUMA APRAKSTS..........................................................................................................................................4

1. DATU BĀZES PROJEKTĒŠANA.........................................................................................................................5

2. OBJEKTA TIPU IZVEIDOŠANA.........................................................................................................................7

3. LIKUMU UN FAKTU UZGLABĀŠANAS STRUKTŪRU IZVEIDOŠANA....................................................8

4. DEDUKTĪVĀS DATU BĀZES PROGRAMMU PAKETES IZSTRĀDE.......................................................13

5. DEDUKTĪVĀS DATU BĀZES PIELIETOJUMS..............................................................................................23

6. DEDUKTĪVĀS DATU BĀZES PĀRBAUDE......................................................................................................27

SECINĀJUMI.............................................................................................................................................................30

IZMANTOTĀ LITERATŪRA..................................................................................................................................32

Page 4: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Uzdevuma apraksts

Darba uzdevums sastāv no sekojošiem apakš uzdevumiem:

1. Datu bāzes projektēšana.

2. Objekta tipu izveidošana.

3. Likumu, faktu un izvedumu koka datu uzglabāšanas struktūru izveide.

4. Procedūru un funkciju paketes realizācija, kas nodrošina deduktīvās datu bāzes darbības.

5. Deduktīvās datu bāzes darbību pielietojums.

6. Deduktīvās datu bāzes pārbaude.

4

Page 5: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

1. Datu bāzes projektēšana

Par dotā darba tēmu tika izvēlēts ģimeņu koki, tā kā šis ir viens no klasiskajiem deduktīvās

datu bāzes pielietojuma piemēriem. Tā kā vairāku attieksmju, kas pastāv starp ģimenes

locekļiem, to starpā attieksme „māsa”, abstraktas realizācija tika apskatītas nodarbību laikā, tad,

kā primārais uzdevums, kas tiks risināts izstrādātajā deduktīvajā datu bāzē, ir pasniedzēja

piedāvātā attieksme „vecmāte”.

Taču, jau datu bāzes projektēšanas stadijā, tika paredzēta iespēja nemainot datu bāzes

elementu (procedūru, funkciju) realizāciju veikt arī citus uzdevumus, piemēram, meklēt

personas, vecvecākus, māsas, brāļus utt., kas tiek demonstrēts nodaļā, kas apraksta datu bāzes

paplašinājuma darbību.

Deduktīvās datu bāzes likumu un faktu glabāšanai un apstrādei, tiek izmantoti objekti,

objektu tabula un tabula ar objektu kolonnām (skat. 1.2. attēlu), kas ļauj visu informāciju, kas

attiecas uz vienu likumu, glabāt vienkopus. Attēlā ilustrētā tabula LIKUMI paredzēta likumu

uzglabāšanai. Lauks PREDIKATS satur informāciju par predikātu. Ja predikāts ir vienkāršs

likums (fakta tipa), piemēram, VECAKS, tad lauks SASTAVDALAS ir tukšs. Ja predikāts ir

salikts likums (likuma tipa), piemēram, VECVECAKS, tad laukā SASTAVDALAS ir iekļauti

citi likumi, konkrētajā gadījumā, likums VECAKS (Tevs, Dels) un VECAKS (Vectevs, Tevs).

Tabula IZVEDUMU_KOKS paredzēta uzdevuma izpildes laikā izmantoto likumu

uzglabāšanai, kā arī substitūciju veikšanai. Proti, šajā tabulā tiek ievietots sākotnējais likums,

kuram tiek veikta dekompozīcija, līdz tas satur tikai faktu tipa likumus (likumus, kas nesastāv no

citiem likumiem). Pēc dekompozīcijas tiek veikta formālo un reālo argumentu substitūcija visā

hierarhijas līmenī. Tādējādi, formālie argumenti visos tabulas IZVEDUMU_KOKS likumos tiek

aizvietoti ar lietotāja norādītajiem argumentiem (argumentu), kas, izveidojot atbilstošu

vaicājumu, ļauj rast atbildi lietotāja deduktīvās datu bāzes jautājumu.

1.1. att. Likumu un izvedumu koka tabula

Lai nodrošinātu pēc iespējas mazāku deduktīvā paplašinājuma atkarību no problēmas

sfēras datu bāzes, faktu izgūšanai tiek izmantots universāls interfeiss – datu bāzes skats (skat.

1.2. attēlu), no kura ir iespējams izgūt visus faktus. Tādējādi, deduktīvais lietojums vienmēr

sadarbojas tikai ar likumu, izvedumu koka un faktu tabulu. Šāda faktu nodalīšana no reālajiem

5

Page 6: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

datiem ļauj salīdzinoši vienkārši pievienot jaunas problēmas sfēras tabulas, papildus tabulai

PERSONAS, tajā pat laikā nemainot skata FAKTI interfeisu. Šādā gadījumā mainītos tikai skata

fakti vaicājums, taču formāts un lauki, kurus iespējams izgūt, netiek mainīti.

Lai aprakstītu ģimenes koku, tai skaitā personas vārdu, dzimumu un vecākus, tiek

izmantota viena tabula, lai gan, tik pat labi var izmantot arī vairākas. Izstrādātā arhitektūra

nodrošina brīvību šajā jautājumā, ar vienīgo ierobežojumu, datu bāzē jābūt pieejamam skatam

FAKTI ar trijiem 1.2. attēlā norādītajiem laukiem. Tas, no kurienes šie dati tiek ņemti, deduktīvo

datu bāzes paplašinājumu neietekmē.

1.2. att. Personu tabula un tai atbilstošais faktu skats

Jau datu bāzes projektēšanas stadijā tika pieņemts ierobežojums, atļaut izmantot likumus

vai faktus ar diviem argumentiem. Lai gan sarežģītu problēmu risināšanai šis ierobežojums

nebūtu pieļaujams, dotajā gadījumā tas vienkāršo izstrādājamās procedūras un funkcijas, tai pat

laikā būtiski neierobežojot deduktīvās datu bāzes funkcionalitāti.

6

Page 7: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

2. Objekta tipu izveidošana

Pēc datu bāzes projektējuma izstrādes, tiek veidoti likumu un faktu uzglabāšanai un

apstrādei izmantotie objekti. Likumu attēlošanai tika izmantota objektu pieeja, tā kā tā ļauj

iekapsulēt visu informāciju, kas attiecas uz likumu, vienā objektā, tādējādi uzlabojot tās

uztveramību un atvieglojot funkciju un procedūru izveidi.

Objekta tipa PREDIKATS_TIPS (skat. 2.1. attēlu) sastāv no trīs laukiem: nosaukuma un

divu argumentu laukiem. Kā tas tika iepriekš minēts, tad, izpildot uzdevumu, tika pieņemts, ka

faktiem un predikātiem iespējams norādīt divus atgumentus. Tāpat tiek definēta MAP tipa

metode, kas ļaus veikt sakārtošanu pēc tabulas kolonnas ar objekta tipu PREDIKATS_TIPS.

2.1. att. Objekta tips PREDIKATS_TIPS

Objekta tipa ķermenis (skat. 2.2. attēlu) sastāv no metodes VERTIBA implementācijas.

2.2. att. Objekta tipa PREDIKATS_TIPS ķermenis

Tā kā sarežģīti likumi var sastāvēt no vairākiem citiem likumiem, tad vairāku likumu

uzglabāšanai tiek izveidots objekta tipa PREDIKATS_TIPS kolekcijas tips

PREDIKATU_KOL_TIPS (skat. 2.3. attēlu).

2.3. att. Kolekcijas tips PREDIKATU_KOL_TIPS

Likumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju

par predikātu, bet otrs – par predikātu kolekciju, no kā sastāv konkrētais predikāts, ilustrēts

2.4. attēlā.

2.4. att. Objekta tips LIKUMS_TIPS

7

Page 8: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

3. Likumu un faktu uzglabāšanas struktūru izveidošana

Likumu glabāšanai tiek izveidota objektu tabula LIKUMI (skat. 3.1. attēlu). Tā kā katrs

likums tiek unikāli identificēts izmantojot tā nosaukumu, tad tiek izveidots ierobežojums, kas

nodrošina unikāla nosaukuma nosacījumu.

3.1. att. Tabula LIKUMI

Deduktīvās datu bāzes operācijās tiek izmantota „darba” jeb izvedumu koka tabula, kurā,

uzsākot izskaitļošanu, tiek kopēti nepieciešamie likumi, kas tiek sadalīti tos veidojošajos

likumos, līdz tiek iegūti faktu tipa likumi. Nākamajā solī tiek veikta formālo argumentu

substitūcija. Izvedumu koka tabulas izveidošana ilustrēta 3.2. attēlā.

3.2. att. Tabula IZVEDUMU_KOKS

Pēc likumu tabulas nodefinēšanas tajā tiek ievietoti likumi (skat. 3.3. attēlu). Tabulā

LIKUMI tiek ievietoti objekta tipa LIKUMS_TIPS objekti, kas sastāv no diviem argumentiem.

Kā redzams attēlā, tad vienkāršiem likumiem (likumi, kas netiek uzdoti izmantojot citus

likumus), piemēram, DZMIMUMS, VECAKS objekta LIKUMS_TIPS konstruktorā netiek

norādīts otrs arguments. Savukārt, definējot sarežģītus likumus (likumi, kas ir uzdoti izmantojot

citus likumus), tiek norādīta kolekcija, kurā iekļautas likuma sastāvdaļas – citi likumi. Jāatzīmē

to, ka atšķirtu predikātu mainīgos no konstantēm jeb simbolu virknes, tad tika ieviests mainīgo

nosaukšanas likums, kas paredz to, ka mainīgā nosaukums sākas ar „#” simbolu. Lai gan 3.3.

attēlā redzamie mainīgie nosaukti cilvēkam saprotamā veidā, piemēram, „#cilveks”,

„#dzimums”, šo mainīgo nosaukums neietekmē deduktīvās datu bāzes darbību, un tik pat labi

mainīgos varēja nosaukt „#x1”, „#x2”. Svarīgs ir ievērot to, ka definējot likuma sastāvdaļas jeb

likumus, no kā sastāv konkrētais likums, vienas un tās pašas būtības apzīmēšanai ir jāizmanto

tāds pats nosaukums. Pareizi uzdota likuma piemērs: VECTEVS(#vectevs, #mazberns):

VECVECAKS(#vectevs, #mazberns), DZIMUMS(#vectevs, vīrietis). Kā redzams, vectēva

apzīmēšanai gan likumā VECTEVS, gan likumā VECVECAKS tiek izmantots mainīgais

#vectevs.

8

Page 9: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

3.3. att. Datu ievade tabulā LIKUMI

Problēmas sfēras (ģimenes koka un personas datu) datu uzglabāšanai tiek izveidota tabula

PERSONAS (skat. 3.4. attēlu). Tabulā tiek glabāts personas vārds, pie tam tika pieņemts, ka

personas vārds ir unikāls, tādējādi ar tā palīdzību ir iespējams viennozīmīgi identificēt personu,

dzimums, kā arī atsauces uz rakstiem par personas tēvu un māti.

3.4. att. Tabula PERSONAS

Lai būtu iespējams pārbaudīt izstrādāto deduktīvo datu bāzes lietojumu, tabulā

PERSONAS tiek ievadīti dati par trijās paaudzēs dzīvojošām personām (skat. 3.5. attēlu).

9

Page 10: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

3.5. att. Datu ievade tabulā PERSONAS

Ievadītie dati uzskatāmi ilustrēti 3.6. attēlā.

3.6. att. Vecāku / bērnu hierarhija

10

Page 11: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Kā jau iepriekš minēju, tad, lai realizētu deduktīvās datu bāzes operācijas, ir jāpanāk pēc

iespējas mazāka sasaiste ar problēmas sfēras tabulām. Šī iemesla dēļ, sadarbības pamatā ar

deduktīvās datu bāzes funkcijām un procedūrām ir skats FAKTI (skat. 3.7. attēlu). Šī skata

mērķis ir izgūt datus no visām problēmas sfēras tabulām (šajā gadījumā tā ir tikai viena -

PERSONAS) un attēlot tos tādā formā, ka pirmā kolonna satur fakta nosaukumu, otrā un trešā

kolonna satur argumentu vērtības. Pie tam, argumentu vērtības tiek norādītas tieši tādā pašā

secībā, kā tas tika norādīts atbilstošajā likumā - tabulas LIKUMI rakstā.

3.7. att. Skats FAKTI

Skata FAKTI pirmie 25 atgrieztie raksti ilustrēti 3.8. attēlā, atlikušie raksti ilustrēti 3.9.

attēlā.

11

Page 12: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

3.8. att. Datu izgūšana no tabulas FAKTI (1)

3.9. att. Datu izgūšana no tabulas FAKTI (2)

12

Page 13: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

4. Deduktīvās datu bāzes programmu paketes izstrāde

Deduktīvās datu bāzes operāciju realizēšanai nepieciešams izveidot vairākas procedūras un

funkcijas, kuras ir ērti uzglabāt vienuviet. Šī iemesla dēļ tiek izveidota programmu pakete

DEDUKTIVA_PAKOTNE (skat. 4.1. attēlu). Paketē tiek definēts asociētā masīva tips

VAIC_ALIAS_PEC_MAINIGA, kurā tiks glabātas teksta datu tipa vērtības pēc noteiktas teksta

atslēgas. Tāpat paketē tiek definētas funkcijas un metodes, kas tiks detalizēti aprakstītas šajā

nodaļā.

4.1. att. Programmu pakete DEDUKTIVA_PAKOTNE

Programmu paketes DEDUKTIVA_PAKOTNE ķermeņa definēšana ilustrēta 4.2. attēlā.

Attēlā nav ilustrēts paketes ķermenī esošās funkcijas un procedūras, jo katra no tām tiks apskatīta

individuāli, sniedzot detalizētus paskaidrojumus.

4.2. att. Programmu paketes DEDUKTIVA_PAKOTNE ķermeņa fragments

Kā pirmā programmu paketes DEDUKTIVA_PAKOTNE sastāvdaļa tiks apskatīta funkcija

IR_MAINIGAIS (skat. 4.3. attēlu), kas nosaka, vai simbolu virkne ir mainīgais. Kā jau iepriekš

minēju, tad šajā deduktīvās datu bāzes lietojumā tika pieņemts, ka mainīgo nosaukumi sākas ar

„#” simbolu. Savukārt simbolu virkne, kas nesākas ar šo simbolu tiek interpretēta kā konstante,

piemēram, cilvēka vārds vai dzimums. Izstrādātajā lietojumā šī funkcija tiek izmantota gan

13

Page 14: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

veicot substitūcijas, lai noskaidrotu, vai konkrēto argumentu drīkst aizvietot, gan SQL vaicājuma

ģenerēšanas laikā, tā kā apakšvaicājumus drīkst savienot tikai pēc kolonām, kas ir likumu

mainīgie.

4.3. att. Funkcija IR_MAINIGAIS

Funkcija AIZVIETOT_ATRIBUTUS (skat. 4.4. attēlu) paredzēta formālo likuma

argumentu aizvietošanai uz uzdotajiem. Vispirms tiek aizvietoti likuma predikāta daļā esošie

argumenti, pēc tam katras sastāvdaļas, proti, saistīto predikātu argumenti.

4.4. att. Funkcija AIZVIETOT_ATRIBUTUS

Funkcijas AIZVIETOT_ATRIBUTUTUS pielietošanas piemērs ilustrēts 4.5. attēlā. Kā

redzams, izsaucot procedūru kā parametrs tiek nodots likums un jaunā likuma predikāta daļa.

Funkcija veic formālo argumentu un konkrēto argumentu substitūciju.

14

Page 15: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Predikāts Saistītie likumiVECTEVS(#vectevs, #mazberns): VECVECAKS(#vectevs, #mazberns), DZIMUMS(#vectevs, virietis)

AIZVIETOT_ATRIBUTUTUS ( , VECTEVS(Vitauts, #mazberns))

VECTEVS(Vitauts, #mazberns): VECVECAKS(Vitauts, #mazberns), DZIMUMS(Vitauts, virietis)4.5. att. Funkcijas AIZVIETOT_ATRIBUTUTUS pielietojums

Procedūra MEKLET veic izveduma koka datu, kas tika iegūti iepriekšējā izskaitļošanas

reizē, dzēšanu, kā arī izsauc procedūru IZVEST, kas veic izveduma koka aizpildīšanu.

4.6. att. Procedūra MEKLET

Procedūra IZVEST (skat. 4.7. attēlu) veic izveduma koka aizpildīšanu.

4.7. att. Procedūra IZVEST

15

Page 16: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Pēc tā kā sākotnējā likuma formālie argumenti tiek aizvietoti uz reālajiem, likums tiek

ievietots izvedumu kokā. Ja likums ir vienkāršs, proti, tas nesastāv no citiem likumiem, tad

procedūra tiek pabeigta, pretējā gadījumā procedūra tiek izpildīta rekursīvi, kā parametrus

norādot likuma sastāvdaļas. Ja norādītais likums netiek atrasts, tiek izraisīta kļūda jeb izņēmuma

situācija, ar numuru -20333, kas tika patvaļīgi izvēlēts no atļauto kļūdu diapazona, kas tiek

nodota izsaucošajam blokam.

Lai demonstrētu procedūras IZVEST darbību (skat. 4.8. attēlu), tiks izvests iepriekš

apskatītais likums VECTEVS(#vectevs, #mazberns), mainīgā #vectevs vietā uzdodot konstanti

„Vitauts”. Attēlā redzams, ka pēc procedūras IZVEST izsaukšanas, izveduma koka tabulā ir

ievietoti 5 raksti. Procedūra IZVEST tiek rekursīvi izsaukta tik ilgi, līdz visi likumi ir sadalīti

līdz faktu līmenim, un visu likumu argumenti ir aizvietoti. Kā redzams, konkrētajā gadījumā tika

iegūti 3 faktu līmeņa predikāti, kas tiks izmantoti vaicājuma sastādīšanā.

Predikāts Saistītie likumiVECTEVS(#vectevs, #mazberns) VECVECAKS(#vectevs, #mazberns), DZIMUMS(#vectevs, virietis)

IZVEST (VECTEVS(Vitauts, #mazberns))

VECTEVS(Vitauts, #mazberns): VECVECAKS(Vitauts, #mazberns), DZIMUMS(Vitauts, virietis)VECVECAKS(Vitauts, #mazberns): VECAKS(#vecaks, #mazberns), VECAKS(Vitauts, #vecaks)VECAKS(#vecaks, #mazberns)VECAKS(Vitauts, #vecaks)DZIMUMS(Vitauts, virietis)

4.8. att. Procedūras IZVEST pielietojums

Funkcija IZGUT_ELEMENTU (skat. 4.9. attēlu) paredzēta asociatīvā masīva elementa

izgūšanai. Šāda funkcija tika izveidota tādēļ, ka pieprasot asociatīvā masīva elementu pēc

indeksa (atslēgas), kas neeksistē masīvā, tiek radīta NO_DATA_FOUND izņēmuma situācija.

Funkcija IZGUT_ELEMENTU apstrādā šo izņēmuma situāciju un atgriež NULL, ja masīva

vērtība netika atrasta.

4.9. att. Procedūra IZGUT_ELEMENTU

Viena no svarīgākajām deduktīvās datu bāzes lietojuma funkcijām ir funkcija

GENERET_VAICAJUMU. Funkcija veic dinamisku SQL vaicājuma ģenerēšanu, kas sniedz

atbildi uz lietotāja definēto deduktīvās datu bāzes jautājumu.

16

Page 17: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Tā kā funkcija GENERET_VAICAJUMU ir salīdzinoši gara, tad tā tiks apskatīta, sadalot

to mazākos fragmentos.

Funkcijas deklarāciju sadaļā (skat. 4.10. attēlu) tiek definēti izmantojamie mainīgie,

galvenokārt simbolu virknes tipa mainīgie vaicājuma daļu uzglabāšanai.

4.10. att. Funkcijas GENERET_VAICAJUMU pirmais fragments

Tāpat deklarāciju sadaļā ir definēts kursors LIKUMU_KORSORS, kas izgūst datus no

izvedumu koka tabulas. Kursora vaicājuma atgrieztie dati likuma

VECTEVS(Vitauts, #mazberns) gadījumā ir ilustrēti 4.11. attēlā.

4.11. att. Kursora LIKUMU_KURSORS atgriezto datu piemērs

Jāatzīmē to, ka izvedumu tabulā tiek glabāti arī salikti likumi un izvedumu gaitā iegūtie

fakti, proti, likumi, kuru abi argumenti ir konstantes (skat. 4.12. attēlu). Saliktie likumi netiek

atlasīti, tā kā tie nav noderīgi vaicājuma sastādīšanā.

4.12. att. Vaicājumā neizmantojamo faktu piemērs

Nākamais funkcijas GENERET_VAICAJUMU fragments (skat. 4.13. attēlu) veic iteratīvu

izgūto likumu apstrādi, proti, tiek formēts apakšvaicājums, kas izgūst datus no skata FAKTI.

Likuma argumenti, kas nav mainīgie, proti, konstantes, tiek ievietotas apakšvaicājuma

17

Page 18: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

nosacījuma daļā. Argumenti, kas ir mainīgie, tiek izmantoti savienojuma (JOIN) daļas

ģenerēšanā. Iepriekš aprakstītais argumentu pielietojums ir ilustrēts 4.18. attēlā.

4.13. att. Funkcijas GENERET_VAICAJUMU otrais fragments

Asociatīvas masīvs tiek izmantots tādēļ, lai uzglabātu apakšvaicājuma pseidonīmu un

kolonnas nosaukumu pēc argumenta mainīgā nosaukuma, ar kuru nepieciešams veidot

savienojumu.

Funkcijas GENERET_VAICAJUMU (skat. 4.14. attēlu) trešais fragments veic

savienojuma ON daļas ģenerēšanu. Svarīgi it tas, ka savienojuma ON daļā jāiekļauj precīzi visi

tie nosacījumi, kurus iespējams iegūt balstoties uz informāciju par šī un iepriekšējo likumu

argumentiem. Eksistē arī situācijas, kad kāda apakšvaicājuma ON daļā nav nosacījuma, pēc kura

apakšvaicājums tiek savienots, jo šis nosacījums var tikt lietots tikai nākamo apakšvaicājumu

18

Page 19: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

savienojuma ON daļā. Tādā gadījumā, šī vaicājuma ON daļā tiek ievietots nosacījums, kas ir

vienmēr patiess, piemēram, 1 = 1 un tādējādi neierobežo atlasītos rakstus.

4.14. att. Funkcijas GENERET_VAICAJUMU trešais fragments

Pēc tā kā apakšvaicājumi ir sastādīti, tiek izveidots kopējais vaicājums (skat. 4.15. attēlu).

4.15. att. Funkcijas GENERET_VAICAJUMU ceturtais fragments

19

Page 20: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Piektajā funkcijas fragmentā ir implementēta vaicājuma datu atlases daļas (SELECT), kā

arī vaicājuma kopējā nosacījuma daļas (WHERE) formēšana. Principā, datu atlasei kopējā

nosacījuma daļa nav nepieciešama, jo izveidotais algoritms formē vaicājumu tā, ka dati tiek

atlasīti balstoties uz apakšvaicājumu datu atlases nosacījumiem un savienojumu ON daļā

iekļautajiem nosacījumiem. Taču, ģenerēto vaicājumu pārbaudes laikā tika atklāts, ka eksistē

speciālgadījumi, piemēram, likums BRALIS vai MASA, kuru dēļ kopējā vaicājumā ir jāiekļauj

nosacījums, ka pirmais arguments nav vienāds ar otro. Likums BRALIS(#bralis, #cits_berns),

kam atbilst likumi VECAKS(#tevs, #bralis), VECAKS(#tevs, #cits_berns), DZIMUMS#tevs,

virietis), VECAKS(#mate, #bralis), VECAKS(#mate ,#cits_berns), DZIMUMS(#mate, sieviete),

DZIMUMS(#bralis, virietis) neko nemin par to, ka persona nav pati sev brālis. Iepriekš minētie

likumi definē tikai to, ka brālis ir tāda persona, kas ir vīrietis, kuram ir kopīgi vecāki ar to

personu, kurai viņš ir brālis. Taču, šim likumam atbilst arī pats brālis. Tādēļ, kā jau minēju,

vaicājuma nosacījuma kopējā daļā vienmēr tiek pievienots nosacījums, ka likuma abi argumenti

nav vienādi. Funkcijas GENERET_VAICAJUMU rezultāts ir vaicājums.

Funkcija RISINAT_VAIC (skat. 4.16. attēlu) izsauc iepriekš definētās funkcijas, proti,

izveduma koka ģenerēšanu un vaicājuma ģenerēšanu. Šī funkcija var tikt definēta kā gala

funkcija lietotājiem, kas to izmantotu savās programmās, ar iespēju iegūt dinamiski ģenerētu

vaicājumu.

4.16. att. Funkcija RISINAT_VAIC

20

Page 21: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Funkcija RISINAT_VAIC var tikt izsaukta gan no citas procedūras, gan, piemēram, no

Java programmas, izmantojot, JDBC tehnoloģiju.

Lai funkcija RISINAT_VAIC atgriež vaicājumu, kas atbild uz deduktīvās datu bāzes

jautājumu, simbolu virknes formā, kurai ir plašs pielietojums, tomēr citās Oracle procedūrās ir

ērtāk izmantot funkciju, kas atgriež nevis pašu vaicājumu, bet gan tā rezultātu.

Funkcija RISINAT_REZ (skat. 4.17. attēlu) atgriež PREDIKATS_TIPS tipa kolekciju,

pirms tam dinamiski izpildot vaicājumu, izmantojot EXECUTE IMMEDIATE konstrukciju.

Jāatzīmē to, ka komanda EXECUTE IMMEDIATE tiek lietota kopā ar atslēgas vārdiem BULK

COLLECT INTO, kas nosaka to, ka dinamiski izpildītā vaicājuma rezultāta kolonnu vērtības tiek

ievietotas norādītajās kolekcijās. Tādējādi, funkcijā tiek izmantots nevis viens dinamiskā

vaicājuma rezultāta raksts, bet gan visi.

4.17. att. Funkcija RISINAT_REZ

Viena no garākajām un sarežģītākajām iepriekš apskatītajām funkcijām ir funkcija

GENERET_VAICAJUMU, kas veic rezultāta vaicājuma ģenerēšanu. Pie tam, kā jau iepriekš

minēju, tad šī funkcija nodrošina vaicājuma ģenerēšanu atbilstoši uzdotajam likumam.

Funkcijas algoritms meklējot likuma VECTEVS(Vitauts, #mazberns) atrisinājumu jeb

atbildi uz jautājumu, kam Vitauts ir vectēvs, vienkāršotā veidā ir ilustrēts 4.18. attēlā. Kā

redzams attēlā, tad likumu argumenti, kas ir konstantes, tiek izmantotas apakšvaicājumu

nosacījuma (WHERE) daļā, bet visi argumenti, kas ir mainīgie, tiek izmantoti apakšvaicājumu

savienojuma (JOIN ... ON) nosacījuma daļā. Algoritma būtība ir tāda, ka apakšvaicājumi tiek

savienoti pēc visiem laukiem, kas atbilst vienādiem likumu argumentu mainīgajiem.

21

Page 22: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

4.18. att. Vaicājuma izveides algoritma piemērs

Iegūtā vaicājuma izpildes rezultāts ilustrēts 4.19. attēlā.

4.19. att. Piemēra vaicājuma izpildes rezultāts

22

Page 23: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

5. Deduktīvās datu bāzes pielietojums

Izstrādātās deduktīvās datu bāzes darbība tiks ilustrēta uz vairāku likumu piemēra.

Kā pirmais, tiks apskatīts uzdevuma nostādnē minētais likums VECMATE(#vecmate,

#mazberns). Pieņemsim, ka nepieciešams noteikt vecmātes Daces mazbērnus. Tā kā izstrādātajā

programmu paketē iekļauta gan funkcija, kas atgriež vaicājumu, kas atbild uz noteikto jautājumu,

gan funkcija, kas atgriež faktu kolekciju, tad šajā gadījumā tiks izmantota otrā funkcija. Lai

attēlotu rezultātus, tie tiks izvadīti servera konsolē. Jāatzīmē, ka reālā lietojumā no šādas izvades

nebūtu nekādas jēgas, jo funkcijas atgrieztie dati tiktu tālāk apstrādāti izsaucošajā lietojumā.

Lai noskaidrotu vecmātes Daces mazbērnus, tiek izpildīts anonīmais PL/SQL bloks (skat.

5.1. attēlu), kurā tiek izsaukta funkcija RISINAT_REZ, kurai kā parametrs tiek nodots

PREDIKATS_TIPS tipa objekts, kur pirmais arguments (‘vecmate’) apzīmē likuma nosaukumu,

otrais arguments (‘Dace’) – vecmātes vārdu, bet trešais arguments, kurš netiek norādīts apzīmē

meklējamos mazbērnus.

5.1. att. Vecmātes Daces mazbērnu noskaidrošana

Funkcijas RISINAT_REZ atgrieztās kolekcijas elementi tiek drukāti servera izvades

buferī, kura saturs tiek izvadīts SQL Developer lietojuma skatā (skat. 5.2. attēlu). Kā redzams,

vecmātei Dacei ir trīs mazbērni: Ernests, Sabīne un Anna. Servera izvades buferī tiek izvadīts arī

likuma nosaukums un abi argumenti.

5.2. att. Noskaidrotie Daces mazbērni

Salīdzinot rezultātu ar faktu ievades laikā ilustrēto ģimeņu koku (skat. 3.6. attēlu),

redzams, ka deduktīvās datu bāzes paketes funkcija Daces mazbērnus ir noteikusi pareizi.

Ģimeņu koka fragments, kurā ilustrēta vecmāte Dace un viņas mazbērni, ilustrēta 5.3. attēlā.

23

Page 24: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

5.3. att. Dace un viņas mazbērni

Lai demonstrētu deduktīvās datu bāzes lietojuma darbību gadījumā, ja tiek uzdots cits

likums, kā arī tie uzdots otrais arguments, tiks apskatīts likums VECVECAKS(#vecvecaks,

#mazberns). Pieņemsim, ka ir jānoskaidro visi Ērika vecvecāki. Dotā uzdevuma risināšanai tiek

izsaukta tā pati universālā funkcija RISINAT_REZ, kā parametrus nododot likuma nosaukumu

„vecvecaki”, NULL un mazbērna Ērika vārdu. Funkcijas parametri un rezultāts ilustrēti 5.4.

attēlā. Kā redzams attēlā, tad funkcija ir noteikusi visus četrus Ērika vecvecākus.

5.4. att. Noskaidrotie Ērika vecvecāki

Ērika un viņa vecvecāku kopējais ģimenes koks ilustrēts 5.5. attēlā.

24

Page 25: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

5.5. att. Ēriks un viņa vecvecāki

Kā trešais piemērs tiek ilustrēts gadījums, kad deduktīvās programmu paketes funkcija tiek

izsaukta norādot tikai likuma nosaukumu, bet nenorādot tā argumentus. Pieņemsim, ka ir

jānoskaidro visi vectēvi un visi mazbērni, kam ir vectēvs. Šajā gadījumā tiek lietots likums

VECTEVS(#vectevs, #mazberns), nenorādot nevienu no argumentiem. Funkcijas izsaukums un

rezultāts ir ilustrēts 5.6. attēlā.

5.6. att. Visi vectēvi un viņu mazbērni

Kā ceturtais piemērs tiek ilustrēta izņēmuma situācija, kad izsaucot funkciju tiek norādīts

likuma nosaukums, kas nav ievietots likumu tabulā (skat. 5.7. attēlu). Kā redzams, funkcija rada

izņēmuma situāciju, kuras kļūdas ziņojums šajā gadījumā tiek izvadīts servera izvades buferī.

25

Page 26: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

5.7. att. Risināšanas funkcijas izsaukums ar nezināmu likumu

26

Page 27: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

6. Deduktīvās datu bāzes pārbaude

Iepriekšējā nodaļā tika demonstrēti vairāki izstrādātās deduktīvās datu bāzes darbības

piemēri. Šajā nodaļā tiks apskatīti piemēri jeb pierādījumi, kas apliecina to, ka izstrādātā datu

bāze patiešām var tikt uzskatīta par kaut kādā mērā deduktīvu datu bāzi.

Deduktīvu datu bāzi raksturo vairākas īpašības. Visbiežāk tiek pieminēts fakts, ka

deduktīva datu bāze spēj iegūt jaunus faktus. Šī ir ļoti svarīga īpašība, taču jaunus faktus var

iegūt arī ar datu bāzi vai tās lietojumu, kas izmanto funkcijā ieprogrammētus nosacījumu un

darbības. Tādēļ, manuprāt, daudz svarīgāka ir datu bāzes spēja pielāgoties (bez programmētāja

iejaukšanās, piemēram, funkciju papildināšanas) faktu un likumu maiņai. Šī iemesla dēļ tiks

demonstrēti divi gadījumi. Pirmajā gadījumā tiks pievienoti jauni fakti, kā rezultātā, bez

deduktīvās programmu paketes maiņas, izstrādātajam datu bāzes lietojumam būtu jāspēj

adoptēties jaunajam stāvoklim un atgriez likumiem atbilstošus rezultātus. Otrajā gadījumā tiks

pievienots jauns likums – MASA, kas aprakstīts attieksmi māsa. Pie tam, likuma pievienošana

tiks veikta tikai likumu sarakstam, kas glabājas tabulā LIKUMI. Nekādas izmaiņas programmas

pirmtekstā netiks veiktas. Tādējādi, jaunu likumu ieviešanu varētu salīdzināt ar maza bērna

apmācīšanu, kur bērnam tiek skaidrots, ka kāda persona ir citas personas māsa, ja šī persona ir

sieviete un abām personām ir vieni un tie paši vecāki.

Apskatot pirmo no iepriekš aprakstītajiem gadījumiem, pieņemsim, ka Sabīnei un Ērikam

ir piedzimusi meita Lilija. Vaicājums, kas ievieto datus tabulā PERSONAS, ilustrēts 6.1. attēlā.

6.1. att. Jaunas personas pievienošana

Manuprāt, deduktīvai datu bāzei ir jāspēj meklēt atrisinājumu gadījumā, ja sākotnējie dati

ir mainīti. Pieņemsim, ka ir jānoskaidro iepriekš pievienotās meitenes Lilijas vecvecāki.

Rezultātu noskaidrošanai tiek izmantota tieši tā pati funkcija, kas iepriekš – RISINAT_REZ.

Funkcijas atgrieztais rezultāts ir redzams 6.2. attēlā. Kā redzams, Lilijas vecvecāki ir Ieva,

Kārlis, Inese un Viesturs.

27

Page 28: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

6.2. att. Noskaidrotie Lilijas vecvecāki

Ja salīdzina noteikto rezultātu ar 6.3. attēlā ilustrēto ģimenes koka fragmentu, tad redzams,

ka deduktīvās datu bāzes programmu pakete ir sniegusi pareizu rezultātu bez jebkādu izmaiņu

veikšanas paketes funkcijās vai procedūrās.

6.4. att. Lilija un viņas vecvecāki

Kā otrs no iepriekš aprakstītajiem gadījumiem tiks apskatīta jauna likuma pievienošana.

Pieņemsim, ka likumu krātuvi nepieciešams papildināt ar jaunu likumu MASA. Vienīgā, ko tādā

gadījumā ir nepieciešams papildināt, ir tabula LIKUMI. Likuma pievienošanas vaicājums ir

ilustrēts 6.5. attēlā. Kā redzams, tad tabulā tiek ievietots likuma nosaukums, formālie argumenti,

kā arī likumu kolekcija, no kā sastāv likums MASA.

28

Page 29: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

6.5. att. Likuma MASA pievienošana likumu tabulai

Pēc likuma pievienošanas ir iespējams pārbaudīt deduktīvās datu bāzes darbību, nosakot

visas personas, kam Asnāte ir māsa. Standarta funkcijas izsaukums un tās atgrieztais rezultāts ir

ilustrēts 6.6. attēlā.

6.6. att. Asnātes brāļi un māsas

No abiem iepriekš demonstrētajiem piemēriem ir redzams, ka izstrādātā deduktīvā datu

bāze spēj korekti darboties arī pēc jaunu faktu un likumu pievienošanas, pie tam, bez

nepieciešamības veikt kādas izmaiņas izstrādātajā programmu paketē. Tādēļ, manuprāt,

svarīgākās deduktīvās datu bāzes īpašības tiek nodrošinātas.

29

Page 30: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Secinājumi

Laboratorijas darbā tika apskatīta deduktīvās datu bāzes projektēšana un veidošana DBPS

Oracle. Darba gaitā tika projektēta deduktīvā datu bāze, izveidoti faktus un likumus attēlojošie

objektu tipi, izveidotas likumu un izvedumu koka jeb „darba” tabulas, implementēta programmu

pakete, kas nodrošina deduktīvās datu bāzes darbības, kā arī pārbaudīta un demonstrēta

izstrādātās datu bāzes darbība.

Jau projektēšanas stadijā izstrādājamajai datu bāzei tika noteikti ierobežojumi. Pirmkārt,

likumu un fakti var saturēt tikai divus argumentus. Protams, nopietnā lietojumā tas būtu

ievērojams trūkums, taču šī darba uzdevuma izpildē šis ierobežojums atviegloja deduktīvās datu

bāzes operāciju izstrādi. Otrkārt, izstrādātais lietojums neļauj risināt uzdevumus, kuros tiek

izmantoti rekursīvi likumi, piemēram, likums SENCIS. Rekursīvu likumus varētu implementēt

izmantojot Oracle hierarhiskos vaicājumus. Taču neskatoties uz visiem iepriekš minētajiem

ierobežojumiem, manuprāt, izstrādātā datu bāze var tikt uzskatīta par deduktīvu, tādēļ ka, tā ir

adaptīva, proti, pievienojot jaunus faktus vai likumus, datu bāze turpina veiksmīgi meklēt

risinājumus, bez programmas pirmteksta maiņas. Proti, datu bāzes lietotājam ir jāievada jaunais

likums, piemēram, MĀSA, jānorāda tā formālie argumenti un jāizskaidro, kas tad ir likums

MĀSA, izmantojot kādus no esošajiem likumiem. Pēc likuma raksta ievietošanas datu bāzes

tabulā LIKUMI, lietotājs var izsaukt standarta risināšanas funkciju, kā argumentu norādot jauno

likumu.

Darba gaitā tika demonstrēta izstrādātā lietojuma spēja noteikt faktus, pirmkārt, ja tiek

uzdots likuma nosaukums un pirmais arguments, piemēram, atrast visus kādas personas

mazbērnus, otrkārt, ja tiek uzdots likuma nosaukums un otrais arguments, piemēram, atrast visas

kādas personas vecmātes un, treškārt, ja tiek uzdots tikai likuma nosaukums, piemēram, atrast

visus brāļus un personas, kam ir brāļi. Pie tam, šo visu uzdevumu veikšanā lietotājs izsauc vienu

un to pašu funkciju, kurā nav implementēti nekādi nosacījumi attiecībā uz likuma nosaukumu.

Visas darbības tiek veiktas dinamiski, izmantojot formālo un faktisko mainīgo substitūciju un

likumu sadalīšanu vienkāršos likumos un faktos.

Šajā darbā vairāk nekā citos laboratorijas darbos tika programmētas PL/SQL procedūras

un funkcijas. Šī iemesla dēļ tika apskatīts DB2 kursa 3. laboratorijas darbs, kas diezgan ātri ļāva

atsvaidzināt zināšanas par PL/SQL. Tā pat uzzināju daudz ko jaunu, piemēram, to, ka piekļūstot

asociatīvā masīva elementam pēc indeksa (atslēgas), kurš nav iepriekš ierakstīts masīvā, Oracle

rada izņēmuma situāciju. Sākumā biju pārsteigts par to, tā kā, piemēram, programmēšanas

valodā Java pieprasot Map tipa objektam vērtību pēc neeksistējošas atslēgas, tiek atgriezts

NULL. Bet palasot materiālus par asociatīvā masīva realizāciju, sapratu, ka šādas pieejas pamatā

30

Page 31: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

ir tas, ka asociatīvā masīvam ir liela līdzība ar tabulu, un tur šāda situācija tiek apstrādāta tieši tā

pat. Vaicājums, SELECT .. INTO arī rada NO_DATA_FOUND izņēmuma situāciju, ja

vaicājums neatgriež datus. Lai atvieglotu izņēmumu apstrādi, tika izveidota funkcija, kas mēģina

izgūt asociatīvā masīva elementu, un kļūdas gadījumā to korekti apstrādā atgriežot NULL.

Tāpat uzzināju un pielietoju atslēgas vārdus BULK COLLECT iekš EXECUTE

IMMEDIATE komandas, kas ļauj atgrieztos datus ierakstīt kolekcijās. Šādā gadījumā

nepieciešams norādīt kolekciju katras kolonnas vērtībām.

Manuprāt, izstrādātā datu bāze var tikt uzskatīta par deduktīvu datu bāzi, bet kā jau minēju,

tā spēj risināt salīdzinoši vienkāršus uzdevumus, un nopietnāku uzdevumu risināšanā to būtu

nepieciešams papildināt.

31

Page 32: RĪGAS TEHNISKĀ UNIVERSITĀTE Web viewLikumiem atbilstošais tips, kurā ir definēti divi lauki, viens no kuriem glabā informāciju par predikātu, bet otrs – par predikātu kolekciju,

Izmantotā literatūra

1. Prof. Jānis Eiduks. Lekciju konspekts priekšmetā „Progresīvās datu bāzes”. - 2007.

2. Using PL/SQL With Object Types: Oracle® Database PL/SQL User's Guide and

Reference / Internets. -

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/objects.htm

3. PL/SQL Collections and Records: Oracle / Internets. -

http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/05_colls.htm

4. EXECUTE IMMEDIATE Statement: Oracle® Database PL/SQL User's Guide and

Reference / Internets. -

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/executeimmediate_s

tatement.htm

5. Error Handling: PL/SQL User's Guide and Reference Release 8.1.5/ Internets. –

http://www.camden.rutgers.edu/HELP/Documentation/Oracle/server.815/

a67842/06_errs.htm

32