datubaze.files.wordpress.com€¦  · web viewpar trešā laboratorijas darba problēmas vidi tiek...

57
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķās datorzinātnes institūts 3.praktiskais darbs mācību priekšmetā “ Specializētās datu bāzes sistēmas” Deduktīvās datu bāzes izstrāde Izstrādāja: Alīna Vasiļevska Pārbaudīja: prof. Jānis Eiduks

Upload: others

Post on 18-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

RĪGAS TEHNISKĀ UNIVERSITĀTE

Datorzinātnes un informācijas tehnoloģijas fakultāte

Lietišķās datorzinātnes institūts

3.praktiskais darbs

mācību priekšmetā “ Specializētās datu bāzes sistēmas”

Deduktīvās datu bāzes izstrāde

Izstrādāja: Alīna Vasiļevska

Pārbaudīja: prof. Jānis Eiduks

2015./16. māc. gads

Page 2: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

Saturs

1 Darba uzdevums..................................................................................................................................3

2 Problēmas vide. Hierarhiskā uzdevuma definēšana............................................................................4

3 Faktu un likumu definēšana................................................................................................................6

3.1 Faktu definēšana...........................................................................................................................63.2 Likumu definēšana.......................................................................................................................9

4 Likumu grafiskais attēlojums............................................................................................................10

5 Glabāšanas un izgūšanas struktūras..................................................................................................14

5.1 Predikāti......................................................................................................................................145.2 Fakti............................................................................................................................................155.3 Likumi........................................................................................................................................15

6 Datu ievade.......................................................................................................................................17

6.1 Predikati......................................................................................................................................176.2 Fakti............................................................................................................................................176.3 Likumi........................................................................................................................................23

7 Loģiskā izveduma mehānisma realizēšana.......................................................................................24

7.1 Procedūras predikātu un faktu izgūšanai....................................................................................247.1.1 Predikātu saraksta izvade....................................................................................................24

7.1.2 Faktu saraksta izvade..........................................................................................................26

7.2 Procedūra vaicājuma izpildei.....................................................................................................287.3 Procedūru pakete likumu izvadei (ar trim parametriem)............................................................32

8 Izveduma procedūras........................................................................................................................37

8.1 Izveduma procedūru pakete (ar diviem parametriem un tikai vienu rezultātu)..........................378.2 Izveduma procedūru pakete (ar diviem parametriem un vairākiem rezultātiem).......................41

9 Jauna likuma pievienošana................................................................................................................46

10 Secinājumi.........................................................................................................................................48

2

Page 3: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

1 Darba uzdevumsTiek veikta patstāvīga deduktīvās datu bāzes izstrāde:

1. Jāizmanto relāciju – objektu datu bāzes struktūras un metodes.

2. Jāizmanto dināmiskais SQL vai dināmiskais PL\SQL.

3. Tiek definēts piemērs, kurš tiks realizēts deduktīvās datu bāzes veidā.

4. Tiek definēts faktu glabāšanas veids.

5. Tiek definēts likumu glabāšanas veids.

6. Tiek definēts izveduma mehānisma realizēšanas veids.

7. Relāciju-objektu datu bāzes sistēmā tiek izveidotas nepieciešamās tabulas, skati un metodes, ja

nepieciešams, arī funkcijas un procedūras.

8. Tiek veikta faktu datu ievade tabulās.

9. Tiek izpildīti vairāki (vismaz 3) vaicājumi deduktīvai datu bāzei.

10. Tiek pievienots jauns likums un jāparāda, ka programmatiskas izmaiņas nav jāveic.

11. Secinājumi.

3

Page 4: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

2 Problēmas vide. Hierarhiskā uzdevuma definēšanaPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos

iepriekšējos darbos – tā ir suņu izstāde. Tiek apskatīta viena konkrēta suņu izstāde, kas saucas „Baltijas

uzvarētājs”, tajā piedalās dalībnieki no Latvijas, Lietuvas, Igaunijas, Somija, Zviedrijas un Norvēģijas.

Katru valsti var pārstāvēt vairāki suņu saimnieki, katrs no viņiem var būt vairāku klubu loceklis

(piemēram, ja vienam saimniekam ir taksis un mopsis, tad šis saimnieks ir divu klubu loceklis). Katram

klubam tiek piesaistīts atbilstošas šķirnes suns, kas nāk no noteiktas audzētavas, kurā viņš ir dzimis.

Suns var nākt tikai no vienas audzētavas, audzētavai ir zināms īpašnieks (vai vairāki īpašnieki), kas ir

konkrēta suņa audzētājs. Tātad aprakstīta problēmas vide veido hierarhisko uzdevumu, kas attēlots .att.

Ar deduktīvas datu bāzes tehnoloģiju, iespējams šo hierarhisko struktūru izpētīt un no

eksistējošiem faktiem ar likumu palīdzību izvest jaunus faktus, kas arī tiks izdarīts šajā laboratorijas

darbā.

4

Page 5: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

1. att. Suņuizstādesuzdevumahierarhiskāstruktūra

5

Baltijas uzvarētājsLatvijaKoksLV takšu un medību terjeru klubsFreudBergberryKrūzeŠķivisFuzzySunnySaulīteLV pinčeru klubsLionSuņu zemeBērzsZarsLV aitas sugas suņu klubsOryAitasGleznaBobiksSauleMākonisUpeLV vest-hailen-des terjeru klubsAnnyKokiEzersLietuvaLapaLT takšu klubsDogDraugiJūraLT terjeru klubsKociņšDārzsStraumeČiekursViļņaĀbolītisCelmsLT boksieru klubsBoksiksBoksikiDādzisIgaunijaSakneEST aitas sugas suņu klubsEgleMežsRozīteBiteBeautyOgaSomijaZīmulisFIN terjeru klubsLapsaFriendsKrūmsĀbolsFIN boksieru klubsVilksSapnisKurmisNorvēģijaBumbierisNOR pinčeru klubsPinčerisAnnas coLācisZviedrijaZemeneSWE terjeru klubsLassyIntelligentPutniņš

Page 6: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

3 Faktu un likumu definēšanaNodaļā tiks apraksti fakti un likumi, kas veidos deduktīvo datu bāzi un ļaus izvest jaunus faktus

no jau zināmajiem.

3.1 Faktu definēšana

Fakti tiks izsecināti no izveidotas uzdevuma hierarhiskās struktūras, tie ir divvietīgie korteži, kuru

atribūti parāda, kādu objektuattieksmi tie definē. Datu bāzē tiks definēti 6 veidu fakti:

IZSTADES_VALSTIS(Izstade,Valsts) –

apraksta, kādas valstis tiek pārstāvētas izstādē;

VALSTS_SUNU_SAIMNIEKI (Valsts, Saimnieks) –

apraksta, kādi saimnieki pārstāv katru valsti;

SAIMNIEKA_KLUBI (Saimnieks, Klubs) –

apraksta, kādos klubos ir pieteicies katrs no saimniekiem;

KLUBA_SUNI (Klubs, Suns) –

apraksta, kādi suņi pārstāv noteikto klubu;

SUNA_AUDZETAVA (Suns, Audzetava) –

apraksta, no kādas audzētavas nāk katrs no suņiem;

AUDZETAVAS_IPASNIEKI (Audzetava, Ipasnieks) –

apraksta, kurš ir audzētavas īpašnieks.

Faktu definēšanas piemēri:

IZSTADES_VALSTIS(Izstade,Valsts):

IZSTADES _VALSTS(‘Balt_uzv’,‘Latvija’);

IZSTADES _VALSTS(‘Balt_uzv’,’Lietuva’);

IZSTADES _VALSTS(‘Balt_uzv’,’Igaunija’);

IZSTADES _VALSTS(‘Balt_uzv’,’Somija’);

IZSTADES _VALSTS(‘Balt_uzv’,’Norvegija’);

IZSTADES _VALSTS(‘Balt_uzv’,’Zviedrija’).

VALSTS_SAIMNIEKI (Valsts,Saimnieks):

VALSTS_SUNU_SAIMNIEKS (‘Latvija’, ‘Koks’);

VALSTS_SUNU_SAIMNIEKS (‘Latvija’, ‘Zars’);

VALSTS_SUNU_SAIMNIEKS (‘Latvija’, ‘Upe’);

VALSTS_SUNU_SAIMNIEKS (‘Lietuva’, ‘Lapa’);

6

Page 7: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

VALSTS_SUNU_SAIMNIEKS (‘Lietuva’, ‘Celms’);

VALSTS_SUNU_SAIMNIEKS (‘Igaunija’, ‘Sakne’);

VALSTS_SUNU_SAIMNIEKS (‘Somija’, ‘Zimulis’);

VALSTS_SUNU_SAIMNIEKS (‘Somija’, ‘Abols’);

VALSTS_SUNU_SAIMNIEKS (‘Norvegija’, ‘Bumbieris’);

VALSTS_SUNU_SAIMNIEKS (‘Zviedrija’, ‘Zemene’);

SAIMNIEKA_KLUBI(Saimnieks,Klubs):

SAIMNIEKA_KLUBS(‘Koks’, ‘LV_taksu_un_med_ter’);

SAIMNIEKA_KLUBS(‘Koks’, ‘LV_pinceru’);

SAIMNIEKA_KLUBS(‘Zars’, ‘LV_aitas_sugas_sunu’);

SAIMNIEKA_KLUBS(‘Upe’, ‘LV_vesthailendes_ter’);

SAIMNIEKA_KLUBS(‘Lapa’, ‘LT_taksu’);

SAIMNIEKA_KLUBS(‘Lapa’, ‘LT_terjeru’);

SAIMNIEKA_KLUBS(‘Clems’, ‘LT_boksieru’);

SAIMNIEKA_KLUBS(‘Sakne’, ‘EST_aitas_sugas_sunu’);

SAIMNIEKA_KLUBS(‘Zimulis’, ‘FIN_terjeru’);

SAIMNIEKA_KLUBS(‘Abols’, ‘FIN_boksieru’);

SAIMNIEKA_KLUBS(‘Bumbieris’, ‘NOR_pinceru’);

SAIMNIEKA_KLUBS(‘Zemene’, ‘SWE_terjeru’);

utt.

KLUBA_SUNI(Klubs,Suns):

KLUBA_SUNI(‘LV_taksu_un_med_ter’, ‘Freud’);

KLUBA_SUNI(‘LV_taksu_un_med_ter’, ‘Fuzzy’);

KLUBA_SUNI (‘LV_pinceru’, ‘Lion’);

KLUBA_SUNI (‘LV_aitas_sugas_sunu’, ‘Ory’);

KLUBA_SUNI (‘LV_aitas_sugas_sunu’, ‘Bobiks’);

KLUBA_SUNI (‘LV_vesthailendes_ter’, ‘Anny’);

utt.

SUNA_AUDZETAVA (Suns, Audzetava):

SUNA_AUDZETAVA (‘Freud’, ‘Bergberry’);

SUNA_AUDZETAVA (‘Fuzzy’, ‘Sunny’);

SUNA_AUDZETAVA (‘Lion’, ‘Sunu_zeme’);

7

Page 8: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

SUNA_AUDZETAVA (‘Ory’, ‘Aitas’);

SUNA_AUDZETAVA (‘Bobiks’, ‘Saule’);

SUNA_AUDZETAVA (‘Anny’, ‘Koki’);

utt.

AUDZETAVAS_IPASNIEKI (Audzetava, Ipasnieks):

AUDZETAVAS_IPASNIEKI (‘Bergberry’, ‘Kruze’);

AUDZETAVAS_IPASNIEKI (‘Bergberry’, ‘Skivis’);

AUDZETAVAS_IPASNIEKI (‘Sunny’, ‘Saulite’);

AUDZETAVAS_IPASNIEKI (‘Sunu_zeme’, ‘Berzs’);

AUDZETAVAS_IPASNIEKI (‘Aitas’, ‘Glezna’);

AUDZETAVAS_IPASNIEKI (‘Saule’, ‘Makonis’);

utt.

Datu bāzē būs nepieciešams definēt aprakstītus faktus, kas sniedz informāciju par uzdevuma

hierarhisko struktūru.

8

Page 9: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

3.2 Likumu definēšana

Lai no iepriekš aprakstītiem faktiem būtu iespējams izsecināt jaunus, tiks definēti četri likumi:

1) Likums, kas sniegs informāciju par to, kurš klubs pārstāv kuru valsti:

Valsts_klubs(A, C) :- Valsts_saimnieks(A, B), Saimnieka_klubs(B, C)

Lai noskaidrotu, kurš klubs pārstāv, kuru valsti, ir jāveic divi soļi – jānoskaidro, kāds saimnieks

pārstāv doto valsti, un jānoskaidro, kurā klubā ir pieteicies šis saimnieks.

2) Likums, kas sniegs informāciju par to, kādas audzētavas pārstāv kuru klubu:

Kluba_audzetava(A, C) :- Kluba_suns(A, B), Suna_audzetava(B, C)

Lai noskaidrotu, kādas audzētavas pārstāv, kuru klubu, ir jāveic divi soļi – jānoskaidro, kāds

suns pārstāv doto klubu, un jānoskaidro, kurā audzētavā irdzimis šis suns.

3) Likums, kas sniegs informāciju par to, kuram saimniekam pieder kādi suņi:

Saimnieka_suns(A, C) :- Saimnieka_klubs(A, B), Kluba_suns(B, C)

Lai noskaidrotu, kuram saimniekam pieder kādi suņi ir jāveic divi soļi – jānoskaidro, kādā klubā

ir pieteicies saimnieks un jānoskaidro, kurš suns ir piereģistrēts šajā klubā.

4) Likums, kas sniegs informāciju par to, kurš ir kuru suņu audzētājs:

Suna_audzetajs(A, C) :- Suna_audzetava(A, B), Audzetavas_ipasnieks(B, C)

Lai noskaidrotu, kurš ir kura suņa audzētājs ir jāveic divi soļi – jānoskaidro, kurā audzētāvā suns

ir dzimis un jānoskaidro šīs audzētavas īpašnieks.

9

Page 10: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

4 Likumu grafiskais attēlojums

2.att. Pirmālikumagrafiskaisattēlojums.

Valsts_klubs(A, C) :- Valsts_saimnieks(A, B), Saimnieka_klubs(B, C)

10

Page 11: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

3.att. Otrālikumagrafiskaisattēlojums.

Kluba_audzetava(A, C) :- Kluba_suns(A, B), Suna_audzetava(B, C)

11

Page 12: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

4.att. Trešālikumagrafiskaisattēlojums.Saimnieka_suns(A, C) :- Saimnieka_klubs(A, B), Kluba_suns(B, C)

12

Page 13: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

5.att. Ceturtālikumagrafiskaisattēlojums.Suna_audzetajs(A, C) :- Suna_audzetava(A, B), Audzetavas_ipasnieks(B, C)

13

Page 14: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

5 GlabāšanasunizgūšanasstruktūrasNodaļātiksaprakstītaspredikātu, faktuunlikumuglabāšanasstruktūras.

5.1 Predikāti

Vispirmsirjāizveidopredikātu tabula - PREDIKATI, kurāglabāsiespredikātaidentifikācijasnumurs

– PREDIKATA_ID, nosaukums – PREDIKATA_NOS, argumentuskaits – PREDIKATA_ARG_SK un

argumentuapraksts (argumenta ID un atribūts) – ATR_A un ATR_B. Argumenta aprakstadatu tips

būslietotājaizvediotais tips ATR_TIPS.

create or replace type ATR_TIPS as object(

ID number(4),

ATRIBUTS varchar2(20));

6.att. Predikātaatribūtutipaizveide

Kadatribūta tips irnodefinēts, varizveidottabulupredikātuglabāšanai.

create table PREDIKATI (PREDIKATA_ID number(4) primary key,PREDIKATA_NOS varchar2(25),PREDIKATA_ARG_SK number(2),ATR_A ATR_TIPS,ATR_B ATR_TIPS);

14

Page 15: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

7. att. Tabulaspredikātuglabāšanaiizveide

5.2 Fakti

Jāizveidofaktu tabula – FAKTI.Tabulāglabāsiesfaktuidentifikators – FAKTA_ID,

predikātanumurs (tas, kurštiksizmantotsfaktaizveidē - atsauceslauksuztabulu PREDIKATI) – PRED_ID

un faktaatribūtuaprakstsobjektukolonas – ATR_A, ATR_B.Objektukolonas tipi būstādipaši,

kāpredikātutabulai, tāpēctiksizmantotsATR_TIPStips.

create table FAKTI (FAKTA_ID number(4) primary key,PRED_ID number(4) references PREDIKATI(PREDIKATA_ID),ATR_A ATR_TIPS,ATR_B ATR_TIPS);

8. att. Tabulasfaktuglabāšanaiizveide

15

Page 16: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

5.3 Likumi

Jāizveidolikumu tabula LIKUMI, kurāglabāsieslikumaidentifikators – LIKUMA_ID,

tānosaukums – LIKUMA_NOS, pierakstaveids – LIKUMA_TEKSTS un izmantotiepredikāti (to

identifikatori, atsaucesuztabulu PREDIKATI - no kāveidojieslikums) – LIK_PRED_A, LIK_PRED_B.

create table LIKUMI (LIKUMA_ID number(4) primary key,LIKUMA_NOS varchar(25),LIKUMA_TEKSTS varchar(250),LIK_PRED_A number(4) references PREDIKATI(PREDIKATA_ID),LIK_PRED_B number(4) references PREDIKATI(PREDIKATA_ID));

9. att. Tabulaslikumuglabāšanaiizveide

16

Page 17: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

6 DatuievadeNodaļātiksaprakstītsdatuievades process – tiksievadītipredikāti, faktiunlikumi.

6.1 Predikati

Predikātuievadepredikātutabulā:

begininsert into PREDIKATI values (1, 'IZSTADES_VALSTIS', 2, ATR_TIPS(1, 'Izstade'), ATR_TIPS(2,'Valsts') );insert into PREDIKATI values (2, 'VALSTS_SAIMNIEKS', 2, ATR_TIPS(1, 'Valsts'), ATR_TIPS(2,'Saimnieks') );insert into PREDIKATI values (3, 'SAIMNIEKA_KLUBS', 2, ATR_TIPS(1, 'Saimnieks'), ATR_TIPS(2,'Klubs') );insert into PREDIKATI values (4, 'KLUBA_SUNS', 2, ATR_TIPS(1, 'Klubs'), ATR_TIPS(2,'Suns') );insert into PREDIKATI values (5, 'SUNA_AUDZETAVA', 2, ATR_TIPS(1, 'Suns'), ATR_TIPS(2,'Audzetava') );insert into PREDIKATI values (6, 'AUDZETAVAS_IPASNIEKS', 2, ATR_TIPS(1, 'Audzetava'), ATR_TIPS(2,'Ipasnieks') );end;

10.att. Predikātuievadepredikātutabulā

6.2 Fakti

1) Faktuievadepredikātā IZSTADES_VALSTIS:

begininsert into FAKTI values(1, 1, ATR_TIPS(1, 'Balt_uzv'),ATR_TIPS(2, 'Latvija'));insert into FAKTI values(2, 1, ATR_TIPS(1, 'Balt_uzv'),ATR_TIPS(2, 'Lietuva'));insert into FAKTI values(3, 1, ATR_TIPS(1, 'Balt_uzv'),ATR_TIPS(2, 'Igaunija'));insert into FAKTI values(4, 1, ATR_TIPS(1, 'Balt_uzv'),ATR_TIPS(2, 'Somija'));insert into FAKTI values(5, 1, ATR_TIPS(1, 'Balt_uzv'),ATR_TIPS(2, 'Norvegija'));insert into FAKTI values(6, 1, ATR_TIPS(1, 'Balt_uzv'),ATR_TIPS(2, 'Zviedrija'));end;

17

Page 18: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

11.att. Faktuievadepredikātā IZSTADES_VALSTIS

2) Faktu ievade predikātā VALSTS_SAIMNIEKS:

begininsert into FAKTI values(7, 2, ATR_TIPS(1, 'Latvija'),ATR_TIPS(2, 'Koks'));insert into FAKTI values(8, 2, ATR_TIPS(1, 'Latvija'),ATR_TIPS(2, 'Zars'));insert into FAKTI values(9, 2, ATR_TIPS(1, 'Latvija'),ATR_TIPS(2, 'Upe'));insert into FAKTI values(10, 2, ATR_TIPS(1, 'Lietuva'),ATR_TIPS(2, 'Lapa'));insert into FAKTI values(11, 2, ATR_TIPS(1, 'Lietuva'),ATR_TIPS(2, 'Celms'));insert into FAKTI values(12, 2, ATR_TIPS(1, 'Igaunija'),ATR_TIPS(2, 'Sakne'));insert into FAKTI values(13, 2, ATR_TIPS(1, 'Somija'),ATR_TIPS(2, 'Zimulis'));insert into FAKTI values(14, 2, ATR_TIPS(1, 'Somija'),ATR_TIPS(2, 'Abols'));insert into FAKTI values(15, 2, ATR_TIPS(1, 'Norvegija'),ATR_TIPS(2, 'Bumbieris'));insert into FAKTI values(16, 2, ATR_TIPS(1, 'Zviedrija'),ATR_TIPS(2, 'Zemene'));end;

18

Page 19: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

12.att. Faktuievadepredikātā VALSTS_SAIMNIEKS

3) Faktu ievade predikātā SAIMNIEKA_KLUBS:

begininsert into FAKTI values(17, 3, ATR_TIPS(1, 'Koks'),ATR_TIPS(2, 'LV_taksu_un_med_ter'));insert into FAKTI values(18, 3, ATR_TIPS(1, 'Koks'),ATR_TIPS(2, 'LV_pinceru'));insert into FAKTI values(19, 3, ATR_TIPS(1, 'Zars'),ATR_TIPS(2, 'LV_aitas_sugas_sunu'));insert into FAKTI values(20, 3, ATR_TIPS(1, 'Upe'),ATR_TIPS(2, 'LV_vesthailendes_ter'));insert into FAKTI values(21, 3, ATR_TIPS(1, 'Lapa'),ATR_TIPS(2, 'LT_taksu'));insert into FAKTI values(22, 3, ATR_TIPS(1, 'Lapa'),ATR_TIPS(2, 'LT_terjeru'));insert into FAKTI values(23, 3, ATR_TIPS(1, 'Celms'),ATR_TIPS(2, 'LT_boksieru'));insert into FAKTI values(24, 3, ATR_TIPS(1, 'Sakne'),ATR_TIPS(2, 'EST_aitas_sugas_sunu'));insert into FAKTI values(25, 3, ATR_TIPS(1, 'Zimulis'),ATR_TIPS(2, 'FIN_terjeru'));insert into FAKTI values(26, 3, ATR_TIPS(1, 'Abols'),ATR_TIPS(2, 'FIN_boksieru'));insert into FAKTI values(27, 3, ATR_TIPS(1, 'Bumbieris'),ATR_TIPS(2, 'NOR_pinceru'));insert into FAKTI values(28, 3, ATR_TIPS(1, 'Zemene'),ATR_TIPS(2, 'SWE_terjeru'));end;

19

Page 20: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

13.att. Faktuievadetabulā SAIMNIEKA_KLUBS

4) Faktu ievade predikātā KLUBA_SUNS:

begininsert into FAKTI values(29, 4, ATR_TIPS(1, 'LV_taksu_un_med_ter'),ATR_TIPS(2, 'Freud'));insert into FAKTI values(30, 4, ATR_TIPS(1, 'LV_taksu_un_med_ter'),ATR_TIPS(2, 'Fuzzy'));insert into FAKTI values(31, 4, ATR_TIPS(1, 'LV_pinceru'),ATR_TIPS(2, 'Lion'));insert into FAKTI values(32, 4, ATR_TIPS(1, 'LV_aitas_sugas_sunu'),ATR_TIPS(2, 'Ory'));insert into FAKTI values(33, 4, ATR_TIPS(1, 'LV_aitas_sugas_sunu'),ATR_TIPS(2, 'Bobiks'));insert into FAKTI values(34, 4, ATR_TIPS(1, 'LV_vesthailendes_ter'),ATR_TIPS(2, 'Anny'));insert into FAKTI values(35, 4, ATR_TIPS(1, 'LT_taksu'),ATR_TIPS(2, 'Dog'));insert into FAKTI values(36, 4, ATR_TIPS(1, 'LT_terjeru'),ATR_TIPS(2, 'Kocins'));insert into FAKTI values(37, 4, ATR_TIPS(1, 'LT_terjeru'),ATR_TIPS(2, 'Ciekurs'));insert into FAKTI values(38, 4, ATR_TIPS(1, 'LT_boksieru'),ATR_TIPS(2, 'Boksiks'));insert into FAKTI values(39, 4, ATR_TIPS(1, 'EST_aitas_sugas_sunu'),ATR_TIPS(2, 'Egle'));insert into FAKTI values(40, 4, ATR_TIPS(1, 'EST_aitas_sugas_sunu'),ATR_TIPS(2, 'Bite'));insert into FAKTI values(41, 4, ATR_TIPS(1, 'FIN_terjeru'),ATR_TIPS(2, 'Lapsa'));insert into FAKTI values(42, 4, ATR_TIPS(1, 'FIN_boksieru'),ATR_TIPS(2, 'Vilks'));insert into FAKTI values(43, 4, ATR_TIPS(1, 'NOR_pinceru'),ATR_TIPS(2, 'Pinceris'));insert into FAKTI values(44, 4, ATR_TIPS(1, 'SWE_terjeru'),ATR_TIPS(2, 'Lassy'));end;

20

Page 21: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

14.att. Faktuievadetabulā KLUBA_SUNS

5) Faktu ievade predikātā SUNA_AUDZETAVA:

begininsert into FAKTI values(45, 5, ATR_TIPS(1, 'Freud'),ATR_TIPS(2, 'Bergberry'));insert into FAKTI values(46, 5, ATR_TIPS(1, 'Fuzzy'),ATR_TIPS(2, 'Sunny'));insert into FAKTI values(47, 5, ATR_TIPS(1, 'Lion'),ATR_TIPS(2, 'Sunu_zeme'));insert into FAKTI values(48, 5, ATR_TIPS(1, 'Ory'),ATR_TIPS(2, 'Aitas'));insert into FAKTI values(49, 5, ATR_TIPS(1, 'Bobiks'),ATR_TIPS(2, 'Saule'));insert into FAKTI values(50, 5, ATR_TIPS(1, 'Anny'),ATR_TIPS(2, 'Koki'));insert into FAKTI values(51, 5, ATR_TIPS(1, 'Dog'),ATR_TIPS(2, 'Draugi'));insert into FAKTI values(52, 5, ATR_TIPS(1, 'Kocins'),ATR_TIPS(2, 'Darzs'));insert into FAKTI values(53, 5, ATR_TIPS(1, 'Ciekurs'),ATR_TIPS(2, 'Vilna'));insert into FAKTI values(54, 5, ATR_TIPS(1, 'Boksiks'),ATR_TIPS(2, 'Boksiki'));insert into FAKTI values(55, 5, ATR_TIPS(1, 'Egle'),ATR_TIPS(2, 'Mezs'));insert into FAKTI values(56, 5, ATR_TIPS(1, 'Bite'),ATR_TIPS(2, 'Beauty'));insert into FAKTI values(57, 5, ATR_TIPS(1, 'Lapsa'),ATR_TIPS(2, 'Friends'));insert into FAKTI values(58, 5, ATR_TIPS(1, 'Vilks'),ATR_TIPS(2, 'Sapnis'));insert into FAKTI values(59, 5, ATR_TIPS(1, 'Pinceris'),ATR_TIPS(2, 'Annas_co'));insert into FAKTI values(60, 5, ATR_TIPS(1, 'Lassy'),ATR_TIPS(2, 'Intelligent'));end;

21

Page 22: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

15.att. Faktuievadepredikātā SUNA_AUDZETAVA

6) Faktu ievade predikātā AUDZETAVAS_IPASNIEKS:

begininsert into FAKTI values(61, 6, ATR_TIPS(1, 'Bergberry'),ATR_TIPS(2, 'Kruze'));insert into FAKTI values(62, 6, ATR_TIPS(1, 'Bergberry'),ATR_TIPS(2, 'Skivis'));insert into FAKTI values(63, 6, ATR_TIPS(1, 'Sunny'),ATR_TIPS(2, 'Saulite'));insert into FAKTI values(64, 6, ATR_TIPS(1, 'Sunu_zeme'),ATR_TIPS(2, 'Berzs'));insert into FAKTI values(65, 6, ATR_TIPS(1, 'Aitas'),ATR_TIPS(2, 'Glezna'));insert into FAKTI values(66, 6, ATR_TIPS(1, 'Saule'),ATR_TIPS(2, 'Makonis'));insert into FAKTI values(67, 6, ATR_TIPS(1, 'Koki'),ATR_TIPS(2, 'Ezers'));insert into FAKTI values(68, 6, ATR_TIPS(1, 'Draugi'),ATR_TIPS(2, 'Jura'));insert into FAKTI values(69, 6, ATR_TIPS(1, 'Darzs'),ATR_TIPS(2, 'Straume'));insert into FAKTI values(70, 6, ATR_TIPS(1, 'Vilna'),ATR_TIPS(2, 'Abolitis'));insert into FAKTI values(71, 6, ATR_TIPS(1, 'Boksiki'),ATR_TIPS(2, 'Dadzis'));insert into FAKTI values(72, 6, ATR_TIPS(1, 'Mezs'),ATR_TIPS(2, 'Rozite'));insert into FAKTI values(73, 6, ATR_TIPS(1, 'Beauty'),ATR_TIPS(2, 'Oga'));insert into FAKTI values(74, 6, ATR_TIPS(1, 'Friends'),ATR_TIPS(2, 'Krums'));insert into FAKTI values(75, 6, ATR_TIPS(1, 'Sapnis'),ATR_TIPS(2, 'Kurmis'));insert into FAKTI values(76, 6, ATR_TIPS(1, 'Annas_co'),ATR_TIPS(2, 'Lacis'));insert into FAKTI values(77, 6, ATR_TIPS(1, 'Intelligent'),ATR_TIPS(2, 'Putnins'));end;

22

Page 23: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

16.att. Faktuievadepredikātā AUDZETAVAS_IPASNIEKS

6.3 Likumi

Likumitiekievadītilikumuglabāšanaiparedzētajātabulā.

begininsert into LIKUMI values(1, 'Valsts_klubs', 'Valsts_klubs(A, B) :- Valsts_saimnieks(A, C), Saimnieka_klubs(C, B)', 2, 3);insert into LIKUMI values(2, 'Kluba_audzetava', 'Kluba_audzetava(A, B) :- Kluba_suns(A, C), Suna_audzetava(C, B)', 4, 5);insert into LIKUMI values(3, 'Saimnieka_suns', 'Saimnieka_suns(A, B) :- Saimnieka_klubs(A, C), Kluba_suns(C, B)', 3, 4);insert into LIKUMI values(4, 'Suna_audzetajs', 'Suna_audzetajs(A, B) :- Suna_audzetava(A, C), Audzetavas_ipasnieks(C, B)', 5, 6);end;

17. att. Likumuievadelikumutabulā

23

Page 24: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

7 LoģiskāizvedumamehānismarealizēšanaNodaļātiekaprakstītasdināmiskā PL/SQL procedūras, kas realize loģiskāizvedumamehānismu

7.1 Procedūraspredikātuunfaktuizgūšanai

Pirmajāapakšnodaļātiekizveidotasvienkāršas PL/SQL procedūras,

kasizvadauzekrānavisupredikātusarakstuunfaktusarakstu, izgūstotatsevišķikatruelementu.

7.1.1 Predikātusarakstaizvade

1) Procedūrasdefinēšana:

create or replace procedure PREDIKATU_SARAKSTS iscursor PREDIKATA_KURSORS is select a.PREDIKATA_NOS,a.ATR_A.ATRIBUTS, a.ATR_B.atributs from PREDIKATI a;NOS varchar2(25);AT_A varchar2(20);AT_B varchar2(20);n number := 0;BEGINopen PREDIKATA_KURSORS;DBMS_OUTPUT.PUT_LINE('**************************************************');DBMS_OUTPUT.PUT_LINE('***************PREDIKATU_SARAKSTS*****************');DBMS_OUTPUT.PUT_LINE('**************************************************');LOOPn:=n+1;FETCH PREDIKATA_KURSORS into NOS, AT_A, AT_B;EXIT when PREDIKATA_KURSORS%NOTFOUND;DBMS_OUTPUT.PUT_LINE(n||') '||NOS||' ('||AT_A||' , '||AT_B||'); ');end LOOP;DBMS_OUTPUT.PUT_LINE('**************************************************');end PREDIKATU_SARAKSTS;

24

Page 25: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

18.att. Procedūraspredikātusarakstaizvadeidefinēšana

2) Procedūras izsaukums:

19.att. Procedūraspredikātusarakstaizvadeiizsaukums

25

Page 26: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

7.1.2 Faktu saraksta izvade

1) Procedūras definēšana:

createorreplaceprocedure FAKTU_SARAKSTS iscursor FAKTA_KURSORS isselectp.PREDIKATA_NOS,f.ATR_A.ATRIBUTS, f.ATR_B.atributsfrom PREDIKATI p, FAKTI fwheref.PRED_ID = p.PREDIKATA_ID;NOS varchar2(25);AT_A varchar2(20);AT_B varchar2(20);n number := 0;BEGINopen FAKTA_KURSORS;DBMS_OUTPUT.PUT_LINE('**************************************************');DBMS_OUTPUT.PUT_LINE('***************FAKTU_SARAKSTS*****************');DBMS_OUTPUT.PUT_LINE('**************************************************');LOOPn:=n+1;FETCH FAKTA_KURSORS into NOS, AT_A, AT_B;EXIT when FAKTA_KURSORS%NOTFOUND;DBMS_OUTPUT.PUT_LINE(n||') '||NOS||' ('||AT_A||' , '||AT_B||'); ');end LOOP;DBMS_OUTPUT.PUT_LINE('**************************************************');end FAKTU_SARAKSTS;

20.att. Procedūrasfaktusarakstaizvadeidefinēšana

26

Page 27: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

2) Procedūrasizsaukums:

*****************************************************************FAKTU_SARAKSTS*******************************************************************1) IZSTADES_VALSTIS (Balt_uzv , Latvija); 2) IZSTADES_VALSTIS (Balt_uzv , Lietuva); 3) IZSTADES_VALSTIS (Balt_uzv , Igaunija); 4) IZSTADES_VALSTIS (Balt_uzv , Somija); 5) IZSTADES_VALSTIS (Balt_uzv , Norvegija); 6) IZSTADES_VALSTIS (Balt_uzv , Zviedrija); 7) VALSTS_SAIMNIEKS (Latvija , Koks); 8) VALSTS_SAIMNIEKS (Latvija , Zars); 9) VALSTS_SAIMNIEKS (Latvija , Upe); 10) VALSTS_SAIMNIEKS (Lietuva , Lapa); 11) VALSTS_SAIMNIEKS (Lietuva , Celms); 12) VALSTS_SAIMNIEKS (Igaunija , Sakne); 13) VALSTS_SAIMNIEKS (Somija , Zimulis); 14) VALSTS_SAIMNIEKS (Somija , Abols); 15) VALSTS_SAIMNIEKS (Norvegija , Bumbieris); 16) VALSTS_SAIMNIEKS (Zviedrija , Zemene); 17) SAIMNIEKA_KLUBS (Koks , LV_taksu_un_med_ter); 18) SAIMNIEKA_KLUBS (Koks , LV_pinceru); 19) SAIMNIEKA_KLUBS (Zars , LV_aitas_sugas_sunu); 20) SAIMNIEKA_KLUBS (Upe , LV_vesthailendes_ter); 21) SAIMNIEKA_KLUBS (Lapa , LT_taksu); 22) SAIMNIEKA_KLUBS (Lapa , LT_terjeru); 23) SAIMNIEKA_KLUBS (Celms , LT_boksieru); 24) SAIMNIEKA_KLUBS (Sakne , EST_aitas_sugas_sunu); 25) SAIMNIEKA_KLUBS (Zimulis , FIN_terjeru); 26) SAIMNIEKA_KLUBS (Abols , FIN_boksieru); 27) SAIMNIEKA_KLUBS (Bumbieris , NOR_pinceru); 28) SAIMNIEKA_KLUBS (Zemene , SWE_terjeru); 29) KLUBA_SUNS (LV_taksu_un_med_ter , Freud); 30) KLUBA_SUNS (LV_taksu_un_med_ter , Fuzzy); 31) KLUBA_SUNS (LV_pinceru , Lion); 32) KLUBA_SUNS (LV_aitas_sugas_sunu , Ory); 33) KLUBA_SUNS (LV_aitas_sugas_sunu , Bobiks); 34) KLUBA_SUNS (LV_vesthailendes_ter , Anny); 35) KLUBA_SUNS (LT_taksu , Dog); 36) KLUBA_SUNS (LT_terjeru , Kocins); 37) KLUBA_SUNS (LT_terjeru , Ciekurs); 38) KLUBA_SUNS (LT_boksieru , Boksiks);

27

Page 28: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

39) KLUBA_SUNS (EST_aitas_sugas_sunu , Egle); 40) KLUBA_SUNS (EST_aitas_sugas_sunu , Bite); 41) KLUBA_SUNS (FIN_terjeru , Lapsa); 42) KLUBA_SUNS (FIN_boksieru , Vilks); 43) KLUBA_SUNS (NOR_pinceru , Pinceris); 44) KLUBA_SUNS (SWE_terjeru , Lassy); 45) SUNA_AUDZETAVA (Freud , Bergberry); 46) SUNA_AUDZETAVA (Fuzzy , Sunny); 47) SUNA_AUDZETAVA (Lion , Sunu_zeme); 48) SUNA_AUDZETAVA (Ory , Aitas); 49) SUNA_AUDZETAVA (Bobiks , Saule); 50) SUNA_AUDZETAVA (Anny , Koki); 51) SUNA_AUDZETAVA (Dog , Draugi); 52) SUNA_AUDZETAVA (Kocins , Darzs); 53) SUNA_AUDZETAVA (Ciekurs , Vilna); 54) SUNA_AUDZETAVA (Boksiks , Boksiki); 55) SUNA_AUDZETAVA (Egle , Mezs); 56) SUNA_AUDZETAVA (Bite , Beauty); 57) SUNA_AUDZETAVA (Lapsa , Friends); 58) SUNA_AUDZETAVA (Vilks , Sapnis); 59) SUNA_AUDZETAVA (Pinceris , Annas_co); 60) SUNA_AUDZETAVA (Lassy , Intelligent); 61) AUDZETAVAS_IPASNIEKS (Bergberry , Kruze); 62) AUDZETAVAS_IPASNIEKS (Bergberry , Skivis); 63) AUDZETAVAS_IPASNIEKS (Sunny , Saulite); 64) AUDZETAVAS_IPASNIEKS (Sunu_zeme , Berzs); 65) AUDZETAVAS_IPASNIEKS (Aitas , Glezna); 66) AUDZETAVAS_IPASNIEKS (Saule , Makonis); 67) AUDZETAVAS_IPASNIEKS (Koki , Ezers); 68) AUDZETAVAS_IPASNIEKS (Draugi , Jura); 69) AUDZETAVAS_IPASNIEKS (Darzs , Straume); 70) AUDZETAVAS_IPASNIEKS (Vilna , Abolitis); 71) AUDZETAVAS_IPASNIEKS (Boksiki , Dadzis); 72) AUDZETAVAS_IPASNIEKS (Mezs , Rozite); 73) AUDZETAVAS_IPASNIEKS (Beauty , Oga); 74) AUDZETAVAS_IPASNIEKS (Friends , Krums); 75) AUDZETAVAS_IPASNIEKS (Sapnis , Kurmis); 76) AUDZETAVAS_IPASNIEKS (Annas_co , Lacis); 77) AUDZETAVAS_IPASNIEKS (Intelligent , Putnins);

**************************************************

7.2 Procedūra vaicājuma izpildei

1) Procedūrasdefinēšana:

create or replace procedure VAICAJUMS(parametrs varchar2) iscursor VAICAJUMA_KURSORS is selectp.PREDIKATA_NOS,f.ATR_B.atributsfrom PREDIKATI p, FAKTI fwhere (f.PRED_ID = p.PREDIKATA_ID) and (f.ATR_A.ATRIBUTS = parametrs);NOS varchar2(25);AT_B varchar2(20);n number := 0;BEGINopen VAICAJUMA_KURSORS;

28

Page 29: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

LOOPn:=n+1;FETCH VAICAJUMA_KURSORS into NOS, AT_B;EXIT when VAICAJUMA_KURSORS%NOTFOUND;if (n=1) thenDBMS_OUTPUT.PUT_LINE('**************************************************');DBMS_OUTPUT.PUT_LINE('? '||NOS||' ( '||parametrs||', B )');DBMS_OUTPUT.PUT_LINE('**************************************************');end if;DBMS_OUTPUT.PUT_LINE(NOS||' ('||parametrs||' , '||AT_B||'); ');end LOOP;DBMS_OUTPUT.PUT_LINE('**************************************************');end VAICAJUMS;

21.att. Procedūrasvaicājumaizpildeidefinēšana

29

Page 30: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

2) VirsotnesLietuvapēctečumeklēšana, tiekizgūtisuņusaimnieki, kaspārstāvLietuvu.

22.att. Saimnieki, kaspārstāvLietuvujebvirsotnesLietuvapēcteči

3) VirsotnesKokstiešopēctečumeklēšana, tiekizgūtiklubi, kurospiedalāssaimnieksKoks.

23.att. Klubi, kurosirpieteiciesKoksjebvirsotnesKokspēcteči

30

Page 31: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

4) Virsotnes LV_taksu_un_med_ter meklēšana. Tiek izgūti suņi, kas reģistrēti Latvijas Takšu

un medību terjeru klubā.

24.att. Suņi, kas reģistrēti Latvijas Takšu un medību terjeru klubā.

5) Virsotnes Bite pēcteču meklēšana. Tiek izgūta suņa Bite audzētava.

25.att. Suņa Bite audzētava

31

Page 32: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

6) Virsotnes Intelligent pēcteču meklēšana. Tiek izgūts audzētavas Intelligent īpašnieks.

26.att. Audzētavas Intelligent īpašnieks

7.3 Procedūru pakete likumu izvadei (ar trim parametriem)

Tiek izveidota procedūra, kas izvada uzdota likuma ceļu no vienas norādītās virsotnes uz otro

nor’dītu virsotni, tāpēc ir 3 parametri.

1) Paketes deklarēšana:

createorreplacepackage LIKUMU_IZVADE asprocedureLIKUMA_IZVADE(likumsnumber, p_a varchar2, p_b varchar2);end LIKUMU_IZVADE;

27.att. Procedūrupaketesdeklarēšana

32

Page 33: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

2) Paketes ķermeņa definēšana – procedūras realizācijas apraksts:

createorreplacepackagebody LIKUMU_IZVADE asprocedureLIKUMA_IZVADE(likumsnumber, p_a varchar2, p_b varchar2) ISFB_B varchar2(25);PREDIKATA_A_ID number;PREDIKATA_B_ID number;LIK_NOS varchar(25);PREDIKATA_A_NOS varchar(25);PREDIKATA_B_NOS varchar(25);BEGINselect L.LIK_PRED_A, L.LIK_PRED_Binto PREDIKATA_A_ID, PREDIKATA_B_IDfrom likumi Lwhere L.LIKUMA_ID = likums;

selectp.PREDIKATA_NOSinto PREDIKATA_A_NOSfrom PREDIKATI pwherep.PREDIKATA_ID = PREDIKATA_A_ID;

selectp.PREDIKATA_NOSinto PREDIKATA_B_NOSfrom PREDIKATI pwherep.PREDIKATA_ID = PREDIKATA_B_ID;

select L.LIKUMA_NOSinto LIK_NOSfrom likumi Lwhere L.LIKUMA_ID = likums;

select F.ATR_A.ATRIBUTSinto FB_Bfrom fakti Fwhere (F.PRED_ID = PREDIKATA_B_ID) and (F.ATR_B.ATRIBUTS = p_b);

DBMS_OUTPUT.PUT_LINE('**************************************************');DBMS_OUTPUT.PUT_LINE(LIK_NOS||' ( '||p_a||', '||p_b || ' ):-');DBMS_OUTPUT.PUT_LINE(PREDIKATA_A_NOS||' ( '||p_a||', '||FB_B || ' ), '||PREDIKATA_B_NOS||' ('||FB_B||','||p_b||');');DBMS_OUTPUT.PUT_LINE('**************************************************');exceptionwhentoo_many_rowsthennull;end LIKUMA_IZVADE;end LIKUMU_IZVADE;

33

Page 34: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

28.att. Procedūraslikumaizvadei (ar trim parametriem) izveide

3) Pirmā likuma izvade. Parādīt, kā ar pirmā likuma palīdzību ir saistīta Somijas valsts un

Somijas boksieru klubs, respektīvi jānoskaidro, kurš suņu saimnieks no Somijas ir kluba

FIN_boksieru loceklis.

29.att. Pirmālikumaceļaizvade no virsotnesSomijauzvirsotniFIN_boksieru

34

Page 35: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

4) Otrā likuma izvade. Parādīt, kā savā starpā ir saistīti Latvijas Takšu un medību terjeru klubs un

audzētava Bergberry, respektīvi, kāds Suns tos sasaista.

30.att. Otrālikumaceļaizvade no virsotnesLV_taksu_un_med_ter_klubsuzvirsotniBergberry

5) Trešā likuma izvade. Parādīt, kā ar trešā likuma palīdzību ir saistīts saimnieks Sakne un suns

Bite, respektīvi, jānoskaidro, kāds klubs sasaista saimnieku Sakne un suni Bite.

31. att. Trešālikumaceļaizvade no virsotnesSakneuzvirsotniBite

35

Page 36: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

6) Ceturtā likuma izvade. Parādīt, kā savā starpā ir saistīti suns Egle un audzētājs Rozīte,

respektīvi, noteikt, kāda audzētava viņus sasaista.

32.att. Ceturtālikumaceļaizvade no virsotnesEgleuzvirsotniRozite

36

Page 37: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

8 Izveduma procedūras

8.1 Izveduma procedūru pakete (ar diviem parametriem un tikai vienu rezultātu)

1) Procedūru paketes deklarēšana.

createorreplacepackage LIKUMU_IZVADE2 asprocedure LIKUMA_IZVADE2(likums number, p_a varchar2);end LIKUMU_IZVADE2;

33.att. Procedūrupaketesdefinēšana

2) Programmas paketes ķermeņa definēšana, procedūras realizācijas apraksts.

createorreplacepackagebody LIKUMU_IZVADE2 asprocedure LIKUMA_IZVADE2(likums number, p_a varchar2) ISFB_B varchar2(25);FC_C varchar2(25);PREDIKATA_A_ID number;PREDIKATA_B_ID number;LIK_NOS varchar(25);PREDIKATA_A_NOS varchar(25);PREDIKATA_B_NOS varchar(25);BEGINselect L.LIK_PRED_A, L.LIK_PRED_Binto PREDIKATA_A_ID, PREDIKATA_B_IDfrom likumi Lwhere L.LIKUMA_ID = likums;

selectp.PREDIKATA_NOSinto PREDIKATA_A_NOSfrom PREDIKATI pwherep.PREDIKATA_ID = PREDIKATA_A_ID;

selectp.PREDIKATA_NOS

37

Page 38: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

into PREDIKATA_B_NOSfrom PREDIKATI pwherep.PREDIKATA_ID = PREDIKATA_B_ID;

select L.LIKUMA_NOSinto LIK_NOSfrom likumi Lwhere L.LIKUMA_ID = likums;

select F.ATR_B.ATRIBUTSinto FB_Bfrom fakti Fwhere (F.PRED_ID = PREDIKATA_A_ID) and (F.ATR_A.ATRIBUTS = p_a);

select F.ATR_B.ATRIBUTSinto FC_Cfrom fakti Fwhere (F.PRED_ID = PREDIKATA_B_ID) and (F.ATR_A.ATRIBUTS = FB_B);

DBMS_OUTPUT.PUT_LINE('**************************************************');DBMS_OUTPUT.PUT_LINE(LIK_NOS||' ( '||p_a||', B ):-');DBMS_OUTPUT.PUT_LINE(PREDIKATA_A_NOS||' ( '||p_a||', '||FB_B || ' ), '||PREDIKATA_B_NOS||' ('||FB_B||','||FC_C||');');DBMS_OUTPUT.PUT_LINE('**************************************************');DBMS_OUTPUT.PUT_LINE('Rezultats -> ' ||FC_C||'!');exceptionwhentoo_many_rowsthennull;end LIKUMA_IZVADE2;end LIKUMU_IZVADE2;

34.att. Procedūrupaketesķermeņadefinēšana

38

Page 39: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

3) Pirmā likuma izvade. Atrast Igaunijas klubu.

35.att. Pirmālikumaceļaizvade no virsotnesIgaunija

4) Otrā likuma izvade. Atrast Zviedrijas terjeru kluba audzētavu.

36.att. Otrālikumaceļaizvade no virsotnesSWE_terjeru

39

Page 40: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

5) Trešā likuma izvade. Atrast saimnieka Upe suni.

37.att. Trešālikumaceļaizvade no virsotnesUpe

6) Ceturtā likuma izvade. Atrast suņa Bobiks audzētāju.

38.att. Ceturtālikumaceļaizvade no virsotnesBobiks

40

Page 41: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

8.2 Izveduma procedūru pakete (ar diviem parametriem un vairākiem rezultātiem)

1) Programmu paketes deklarēšana:

createorreplacepackage LIKUMU_IZVADE_REZ asprocedureLIKUMA_IZVADE_REZ(likumsnumber, p_a varchar2);end LIKUMU_IZVADE_REZ;

39.att. Procedūrupaketesdefinēšana

2) Programmu paketes ķermeņa definēšana – procedūras realizācijas apraksts.

createorreplacepackagebody LIKUMU_IZVADE_REZ asprocedureLIKUMA_IZVADE_REZ(likumsnumber, p_a varchar2) ISFB_B varchar2(25);F_C varchar2(25);PREDIKATA_A_ID number;PREDIKATA_B_ID number;LIK_NOS varchar(25);PREDIKATA_A_NOS varchar(25);PREDIKATA_B_NOS varchar(25);F_B varchar2(25);n number := 0;BEGINselect L.LIK_PRED_A, L.LIK_PRED_Binto PREDIKATA_A_ID, PREDIKATA_B_IDfrom likumi Lwhere L.LIKUMA_ID = likums;

selectp.PREDIKATA_NOSinto PREDIKATA_A_NOSfrom PREDIKATI pwherep.PREDIKATA_ID = PREDIKATA_A_ID;

selectp.PREDIKATA_NOSinto PREDIKATA_B_NOSfrom PREDIKATI p

41

Page 42: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

wherep.PREDIKATA_ID = PREDIKATA_B_ID;

select L.LIKUMA_NOSinto LIK_NOSfrom likumi Lwhere L.LIKUMA_ID = likums;

select F.ATR_B.ATRIBUTSinto F_Cfrom fakti Fwhere (F.PRED_ID = PREDIKATA_A_ID) and (F.ATR_A.ATRIBUTS = p_a);DECLAREcursor VAICAJUMA_KURSORS isselect F.ATR_B.ATRIBUTSfrom fakti Fwhere (F.PRED_ID = PREDIKATA_B_ID) and (F.ATR_A.ATRIBUTS = F_C);BEGINopen VAICAJUMA_KURSORS;loop n:=n+1;fetch VAICAJUMA_KURSORS into F_B;exitwhenVAICAJUMA_KURSORS%notfound;if (n=1) then DBMS_OUTPUT.PUT_LINE('**************************************************'); DBMS_OUTPUT.PUT_LINE(LIK_NOS||' ( '||p_a||', B ):-');endif; DBMS_OUTPUT.PUT_LINE(PREDIKATA_A_NOS||' ( '||p_a||', '||F_C || ' ), '||PREDIKATA_B_NOS||' ('||F_C||','||F_B||');'); DBMS_OUTPUT.PUT_LINE('**************************************************');DBMS_OUTPUT.PUT_LINE('Rezultats -> ' ||F_B||'!');endloop;end;end LIKUMA_IZVADE_REZ;end LIKUMU_IZVADE_REZ;

42

Page 43: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

40.att. Procedūrupaketesķermeņadefinēšana

3) Pirmā likuma izvade. Lietuvas klubu izvade.

41.att. Pirmālikumadarbībasrezultāts

43

Page 44: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

4) Otrā likuma izvade. Atrast Latvijas Takšu un medību terjeru kluba audzētavas.

42.att. Otrālikumadarbībasrezultāts

5) Trešā likuma izvade. Atrast visus saimnieka Sakne suņus.

43.att. Trešālikumadarbībasrezultāts

44

Page 45: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

6) Ceturtā likuma izvade. Atrast suņa Freud audzētājus.

44.att. Ceturtālikumadarbībasrezultāts

45

Page 46: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

9 Jauna likuma pievienošanaTiek pievienots jauns likums, kas izvada visus saimniekus, kas piedalās izstādē Baltijas

uzvarētājs:

Izstades_saimnieks(A, B) :- Izstades_valsts(A, C), Valsts_saimnieks(C, B)

45.att. Jaunalikumapievienošana

Jaunslikumstiekizpildītsbezjebkādāmizmaiņām procedure paketēs.

46. att.Piektālikumaizvade

46

Page 47: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

47. att. Piektālikumaizpildesrezultāts

47

Page 48: datubaze.files.wordpress.com€¦  · Web viewPar trešā laboratorijas darba problēmas vidi tiek izvēlēta tā pati problēmas vide, kā vairākos iepriekšējos darbos – tā

10 SecinājumiTika izstrādāts trešais laboratorijas darbs kursa “Specializētās datu bāzes” ietvaros. Šis darbs ir

veltīts deduktīvās datu bāzes izstrādei, līdz ar to tas ļauj glabāt predikātus, faktus, un likumus, kas no

datu bāzē esošajiem faktiem spēj izsecināt jaunus faktus.Predikātu, faktu un likumu glabāšanai tika

izveidotas attiecīgas tabulas, predikātu atribūtu glabāšanai izveidots datu tips, līdz ar to izveidotas

tabulas ir tabulas ar objektu kolonnām. Procedūras tika realizētas ar dinamiskā PL/SQL palīdzību.

Darbā tika definēti četrilikumi, vēlāk darba beigās tika pievienots piektais. Darbā tiek apskatīts

suņu izstādes Baltijas uzvarētājs problēmas vide, kas tika attēlota hierarhiski. Problēmas vides un

likumu grafiskais attēlojums ļoti palīdzēja pārbaudīt realizējamo likumu darbību un arī pašu vaicājumu

sastādīšanā tas bija noderīgs.

Datu ievadei bija jāpievērš uzmanība, lai izvairītos no kļūdām, kas saistītas ar nepareizo tipu un

predikātu identifikatoru nosaukumiem, līdzīgi arī, izsaucot procedūras likumu izpildei, bija jāpievērš

uzmanība likuma identifikatoram, savādāk nebija iespējams ieraudzīt vaicājuma rezultātus, kaut gan

procedūras ķermenī kļūdu nebija, bet es sāku tās meklēt, līdz ar to patērēju daudz laika, meklējot kļūdas

tur, kur to nebija.

Likumu darbības realizēšanai tika izmantots dinamiskais PL/SQL, kas nozīmē, ka vaicājuma

palaišanas momentā nav zināms, kuras rindiņas tiks atlasītas, vaicājumi tiek izpildīti pakāpeniski un

katrs iepriekšējais vaicājums kalpo par nākamā vaicājuma ievaddatiem.

Vislielākās grūtības sagādāja izdomāt problēmas vidi un izveidot to tā, lai likumi būtu interesanti

un praktiski lietojamie, bet, manuprāt, tas ir izdevies, iespējams, faktu apjoms nav liels, bet ideja,

manuprāt, ir laba. Vēl viena problēma radās tādēļ, ka, pildot grupas darbu citā priekšmetā, es vairākas

reizes palaidu savā datorā kursa biedrenes java programmu, īsti nepamanot, ka viņas programma uzreiz

pēc palaišanas veido savienojumu ar datu bāzi, izmantojot viņas lietotājvārdu un paroli, līdz ar to mans

lietotājs tika bloķēts, bija jāpatērē zināms laiks, lai tiktu skaidrībā ar to, kas jādara un pieslēgtos datu

bāzei kā dbsys un atbloķētu manu datu bāzes lietotāju.

Neapšaubāmi darba izpildes gaitā iegūtas zināšanas ir ļoti noderīgas, un šis darbs šķiet

interesantākais no kursa ietvaros pildītajiem.

48