1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par...
Transcript of 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par...
![Page 1: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/1.jpg)
Rīgas Tehniskā universitāte
Datorzinātnes un informācijas tehnoloģijas fakultāte
Lietišķo datorsistēmu institūts
3. laboratorijas darbs priekšmetā
Lielās datubāzes
Deduktīvā datubāze
Darba autors: Armands Šlihte
Kurss, grupa: I DMD0-1
Studenta apl.nr.: 051RDB197
Pārbaudīja: prof. J. Eiduks
Rīga 2008
![Page 2: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/2.jpg)
Laboratorijas darba uzdevums
1. Hierarhiska uzdevuma definēšana;
2. Faktu definēšana;
3. Likumu definēšana;
4. Piemērs uz papīra;
5. Likumu glabāšana un izgūšana;
6. Loģiskā izveduma realizēšana (dinamiskais SQL un PL/SQL);
7. Piemēri (vismaz 2);
8. Secinājumi.
![Page 3: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/3.jpg)
Saturs
Ievads.......................................................................................................................................4
1. Hierarhiska uzdevuma definēšana....................................................................................5
2. Faktu definēšana.............................................................................................................10
3. Likumu definēšana..........................................................................................................12
4. Uzdevumu risinājuma piemēri........................................................................................14
4.1. Kas ir kāda darbinieka struktūrvienības kolēģi?.........................................................14
4.2. Kas ir kādas struktūrvienības tiešā virs-struktūrvienība?...........................................16
4.3. Kas ir kāda darbinieka priekšnieki? (Rekursija)..........................................................20
5. Likumu glabāšana un izgūšana........................................................................................23
5.1. Tabulu izveidošana.....................................................................................................23
5.2. Datu ievade................................................................................................................25
5.3. Skatu izveidošana.......................................................................................................28
6. Loģiskā izveduma realizēšana.........................................................................................34
6.1. Kas ir kāda darbinieka kolēģis?..................................................................................34
6.2. Kas ir kādas struktūrvienības tiešā virs-struktūrvienība?...........................................37
6.3. Kas ir kāda darbinieka priekšnieki? (Rekursija)..........................................................42
7. Piemēri............................................................................................................................44
![Page 4: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/4.jpg)
Ievads
Šajā laboratorijas darbā tiks veidota deduktīva datubāze. Līdzīgi kā citos darbos viens
no svarīgākajiem uzdevumiem ir izdomāt priekšmetisko vidi, tā lai būtu iespējams izpildīt
visus uzdotos norādījumus. Jādefinē hierarhisks uzdevums. Es izvēlējos par priekšmetisko
vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem un struktūrvienībām.
Darbinieku hierarhija izpaužas darbiniekus iedalot priekšniekos un padotajos.
Struktūrvienību hierarhija izpaužas tās iedalot virs struktūrvienībās un apakš
struktūrvienībās.
Vispirms tiks definēts hierarhisks uzdevums, tad tiks definēti fakti, tad tiks definēti
likumi, tad tiks izveidots uzdevuma risināšanas piemērs „uz papīra”, tad tiks definētas likumu
glabāšanas un izgūšanas struktūras, tad tik realizēts loģiskais izvedums, visbeidzot tiks
realizēti vairāki piemēri un izdarīti secinājumi.
4
![Page 5: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/5.jpg)
1. Hierarhiska uzdevuma definēšana
Pirmais uzdevumus ir hierarhiska uzdevuma definēšana. Šajā darbā izvēlējos par
priekšmetisko vidi izmantot uzņēmumu ar 2 hierarhiskām datu struktūrām – darbinieki un
struktūrvienības. Starp darbiniekiem var būt attiecības priekšnieks un padotais, bet starp
struktūrvienībām virs-struktūrvienība un apakš-struktūrvienība. Papildus tam
struktūrvienības tiks sasaistītas ar darbiniekiem izmantojot struktūrvienību amatus, kurus
darbinieki ieņem.
Vispirms grafiski definēsim hierarhiskās struktūras. Struktūrvienību savstarpējās
attiecības jeb hierarhiju parāda Attēls 1.1, struktūrvienību identifikatorus atšifrējumus
parāda Tabula 1. Informācijas tehnoloģijas dienests ir virs-struktūrvienība visām
struktūrvienībām. Kopā ir 3 līmeņi.
Attēls 1.1 Struktūrvienību hierarhija
Darbinieku savstarpējās attiecības - priekšniekus un padotos attēlo Attēls 1.2.
Guntars ir vislielākais priekšnieks, jo viņš ir Informācijas tehnoloģijas dienesta vadītājs. Kopā
darbiniekiem arī ir 3 līmeņi atbilstoši struktūrvienībām. Šī darbinieku hierarhijas shēma tiks
ņemta par pamatu pārējiem šī darba uzdevumiem, kur būs nepieciešami dati.
5
![Page 6: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/6.jpg)
Attēls 1.2 Darbinieku hierarhija
6
![Page 7: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/7.jpg)
Tiks izmantota relāciju datubāze ar 3 tabulām Struktūrvienības(Struktūrvienības
kods, struktūrvienība), Priekšnieki(priekšnieks, padotais) un Darbinieki(vārds,
struktūrvienība, amats). Struktūrvienību attiecības jeb virs-struktūras un apakš-struktūras
būs iespējams noteikt pēc struktūrvienību vadītāju hierarhijas.
Tabula 1 parāda struktūrvienības un to identifikatorus.
Tabula 1 Struktūrvienības
Struktūrvienības
identifikators
(STR_ID)
Struktūrvienība (STR_NOS)
ITD Informācijas tehnoloģijas dienests
IS Informācijas sistēmu nodaļa
ITSA Informācijas tehnoloģijas stratēģiskās attīstības
nodaļa
DTP Datortehnikas un tīkla pakalpojumu nodaļa
LAC Lietotāju atbalsta centrs
ISIG Informācijas sistēmu izstrādes grupa
ISUG Informācijas sistēmu uzturēšanas grupa
PAG Programmatūras apkalpes grupa
DAG Datortehnikas apkalpes grupa
KAG Klientu apkalpošanas grupa
Tabula 2 parāda darbiniekus – vārds, struktūrvienība, kurā strādā un amats, kuru
struktūrvienībā ieņem. Personām tiek piesaistīti konkrēti amati konkrētā struktūrvienībās.
Katrai struktūrvienībai ir vadītājs, kas atbildīgs par struktūrvienības darbu un ir priekšnieks
šīs struktūrvienības darbiniekiem ar citiem amatiem. Piemēram, Imants ir Informācijas
sistēmu nodaļas vadītājs.
Tabula 2 Darbinieki
Vārds (D_VARDS) Struktūrvienība (D_STR) Amats (D_AMATS)
Guntars ITD Vadītājs
7
![Page 8: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/8.jpg)
Imants IS Vadītājs
Gatis ITSA Vadītājs
Ģirts DTP Vadītājs
Kaspars LAC Vadītājs
Armands ISIG Vadītājs
Aleksandrs ISUG Vadītājs
Rolands DAG Vadītājs
Sergejs PAG Vadītājs
Linda KAG Vadītājs
Mārtiņš ISIG Programmētājs
Dainis ISIG Programmētājs
Raitis ISUG IT projektu vadītājs
Miķelis ITSA IT projektu vadītājs
Ludmila ITSA Sistēmu analītiķis
Kārlis DTP Administrators
Jānis DTP Administrators
Raimonds DAG Administrators
Lidija DAG Administrators
Uldis PAG Administrators
Sandra KAG Speciālists
Līga KAG Speciālists
Tabula 3 parāda darbinieku savstarpējās attiecības – priekšniekus un padotos. Pēc šīs
tabulas būs iespējams arī izvest struktūrvienību hierarhiju, jo kādas apakš-struktūrvienības
vadītājs ir padotais kādai virs-struktūrvienībai. Piemēram, Guntars, kurš ir vadītās
Informācijas Tehnoloģijas dienestam ir priekšnieks Imantam, kurš ir Informācijas Sistēmu
nodaļas vadītājs. Tas nozīmē, ka Informācijas Tehnoloģijas dienests ir virs-struktūrvienība
Informācijas Sistēmu nodaļai.
Tabula 3 Priekšnieki
Priekšnieks (PRIEKSNIEKS) Padotais (PADOTAIS)
8
![Page 9: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/9.jpg)
Guntars Imants
Guntars Gatis
Guntars Ģirts
Guntars Kaspars
Imants Armands
Imants Aleksandrs
Gatis Miķelis
Gatis Ludmila
Ģirts Kārlis
Ģirts Jānis
Kaspars Rolands
Kaspars Sergejs
Kaspars Linda
Armands Mārtiņš
Armands Dainis
Aleksandrs Raitis
Rolands Raimonds
Rolands Lidija
Sergejs Uldis
Linda Sandra
Linda Līga
9
![Page 10: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/10.jpg)
2. Faktu definēšana
Definētajā uzdevumā iespējams izdalīt datus, faktus un likumus. Dati šeit būtu kādi
noteikti informācijas vienumi, piemēram:
Darbinieka vārds ir Armands, darbinieka_vārds(Armands);
Ir darbinieka amats Vadītājs, amats(Vadītājs);
Ir struktūrvienība ITD struktūrvienība (ITD) ;
Priekšnieka vārds ir Guntars, priekšnieka_vārds(Guntars);
Padotā vārds ir Imants, padotā_vārds(Imants);
...
Fakti veidojas, kad tiek izveidota attiecība starp šiem datiem, piemēram:
Informācijas tehnoloģijas dienests ir struktūrvienība ar identifikatoru ITD,
struktūrvienība(ITD, Informācijas Tehnoloģijas dienests);
Guntars ir darbinieks, kas strādā ITD par vadītāju, darbinieks(Guntars, ITD,
Vadītājs);
Guntars ir Imanta priekšnieks, priekšnieks(Guntars, Imants);
...
Tātad šim uzdevumam, jādefinē šādi fakti (skat. Tabula 4). Fakti tiek definēti ar
predikātiem.
Tabula 4 Fakti
Predikāti Fakti
struktūrvienība(X, Y) struktūrvienība(X, ITD)
struktūrvienība(X, IS)
struktūrvienība(X, ITSA)
struktūrvienība(X, DTP)
struktūrvienība(X, LAC)
struktūrvienība(X, ISIG)
struktūrvienība(X, ISUG)
struktūrvienība(X, PAG)
struktūrvienība(X, DAG)
struktūrvienība(X, KAG)
10
![Page 11: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/11.jpg)
amats(X, Y) amats(X, Vadītājs)
amats(X, IT projektu vadītājs)
amats(X, Sistēmu analītiķis)
amats(X, Administrators)
amats(X, Programmētājs)
amats(X, Speciālists)
tiešais_priekšnieks(X, Y) tiešais_priekšnieks(Guntars, Imants)
tiešais_priekšnieks(Guntars, Gatis)
tiešais_priekšnieks(Guntars, Ģirts)
tiešais_priekšnieks(Guntars, Kaspars)
tiešais_priekšnieks(Imants, Armands)
tiešais_priekšnieks(Imants, Aleksandrs)
tiešais_priekšnieks(Gatis, Miķelis)
tiešais_priekšnieks(Gatis, Ludmila)
tiešais_priekšnieks(Ģirts, Kārlis)
tiešais_priekšnieks(Ģirts, Jānis)
tiešais_priekšnieks(Kaspars, Rolands)
tiešais_priekšnieks(Kaspars, Sergejs)
tiešais_priekšnieks(Kaspars, Linda)
tiešais_priekšnieks(Armands, Mārtiņš)
tiešais_priekšnieks(Armands, Dainis)
tiešais_priekšnieks(Aleksandrs, Raitis)
tiešais_priekšnieks(Rolands, Raimonds)
tiešais_priekšnieks(Rolands, Lidija)
tiešais_priekšnieks(Sergejs, Uldis)
tiešais_priekšnieks(Linda, Sandra)
tiešais_priekšnieks(Linda, Līga)
11
![Page 12: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/12.jpg)
3. Likumu definēšana
Likumu var izteikt ar teikumu, kas savukārt sastāv no predikātiem un faktiem.
Definētajam uzdevumam var izdalīt šādu likumus:
struktūrvienība(darbinieka_vārds, struktūrvienības_id) jeb struktūrvienība(X,
Y);
amats(darbinieka_vārds, amats) jeb amats(X,Y);
tiešais_priekšnieks(tiešā_priekšnieka_vārds, tiešā_padotā_vārds) jeb
tiešais_priekšnieks(X, Y);
...
Darbiniekam ar vārdu X ir kolēģis darbinieks ar vārdu Y, abiem darbiniekiem jāstrādā
vienā struktūrvienībā. Definētajam uzdevumam var izdalīt šādus saliktus likumus:
tiešā_virsstruktūra(struktūrvienības_id1, struktūrvienības_id2) :-
struktūrvienība(X, struktūrvienības_id1), amats(X, Vadītājs),
struktūrvienība(Y, struktūrvienības_id2), amats(Y, Vadītājs),
tiešais_priekšnieks(X, Y);
kolēģis(X, Y) :- struktūrvienība(X, struktūrvienības_id), struktūrvienība(Y,
struktūrvienības_id);
Darbiniekam ar vārdu X priekšnieks ir darbinieks ar vārdu Y. Tas nav tas pats, kas
tiešais priekšnieks, jo darbinieka priekšnieka priekšnieks arī ir šī darbinieka priekšnieks.
Veidojas rekursīvs likums. Līdzīgi ir ar struktūrvienībām. Virs-struktūrvienība kādai
struktūrvienībai ir šīs arī struktūrvienības apakš-struktūrvienības virs-struktūrvienība.
Definētajam uzdevumam var izdalīt šādus rekursīvus likumus:
priekšnieks(X, Y) :- tiešais_priekšnieks(X, Y);
priekšnieks(X, Y) :- priekšnieks(X, darbinieka_vārds),
tiešais_priekšnieks(darbinieka_vārds, Y);
virsstruktūra(X, Y) :- struktūrvienība(darbinieka_vārds1,Y),
amats(darbinieka_vārds1, Vadītājs), struktūrvienība(darbinieka_vārds2, X),
amats(darbinieka_vārds2, Vadītājs), priekšnieks(X, Y);
12
![Page 13: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/13.jpg)
Šim uzdevumam definēsim šādus likumus (Skat. Tabula 5 Likumi).
Tabula 5 Likumi
Likums Teikums
tiešā_virsstruktūra(V, A) struktūrvienība(X, V), amats(X, Vadītājs), struktūrvienība(Y,
A), amats(Y, Vadītājs), tiešais_priekšnieks(X, Y)
kolēģis(D, X) struktūrvienība(D, Y), struktūrvienība(X, Y)
priekšnieks(D, X) priekšnieks(D, Y), tiešais_priekšnieks(Y, X)
virsstruktūra(V, A) struktūrvienība(X, V), amats(X, Vadītājs), struktūrvienība(Y,
A), amats(Y, Vadītājs), priekšnieks(X, Y)
13
![Page 14: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/14.jpg)
4. Uzdevumu risinājuma piemēri
4.1. Kas ir kāda darbinieka struktūrvienības kolēģi?
Tiek uzdots uzdevums atrast Armanda kolēģus (Skat. Attēls 4.3). Kā būs redzams
turpmāk rezultātā tiek atrasti visi darbinieki, kas strādā Armanda struktūrvienībā jeb
Armanda kolēģi. Vispirms tiek atlasītas visas struktūrvienības un Armanda struktūrvienība.
Tad pēc Armanda struktūrvienības visi šīs struktūrvienības darbinieki –Armands, Mārtiņš un
Dainis. Šeit nepilnība ir tā, ka rezultātā tiek iekļauts arī pats Armands. Šo nepilnību varētu
izlabot, pievienojot kolēģa likumam nosacījumu NOT un attiecināt to uz X. Taču tas ļoti
nopietni sarežģītu deduktīvas datubāzes realizēšanu. Pagaidām samierināsimies ar šādu
rezultātu. Uzdevuma risinājums parādīts turpmākajos attēlos.
Attēls 4.3 Uzdevums
14
![Page 15: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/15.jpg)
Likumu un faktu predikātu pakārtotības koks (Skat. Attēls 4.4). Šim uzdevumam koku
veido tikai fakti – struktūrvienība(D, Y) un struktūrvienība(Armands, Y).
Attēls 4.4 Likumu un faktu predikātu pakārtotības koks
Koka lapu faktu predikāti (Skat. Attēls 4.5).
Attēls 4.5 Koka lapu faktu predikāti
Faktu predikātu savienošana (Skat. Attēls 4.6).
Attēls 4.6 Faktu predikātu savienošana
15
![Page 16: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/16.jpg)
Rezultātā tiek iegūts, ka Armanda struktūrvienības darbinieki jeb kolēģi ir Armands,
Mārtiņš un Dainis.
4.2. Kas ir kādas struktūrvienības tiešā virs-struktūrvienība?
Sarežģītāks uzdevums ir atrast struktūrvienības ISIG tiešo virs-struktūrvienību (Skat.
Attēls 4.7). Pirmkārt, tiek atlasītas visu struktūrvienību darbinieki un visi vadītāji, lai
noskaidrotu visus struktūrvienību vadītājus. Otrkārt, tiek atlasīti visi ISIG struktūrvienības
darbinieki un noskaidrots tās vadītājs. Tad tiek atlasīti visi tiešie priekšnieki un tiešie padotie,
lai būtu iespējams salīdzināt, kurš ir ISIG struktūrvienības vadītāja priekšnieks. Un tad pēc šī
priekšnieka vārda var noskaidrot, kurai struktūrvienībai tas ir vadītājs. Šī struktūrvienība arī
būs ISIG struktūrvienības virs-struktūrvienība. Uzdevuma risinājums redzams turpmākajos
attēlos.
16
![Page 17: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/17.jpg)
Attēls 4.7 Uzdevums
Likumu un faktu predikātu pakārtotības koks (Skat. Attēls 4.8).
17
![Page 18: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/18.jpg)
Attēls 4.8 Likumu un faktu predikātu pakārtotības koks
Koka lapu faktu predikāti (Skat. Attēls 4.9).
Attēls 4.9 Koka lapu faktu predikāti
18
![Page 19: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/19.jpg)
Faktu predikātu savienošana (Skat. Attēls 4.10).
Attēls 4.10 Faktu predikātu savienošana
Tātad vispirms tiek secināts, ka ISIG struktūrvienības vadītājs ir Armands, tad atrasts
darbinieka vārds, kurš ir Armanda tiešais priekšnieks. Visbeidzot tiek noskaidrots šī tiešā
19
![Page 20: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/20.jpg)
priekšnieka struktūrvienība. Rezultātā iegūstam, ka ISIG struktūrvienības tiešā virs-
struktūrvienība ir IS jeb Informācijas Sistēmu nodaļa.
4.3. Kas ir kāda darbinieka priekšnieki? (Rekursija)
Vēl sarežģītāks uzdevums ir noskaidrot – kas ir kāda darbinieka priekšnieki? Tātad
kas ir Armanda priekšnieki. Šeit priekšnieki ir gan Armanda tiešais priekšnieks, gan Armanda
tiešā priekšnieka tiešais priekšnieks utt. Veidojas rekursija. Tiks izmantots iepriekš definētais
likums priekšnieks. Uzdevumu parāda Attēls 4.11.
Attēls 4.11 Uzdevums
20
![Page 21: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/21.jpg)
Likumu un faktu predikātu pakārtotības koks ar rekursiju (Skat. Attēls 4.12Attēls 4.8).
Attēls 4.12 Likumu un faktu predikātu pakārtotības koks ar rekursiju
Koka lapu faktu predikāti ar rekursiju (Skat. Attēls 4.12Attēls 4.9).
Attēls 4.13 Koka lapu faktu predikāti ar rekursiju
21
![Page 22: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/22.jpg)
Faktu predikātu savienošana (Skat. Attēls 4.10). Kā redzams pēdējā savienojumā nav
rezultātu tādēļ savienošana apstājās. Tas veidojas dēļ rekursijas.
Attēls 4.14 Faktu predikātu savienošana
Tātad vispirms tiek secināts, ka Armanda tiešais priekšnieks ir Imants, tad ka Imanta
tiešais priekšnieks ir Guntars. Tas nozīmē, ka Armanda priekšnieks ir gan Imants, gan
Guntars.
22
![Page 23: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/23.jpg)
5. Likumu glabāšana un izgūšana
5.1. Tabulu izveidošana
Kā tika minēts iepriekš, likumu glabāšanai tiks izmantota relāciju datu bāze ar 3
tabulām STRUKTURVIENIBAS, DARBINIEKI un TIESIE_PRIEKSNIEKI. Struktūrvienību
identifikatori un nosaukumi glabāsies tabulā STRUKTURVIENIBAS (skat. Attēls 5.15).
Attēls 5.15 Tabulas STRUKTURVIENIBAS izveidošana
Organizācijas darbinieku dati glabāsies tabulā DARBINIEKI (skat. Attēls 5.16). Tajā
glabāsies darbinieka vārds, struktūrvienības identifikators, kurā tas strādā un ieņemamais
amats.
Attēls 5.16 Tabulas DARBINIEKI izveidošana
23
![Page 24: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/24.jpg)
Darbinieku savstarpējās attiecības jeb tiešie priekšnieki un tiešie padotie glabāsies
tabulā TIESIE_PRIEKSNIEKI (skat. Attēls 5.17). Tiks glabāts tiešā priekšnieka identifikators
pretī tiešā padotā identifikatoram.
Attēls 5.17 Tabulas TIESIE_PRIEKSNIEKI izveidošana
24
![Page 25: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/25.jpg)
5.2. Datu ievade
Tagad izveidotajās tabulās tiks ievadīti dati. Struktūrvienību informācija tiek ievadīta
tabulā STRUKTURVIENIBAS (skat. Attēls 5.18). Attēls 5.19 parāda tabulas satura pārbaudi.
Attēls 5.18 Datu ievade tabulā STRUKTURVIENIBAS
25
![Page 26: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/26.jpg)
Attēls 5.19 Tabulas STRUKTURVIENIBAS saturs
Darbinieku informācija tiek ievadīta tabulā DARBINIEKI (skat. Attēls 5.20).
Attēls 5.20 Datu ievade tabulā DARBINIEKI
26
![Page 27: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/27.jpg)
Attēls 5.21 parāda tabulas DARBINIEKI satura pārbaudi.
Attēls 5.21 Datu pārbaude tabulai DARBINIEKI
Tiešie priekšnieki un tiešie padotie tiek ievadīti tabulā TIESIE_PRIEKSNIEKI (skat.
Attēls 5.22)
27
![Page 28: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/28.jpg)
Attēls 5.22 Datu ievade tabulā TIESIE_PRIEKSNIEKI
5.3. Skatu izveidošana
Uzdevuma realizēšanai definētajiem faktiem tiks izveidoti skati
TIESAIS_PRIEKSNIEKS, TIESA_STRUKTURVIENIBA, AMATS. Faktus par tiešajiem priekšniekiem
parādīs skats TIESAIS_PRIEKSNIEKS (skat. Attēls 5.23). Attēls 5.24 parāda skata darbības
pārbaudi.
28
![Page 29: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/29.jpg)
Attēls 5.23 Skata TIESAIS_PRIEKSNIEKS izveidošana
Attēls 5.24 Skata TIESAIS_PRIEKSNIEKS darbības pārbaude
29
![Page 30: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/30.jpg)
Faktus par darbinieku tiešajām struktūrvienībām parādīs skats
TIESA_STRUKTURVIENIBA (skat. Attēls 5.25). Attēls 5.26 parāda skata darbības pārbaudi.
Attēls 5.25 Skata TIESA_STRUKTURVIENIBA izveidošana
Attēls 5.26 Skata TIESA_STRUKTURVIENIBA darbības pārbaude
30
![Page 31: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/31.jpg)
Faktus par darbinieka amatiem parādīs skats AMATS (skat. Attēls 5.27).
Attēls 5.28 parāda skata darbības pārbaudi.
Attēls 5.27 Skata AMATS izveidošana
Attēls 5.28 Skata AMATS darbības pārbaude
31
![Page 32: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/32.jpg)
Iespējams arī izveidot skatu FAKTI, kas parādītu visus faktus (skat. Attēls 5.29). Attēls
5.30 un Attēls 5.31 parāda visus faktus.
Attēls 5.29 Skata FAKTI izveidošana
Attēls 5.30 Skata FAKTI darbības pārbaude 1
32
![Page 33: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/33.jpg)
Attēls 5.31 Skata FAKTI darbības pārbaude 2 (turpinājums)
33
![Page 34: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/34.jpg)
6. Loģiskā izveduma realizēšana
Iepriekšējās nodaļās tika definēti 2 uzdevumi: Armanda kolēģu iegūšana un ISIG
struktūrvienības tiešā virs-struktūrvienības iegūšana. Šajā nodaļā tiks realizēta šo uzdevumu
loģiskie izvedumi.
6.1. Kas ir kāda darbinieka kolēģis?
1. uzdevums ir šāds: Kas ir Armanda kolēģis? Tabula 6 parāda šī uzdevuma
vaicājumu. Tabula 7 parāda likumu definējumu tabulu. Attēls 6.32 parāda izveduma koka
faktu predikātu savienošanu. Kā redzams šis uzdevums ir diezgan vienkāršs.
Tabula 6 Vaicājums
Predikāts 1. atribūts 2. atribūts
kolēģis D Armands
Tabula 7 Likumu definējumu tabula
Likuma
nr.
Sastāv-
daļas
nr.
Likums
vai
fakts
Predikāts – likums Pakārtotie predikāti 1.
atribūts
2.
atribūts
1 0 L kolēģis D X
1 1 F tiešā_struktūrvienība D Y
1 2 F tiešā_struktūrvienība X Y
Attēls 6.32 Izveduma koka faktu predikātu savienošana
34
![Page 35: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/35.jpg)
Šī uzdevuma faktu predikātu savienojumu realizējošie SELECT vaicājumi (skat. Attēls
6.33). Šim uzdevumam pietiek ar vienu vaicājumu.
Attēls 6.33 Faktu predikātu savienojumu realizējošie SELECT vaicājumi
Tagad realizēsim šo uzdevumu ar dinamisko SQL. Šeit papildus grūtības sagādā tas,
ka kolēģi var būt vairāki un jāizmanto kursors, lai atgrieztu vairākus kolēģus. Šo realizāciju
parāda Attēls 6.34.
Attēls 6.34 Dinamiskais SQL
35
![Page 36: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/36.jpg)
Attēls 6.35 Dinamiskā SQL realizēšana
Kā redzams attēlā meklējot Armanda struktūrvienības kolēģus tiek atrasti fakti:
kolēģis(Armands, ISIG), kolēģis(Mārtiņš, ISIG), kolēģis(Dainis, ISIG). Tātad kolēģi ir Armands,
Mārtiņš un Dainis.
Tagad šis vaicājums jāpārtaisa par procedūru, lai būtu iespējams iegūt arī citu
darbinieku kolēģus. Procedūras izveidošanu parāda Attēls 6.36. Šī procedūra atgriezīs
darbinieka struktūrvienības kolēģus pēc norādītā darbinieka vārda.
36
![Page 37: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/37.jpg)
Attēls 6.36 Procedūra kolēģu iegūšanai izveidošana
6.2. Kas ir kādas struktūrvienības tiešā virs-struktūrvienība?
2. uzdevums ir šāds: Kas ir ISIG struktūrvienības tiešā struktūrvienība. Tabula 8
Vaicājums parāda definēto vaicājumu ar atribūtiem. Tabula 9 parāda likumu definējumu
tabulu. Tabula 10 parāda izveduma koka tabulu. Kā redzams šis uzdevums jau ir mazliet
sarežģītāks.
Tabula 8 Vaicājums
Predikāts 1. atribūts 2. atribūts
tiešā_virsstruktūra V ISIG
Tabula 9 Likumu definējumu tabula
Likuma
nr.
Sastāv-
daļas
Likums
vai
Predikāts – likums Pakārtotie predikāti 1.
atribūts
2.
atribūts
37
![Page 38: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/38.jpg)
nr. fakts
1 0 L tiešā_virsstruktūra V A
1 1 F tiešā_struktūrvienība X V
1 2 F amats X Vadītājs
1 3 F tiešā_struktūrvienība Y A
1 4 F amats Y Vadītājs
1 5 F tiešais_priekšnieks X Y
Tabula 10 Izveduma koka tabula
Likums vai fakts Predikāts 1. atribūts 2. atribūts
F tiešā_struktūrvienība X V
F amats X Vadītājs
F tiešā_struktūrvienība Y A
F amats Y Vadītājs
F tiešais_priekšnieks X Y
38
![Page 39: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/39.jpg)
Izveduma koka faktu predikātu savienošana (skat. Attēls 6.37).
Attēls 6.37 Izveduma koka faktu predikātu savienošana
Faktu predikātu savienojumu realizējošie SELECT vaicājumi (skat. Attēls 6.38).
Attēls 6.38 Faktu predikātu savienojumu realizējošie SELECT vaicājumi
39
![Page 40: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/40.jpg)
Dinamiskā SQL izmantošana kopējā vaicājuma realizēšanai (skat. Attēls 6.39
Dinamiskais SQL).
Attēls 6.39 Dinamiskais SQL
40
![Page 41: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/41.jpg)
Šī uzdevuma atrisināšanas dinamiskā SQL realizēšanu parāda Attēls 6.40.
Attēls 6.40 Dinamiskā SQL realizēšana
Kā redzams attēlā uzdodot struktūrvienību ISIG iegūstam faktu, ka struktūrvienības
ISIG tiešā virs-struktūrvienība ir IS jeb Informācijas Sistēmu nodaļa. Lai būtu iespējams uzdot
arī citas struktūrvienības izveidosim procedūru. Šīs procedūras izveidošanu parāda .
41
![Page 42: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/42.jpg)
Attēls 6.41 Procedūras tiešās virs-struktūrvienības iegūšanai izveidošana
6.3. Kas ir kāda darbinieka priekšnieki? (Rekursija)
3. uzdevums ir šāds: Kas ir Armanda priekšnieki? Šis uzdevums izmanto rekursīvu
likumu priekšnieks(X, Y). Tādēļ likumu definējumu tabula un koka lapu predikātu tabula
netiks veidota. Iepriekš izveidotās shēmas šo uzdevumu pietiekami definē. Šis uzdevums tiks
risināts ar rekursīvu procedūru. Tas nozīmē, ka procedūra izsauks pati sevi un atkarībā no
nosacījuma izbeigs darbību. Nosacījums šajā gadījumā būs tas, ka tiek sasniegts darbinieks,
kuram nav priekšnieka – visu darbinieku priekšnieks. Procedūras ķermeņa funkcionalitāte
tiks veidota izmantojot dinamisko SQL. Dinamisko SQL vaicājumu parāda Attēls 6.42.
Procedūra meklēs uzdotā padotā pēc darbinieka vārda tiešo priekšnieku. Ja
priekšnieks tiks atrasts tā meklēs šī tiešā priekšnieka tiešo priekšnieku. Tas notiks līdz
42
![Page 43: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/43.jpg)
atrastajam darbiniekam vairs nebūs tiešā priekšnieka. Iestāsies izņēmums EXCEPTION
NO_DATA_FOUND.
Attēls 6.42 Procedūras izveidošana
43
![Page 44: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/44.jpg)
7. Piemēri
Šajā nodaļā tiks praktiski pielietotas iepriekš izveidotās procedūras, lai risinātu
definētos uzdevumus. Vispirms atradīsim darbinieku struktūrvienību kolēģus izmantojot
izveidoto procedūru IEGUT_KOLEGUS. Atradīsim Gata, Rolanda un Lindas struktūrvienību
kolēģus. Nododot procedūrai, ka jāiegūst Gata struktūrvienības kolēģus, tiek noteikti
struktūrvienības ITSA jeb Informācijas Tehnoloģijas Stratēģiskās Attīstības nodaļas kolēģi.
Iegūstam faktus kolēģis(Gatis, ITSA), kolēģis(Miķelis, ITSA) un kolēģis(Ludmila, ITSA). Tātad
ITSA struktūrvienības kolēģi ir Gatis, Miķelis un Ludmila. Procedūras rezultātu parāda Attēls
7.43.
Attēls 7.43 Procedūras rezultāts
Ja jāiegūst Rolanda struktūrvienības kolēģus, tiek noteikti struktūrvienības DAG jeb
Datortehnikas Apkalpes Grupas kolēģi. Iegūstam faktus kolēģis(Rolands, DAG),
kolēģis(Raimons, DAG) un kolēģis(Lidija, DAG). Tātad DAG struktūrvienības kolēģi ir Rolands,
Raimons un Lidija. Procedūras rezultātu parāda Attēls 7.43.
44
![Page 45: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/45.jpg)
Attēls 7.44 Procedūras rezultāts
Nododot procedūrai, ka jāiegūst Lindas struktūrvienības kolēģus, tiek noteikti
struktūrvienības KAG jeb Klientu Apkalpošanas Grupas kolēģi. Iegūstam faktus kolēģis(Linda,
KAG), kolēģis(Sandra, KAG) un kolēģis(Līga, KAG). Tātad KAG struktūrvienības kolēģi ir Linda,
Sandra un Līga. Procedūras rezultātu parāda Attēls 7.43.
Attēls 7.45 Procedūras rezultāts
45
![Page 46: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/46.jpg)
Otrs uzdevums ir noteikt – kas ir kādas noteiktas struktūrvienības tiešā virs-
struktūrvienība. Šo uzdevumu iespējams atrisināt izmantojot iepriekš izveidoto procedūru
IEGUT_TIESO_VIRSSTRUKTURU. Iegūsim tiešās virs-struktūrvienības struktūrvienībām ar
identifikatoriem DTP – Datortehnikas un Tīklu Pakalpojumu nodaļa, PAG – Programmatūras
Apkalpes grupa un ISUG – Informācijas Sistēmu Uzturēšanas grupa. Norādot struktūrvienību
DTP tiek noteikts, ka DTP vadītājs ir Ģirts un Ģirta tiešais priekšnieks ir Guntars, bet Guntars
ir struktūrvienības ITD vadītājs. Tātad ITD jeb Informācijas Tehnoloģijas dienests ir
struktūrvienības ITD tiešā virs-struktūrvienība. Tiek iegūts fakts tiešā_virsstruktūra(ITD, DTP).
Procedūras rezultātu parāda Attēls 7.46.
Attēls 7.46 Procedūras rezultāts
Ja procedūrai uzdod struktūrvienību PAG, vispirms tiek noteikt, ka PAG vadītājs ir
Sergejs, taču Sergeja tiešais priekšnieks ir Kaspars, kurš savukārt ir struktūrvienības LAC
vadītājs. Tātad struktūrvienība LAC jeb Lietotāju Atbalsta centrs ir struktūrvienības PAG tiešā
virs-struktūrvienība. Procedūras izsaukumu un rezultātu parāda Attēls 7.47.
46
![Page 47: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/47.jpg)
Attēls 7.47 Procedūras rezultāts
Uzdodot procedūrai IEGUT_TIESAS_VIRSSTRUKTURAS struktūrvienības identifikatoru
ISUG, vispirms tiek noskaidrots, ka ISUG vadītājs ir Aleksandrs. Tad tiek noskaidrots
Aleksandra tiešais priekšnieks. Tas ir Imants, kas ir IS jeb Informācijas Sistēmu nodaļas
vadītājs. Seko, ka struktūrvienība IS ir tiešā virs-struktūrvienība struktūrvienībai ISUG.
Procedūras izsaukumu un rezultātu parāda Attēls 7.48.
Attēls 7.48 Procedūras rezultāts
Šeit interesanti būtu pārbaudīt – kādu rezultātu dotu procedūra, ja tai padod visu
struktūrvienību virs-struktūrvienību. Šajā gadījumā tā ir ITD – Informācijas Tehnoloģijas
47
![Page 48: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/48.jpg)
dienests. Šai struktūrvienībai nav virs-struktūrvienības, tādēļ procedūrai nevajadzētu neko
atgriezts vai arī atgriezt kļūdu. Izrādās procedūra atgriež kļūdu - 01403. 00000 - "no data
found" - par to, ka dati nav atrasti. Procedūras izsaukumu un rezultātu parāda Attēls 7.49.
Attēls 7.49 Procedūras rezultāts
Trešais uzdevums ir rekursīvs – atrast kāda darbinieka priekšniekus. Šo uzdevumu
iespējams atrisināt izmantojot iepriekš izveidoto procedūru IEGUT_PRIEKSNIEKUS. Iegūsim
priekšniekus Armandam, Lidijai un Līgai. Norādot darbinieka vārdu Armands tiek noteikts, ka
Armanda tiešais priekšnieks ir Imants un Imanta tiešais priekšnieks ir Guntars, bet Guntaram
nav tiešā priekšnieka. Tātad tiek iegūti fakti priekšnieks(Imants, Armands),
priekšnieks(Guntars, Armands). Tas nozīmē, ka Armanda priekšnieki ir Imants un Guntars.
Procedūras rezultātu parāda Attēls 7.50.
48
![Page 49: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/49.jpg)
Attēls 7.50 Procedūras rezultāts
Norādot darbinieka vārdu Lidija tiek noteikts, ka Lidijas tiešais priekšnieks ir Rolands,
Rolanda tiešais priekšnieks ir Kaspars un Kaspara tiešais priekšnieks ir Guntars, bet Guntaram
nav tiešā priekšnieka. Tātad tiek iegūti fakti priekšnieks(Rolands, Lidija), priekšnieks(Kaspars,
Lidija) un priekšnieks(Guntars, Lidija). Tas nozīmē, ka Lidijai priekšnieki ir Rolands, Kaspars un
Guntars. Procedūras rezultātu parāda Attēls 7.51.
Attēls 7.51 Procedūras rezultāts
Norādot darbinieka vārdu Līga tiek noteikts, ka Līgas tiešais priekšnieks ir Linda,
Lindas tiešais priekšnieks ir Kaspars un Kaspara tiešais priekšnieks ir Guntars, bet Guntaram
49
![Page 50: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/50.jpg)
nav tiešā priekšnieka. Tātad tiek iegūti fakti priekšnieks(Linda, Līga), priekšnieks(Kaspars,
Līga) un priekšnieks(Guntars, Līga). Tas nozīmē, ka Līgai priekšnieki ir Linda, Kaspars un
Guntars. Procedūras rezultātu parāda Attēls 7.52Attēls 7.51.
Attēls 7.52 Procedūras rezultāts
50
![Page 51: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/51.jpg)
Secinājumi
Šajā laboratorijas darbā tika veidota deduktīva datubāze un risināti hierarhiski
uzdevumi. Vispirms tika definēts hierarhisks uzdevums. Tika izvēlēts par priekšmetisko vidi
uzņēmums ar 2 hierarhiskām datu struktūrām – darbiniekiem un struktūrvienībām.
Darbinieku hierarhija izpaužas darbiniekus iedalot priekšniekos un padotajos.
Struktūrvienību hierarhija izpaužas tās iedalot virs struktūrvienībās un apakš
struktūrvienībās. Tad tika definēti fakti – darbinieka tiešā struktūrvienība, darbinieka amats,
darbinieka tiešais priekšnieks. Tad tika definēti likumi – tiešā virs-struktūrvienība, kolēģis.
Tika definēti arī 2 rekursīvi likumi priekšnieks un virs-struktūrvienība. Tad tika izveidots 2
uzdevumu risināšanas piemēri „uz papīra” jeb ar tabulu un shēmu palīdzību. Tad tika
definētas likumu glabāšanas un izgūšanas struktūras. Tad tika realizēts loģiskais izvedums
šiem 2 uzdevumiem. Šeit tika pielietots dinamiskā SQL tehnoloģija. Tas nozīmē, ka SQL tiek
veidots dinamiski izmantojot PL/SQL. SQL vaicājums tiek veidots no teksta jeb VARCHAR2
tipa mainīgajiem, kuri var saturēt vai nu vaicājuma sastāvdaļas vai kādas konkrētas vērtības.
Izmantojot dinamisko SQL tika atrisināti uzdoti uzdevumi. Vēlāk šie vaicājumi tika
pārveidoti par procedūrām, lai tops varētu pielietot arī citos gadījumos. Gadījumā, kad
dinamiskais SQL atgriež vairāku rindu vērtības, lai iegūtu visus rezultātus nevar izmantot
EXECUTE IMMEDIATE, bet jāizmanto kursors. Tas veiksmīgi tika arī atrisināts. Tika izveidotas
2 procedūras, kas katra risināja kādu no definētajiem uzdevumiem. Visbeidzot tika realizēti
vairāki piemēri izmantojot šīs procedūras. Procedūras veiksmīgi strādāja. Tika izmēģināts
izņēmuma gadījums, struktūrvienības virs-struktūrvienības iegūšanai. Procedūrai tika nodota
struktūrvienība ITD, kas ir visu struktūrvienību virs-struktūrvienība un tai nav virs-
struktūrvienības. Procedūra atgrieza kļūdu, ka dati netika atrasti, bet „DBMS OUTPUT” neko
neizvadīja. Tas nozīmē, ka arī šajā situācijā procedūra nostrādāja veiksmīgi.
Darbā tika definēti arī rekursīvi likumi un rekursīvs uzdevums atrast kāda darbinieka
priekšniekus. Šī uzdevuma realizēšanai tika izveidota rekursīva procedūra, kas izsauca pati
sevi un pie nosacījuma, kas darbiniekam nav tiešo priekšnieku apstājās. Tas tika realizēts
izmantojot izņēmuma apstrādi – EXCEPTION WHEN NO_DATA_FOUND. Šīs procedūras
ķermenī atkal tika izmantots dinamiskais SQL un EXECUTE IMMEDIATE. Kopumā darba
uzdevuma norādījumi tika izpildīti. Problēmas veidojot procedūru sagādāja tas, ka vajadzēja
atgriezt viena uzdotā darbinieka priekšniekus, tādēļ vajadzēja katrā izsaukumā padot arī
pirmo uzdoto darbinieku. Tas veiksmīgi arī izdevās.
51
![Page 52: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/52.jpg)
Kopumā darba uzdevuma nosacījumus izdevās veiksmīgi izpildīt, pat rekursiju, kas
nebija obligāta. Bija iespējams uzdevumus realizēt arī savādāk, taču tika izmantots
dinamiskais SQL.
52
![Page 53: 1.laboratorijas darbs „Programmatūras izstrādes plānošana” · Web viewEs izvēlējos par priekšmetisko vidi uzņēmumu ar 2 hierarhiskām datu struktūrām – darbiniekiem](https://reader034.fdocuments.net/reader034/viewer/2022052102/603cb3391f54f37c485e6186/html5/thumbnails/53.jpg)
Literatūra
http://www.experts-exchange.com/Database/Oracle/Q_20651117.html
http://www.techonthenet.com/oracle
http://www.psoug.org/reference/procedures.html
Oracle SQL Developer - Help
prof. Eiduka lekciju konspekts
53