Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1)...

27
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķo datorsistēmu institūts Lielu datu bāzu administrēšana 3. laboratorijas darbs Deduktīvas datubāzes Izstrādāja: Vladimirs Starovoitovs (I DMI0 – 2) Pārbaudīja: asoc. prof. Jānis Eiduks

Transcript of Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1)...

Page 1: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

RĪGAS TEHNISKĀ UNIVERSITĀTE

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

Lietišķo datorsistēmu institūts

Lielu datu bāzu administrēšana

3. laboratorijas darbs

Deduktīvas datubāzes

Izstrādāja: Vladimirs Starovoitovs

(I DMI0 – 2)

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

2009./2010. akad. Gads.

Page 2: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

SatursSaturs...............................................................................................................................................2Uzdevuma nostādne.........................................................................................................................3Dedukcijas uzdevums......................................................................................................................4Deduktīvās datu bāzes pamatjēdzieni..............................................................................................5Datu definēšana...............................................................................................................................5Faktu glabāšanas definējumi...........................................................................................................6Likumu glabāšanas definējumi......................................................................................................14Vaicājumu izveide.........................................................................................................................17Secinājumi.....................................................................................................................................22

2

Page 3: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Uzdevuma nostādne

1. Jāizdomā dedukcijas uzdevums.

2. Datu definēšana.

3. Faktu glabāšanas definējumi.

4. Likumu glabāšanas definējumi.

5. Vaicājumu ievade.

6. Secinājumi

3

Page 4: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Dedukcijas uzdevumsUzdevuma realizācijai es izmantošu sekojošu koku:

Shēmā tiek atspoguļotas firmas MAXIMA veikalu tīklu organizācija Baltijas reģionā ar koku struktūras palīdzību. Koks ir sadalīts līmeņos: firmas nosaukums, valstis, pilsētas, veikala nosaukumi un to atrašanas vietas. Dedukcijas ceļā no diviem dažādiem elementiem var atrast kopīgo galveno (vecāko) elementu, piemēram, Tallinna un Rakvere vieno tas, ka tie atrodas vienā valstī (Igaunijā). Tāpat varam izveidot algoritmu, kas soli pa solim noved no izvēlētās virsotnes līdz sākumvirsotnei.

Page 5: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Deduktīvās datu bāzes pamatjēdzieni

1. Deduktīvā datu bāze sastāv no divām daļām:1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.2) secinājumu iegūšanas likumi (inference rules), kas glabā zināšanas par to, kā var

iegūt no esošajiem faktiem jaunus faktus. Šādu komponentu sauc par papildināto (intensional) datu bāzi.

2. Deduktīvām datu bāzēm ir dažādas metodes, kas nosaka, kā paplašinātā datu bāze sadarbosies ar papildināto datu bāzi. Ir divas pamatmetodes:

1) homogēnā pieeja – tiek izmantota viena iebūvēta sistēma. Piemēram, gan fakti, gan slēdzieni tiek glabāti un apstrādāti ar DATALOG vai Prolog;

2) heterogēnā pieeja – relāciju datu bāze tiek izmantota paplašinātai datu bāzei, bet loģiskās programmēšanas sistēma tiek izmantota papildinātai datu bāzei.

3. Homogēnās metodes trūkumi: faktu un likumu attēlošana pēc vienādiem principiem ir maldinoša, jo fakti

un likumi atšķiras kā izmērā, tā arī to vadības principos. Glabājot un apstrādājot tos atsevišķi, var iegūt labāku veiktspēju.

glabājot visus faktus un slēdzienus galvenajā atmiņā tiek ierobežots sistēmas zināšanu bāzes apjoms, kaut arī to daļēji risina virtuālās atmiņas tehnikas.

4. Heterogēnā metode atbalsta divas neatkarīgas apakšsistēmas – loģikas sistēmu un datu bāzu vadības sistēmu. Loģikas sistēmā glabājas noteikumi un tajā tiek izdarīti slēdzieni, bet datu bāzes sistēmā glabājas fakti. Loģikas sistēma nosūta DBVS slēdzienus un atpakaļ saņem risinājumus.

Datu definēšana Dati(data) – mazākie nedalāmie informācijas gabaliņi tādā formā, ka tos var,

saglabāt, apstrādāt un pārsūtīt ar datu bāzes apstrādes funkcijām; Fakti (facts) – lietotāju datu korteži, kuri glabājas lietotāju noteiktās attiecībās,

kas saista dažādus datus kopā; Likumi (rules) – noteikumi, kurus var izmantot lai izvadītu jaunus datus no

esošiem faktiem un veidotu datu savstarpēju sasaisti. Pirmā un otrā veida informācija skaidri raksturo reālās pasaules objektus. Tie ir

tiešie dati, kurus lietotājs glabā datu bāzē. Trešā veida informācija kalpo deduktīvās datu bāzes realizēšanai, izpildot vaicājumus un izpildot jauno faktu izvadi, no jau esošiem faktiem. Fakts ir izteiksme, kura apraksta vienu noteiktu daļu vai objektu no apkārtējās pasaules. Tā kā fakts ir izteiksme, tad viņam vērtība ir TRUE. Fakti atšķiras no likumiem ar to, ka likumiem ir vērtība TRUE tikai tad, kad visām likuma mainīgām vērtībām ir vērtība TRUE. Lai glabātu faktus, lietderīgi to glabāšanai izmantot relāciju datu bāzi. Tajā ļoti vienkārši glabāt viena tipa datus, un tos var apstrādāt ar jau izstrādātām, drošām un ātrām metodēm.

5

Page 6: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Faktu glabāšanas definējumiTagad vispirms mums vajag pieslēgties datubāzei ar komandrindas. Oracle 10g

programmai ir arī dažādi rīki, viens no tiem ir SQL plus, kas palīdzēsi mums veidot tabulas, ievadīt tabulās datus (insert palīdzība), rakstīt vaicājumus, procedūras utt. Kad mēs gribam ielāgoties SQL plus vidē, programma mums pieprasa ievadīt lietotājvārdu (User Name) un paroli (Password), Host String nav obligāti ievadīt.

Pēc noklusēšanas lietotājvārds ir SYSTEM un paroli MANAGER. Tagad mums vajag izveidot jaunu tabulas telpu ar nosaukumu „MYD3” lai to izdarītu mēs izmantosim „CREATE TABLESPACE”

6

Page 7: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Tagad mēs izveidosim jaunu lietotājvārdu „D3” un jaunu paroli „D3”. Tagad ar šo lietotājvārdu mēs varēsim brīvi rīkoties tabulas telpā „MYD3”. Tālāk mēs jaunam lietotajam piešķirsim visas privilēģijas lai nebūtu nekādas problēmas tālumā. (PRIVILEGES).

Tagad atgriezīsimies pie faktu glabāšanas definējumu. Sākumā izveidosim predikātu tabulu, kura saturēsi sev informāciju par predikāta identifikācijas numuru, nosaukumu, argumentu skaitu un argumentu aprakstu, kuru pēc tam tālākajā darba gaitā tiks izmantoti kā šabloni pie faktu un likumu izveides. Pēc tām būs uztaisīsim faktu glabāšanas struktūras definējumu. Tabulas, kurā glabāsies predikāti izveidi iespējams aplūkot zemāk:

Predikātu tabulas izveide:

Datu ievadi veiksim ar parasto INSERT INTO funkciju. Datu ievade tabulā predikati.

7

Page 8: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Tagad mēs izveidosim procedūru pred_saraksts, kas izvadīs izveidotos predikātus atomu sintaksē, kas ir uzskatāmāka salīdzinājumā ar datu tabulu, kurai ir objektu kolonas. Procedūras pred_saraksts izveide:

Šajā procedūrā tiek izmantots kursors, lai būtu pieejami dati no predikātu tabulas, kā arī cikls, kurā tiek apstrādāta katra tabulas rinda (katrs rindas lauks tiek piešķirts noteiktam mainīgajam), un attiecīgi arī izvadīta.

Tagad pamēģināsim apskatīties, ko izvada tikko izveidotā procedūra.

8

Page 9: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Bet sākumā SQL*Plus būtu jāpadod komanda, lai tiktu izvadīti procedūras darbības rezultāti, savādāk tiks izvadīts tikai ziņojums, ka PL/SQL procedūra ir veiksmīgi izpildīta, bet nebūs redzami nekādi rezultāti.

Un nu tagad varam apskatīties procedūras darbības rezultātus un apskatīties vai izveidotā procedūra izvada patiešām loģisku rezultātu un mēs varēsim aplūkot visu predikātu sarakstu, pieprasot procedūras izpildi.

Struktūra ar tukšu ķermeni ir fakts. Faktam nav neviena mainīgā, bet tikai specifiskas vērtības. Tagad veiksim faktu tabulas izveidi (tajā glabāsies faktu identifikators, predikāta numurs, kurš izmantots fakta izveidē (atsauces lauks uz tabulu predikati), kā arī fakta atribūtu apraksts objektu kolonās). Objektu kolonas tipi būs tādi paši, kā predikātu tabulai, tāpēc izmantošu to pašu (veik_n). Izveide redzama zemāk:

9

Page 10: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Datu ievadi veiksim ar parasto INSERT INTO funkciju. Datu ievade tabulā fakti.

10

Page 11: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Datu ievade tabulā fakti.

Datu ievade tabulā fakti.

11

Page 12: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Visi dati ir ievadīti tabula fakti, varam iet tālāk.

Tagad faktu saraksta aplūkošanai izveidosim gandrīz līdzīgu procedūru, kas arī izvadīs datu tabulā ievadītos datus atomu veidolā

12

Page 13: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Tagad varam mēģināt apskatīties procedūras darbības rezultātus un apskatīties vai izveidotā procedūra izvada patiešām loģisku rezultātu un mēs varēsim aplūkot visu faktu sarakstu, pieprasot procedūras izpildi.

13

Page 14: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Likumu glabāšanas definējumiStruktūra ar galvu un ķermeni, ir likums. Piemēram:

firmas_nosaukums_pilseta(A,B) :- firmas_nosaukums_valsts (A,C), valsts_pilseta(C,B)

Tagad izveidosim tabulu likumi, kurā glabāsies likuma identifikators – l_num, tā nosaukums – l_nos, pieraksta veids – l_p un izmantotie predikāti (to identifikatori, atsauces uz tabulu predikati - no kā veidojies likums) – l_pred1 un l_pred2. Likumu tabula definēšana.

Tabulā glabājas likuma identifikators, tā nosaukums, pieraksta veids, un izmantotie predikāti (to identifikatori, atsauces uz tabulu predikati )no kā veidojies likums. Tagad ievadīsim likumus tabulā.

Tagad izveidosim procedūru, kas izvadīs likumus Horna izteiksmes veidā, kas katrā ziņa ir pārskatāmāka un vieglāk izprotama. Likums firmas_nosaukums_pilseta izmanto faktus firmas_nosaukums_valsts un valsts_pilseta, kas arī redzams likumu tabulā laukā l_p (likuma pieraksts):

Šī procedūra tiks izveidota procedūru paketē, jo katram likumam būs jāizveido sava procedūra:

14

Page 15: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Tagad izveidosim pašas procedūras ķermeni procedūru paketē, procedūras pirmais parametrs norādīs, kurš likums tiks izmantots (likuma identifikators), pārējie parametri, savukārt, norādīs likuma vērtības:

15

Page 16: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

16

Page 17: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Pārbaudes un piemēri

Tagad veiksim procedūras izpildi. Šeit mēs padosim likuma numuru, uz kuru atsaucamies, pirmo un otro parametru. Procedūrai būtu jāizvada ceļš no pirmā līdz otrajam parametram.Sāksim, piemēram, ar pašu pirmo likumu, noskaidrojot ceļu likumam firmas_nosaukums_pilseta no virsotnes „MAXIMA” līdz virsotnei „Ogre”. Šeit, procedūras darbības rezultātā, mums būtu jāierauga arī starpposms – valsts, kur ir firma MAXIMA izplatīja sava veikala tiklu un pilsēta nosaukumu ir Ogre.

Kā ir redzams, tad starpposmā ir redzams, ka valsts, kur ir firma MAXIMA izplatīja sava veikala tiklu un pilsēta nosaukumu ir Ogre - ir Latvija.

Kā otro pārbaudīsim likumu valsts_veikala_nosaukums, padodot parametrus Lietuva (valsts) un veikala nosaukumu – MAXIMA_XX_5. Starpposmā būtu jāierauga arī pilsētu, kurā atrodas veikals ar nosaukumu MAXIMA_XXX_5.

Izvades rezultātā redzam, ka valsts ir Lietuva, kur pilsēta, kurā atrodas veikals ar nosaukumu MAXIMA_XXX_5 - ir Kaunas.

17

Page 18: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Kā trešo pārbaudīsim likumu pilsētas_veikala_adrese, padodot parametrus Tallinna (pilsēta) un veikala adrese– Punane 6. Starpposmā būtu jāierauga arī veikala nosaukumu, kurš atrodas ielā ar nosaukumu Punane 6.

Izvades rezultātā redzam, ka pilsēta ir Tallinna, kur veikala nosaukumu, kurš atrodas ielā ar nosaukumu Punane 6 ir - MAXIMA_XX_8.

Vaicājumu izveideLoģiskajā programmēšanā vaicājums tiek sasniegts izmantojot loģisko secinājumu

ķēdes, kas izmanto likumus un faktisko informāciju lai pierādītu apgalvojuma patiesību vai nepatiesību. Datu bāzu sistēmās vaicājums tiek apstrādāts, lai spētu izgūt no lielā glabājamo datu apjoma piemērotāko informāciju.

Savā darbā realizēšu vaicājumus tikai priekš faktiem, jo izveidotajiem likumiem pēc būtības šie vaicājumi būtu līdzīgi (un rezultāti identiski) tikai mainītos procedūras parametru skaits. Darba tālākajā gaitā izveidošu procedūru ar kuras palīdzību realizēšu deduktīvos vaicājumus:

18

Page 19: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

Procedūrā tika izmantots viens kursors, kurā tika ielādēti dati no tabulas fakti, un kā jau minēts deduktīvais vaicājums izvada rezultātus par nākamo koka līmeni, tādējādi procedūrai ir viens parametrs, kas ir specifiska koka virsotne, kādā noteiktā slānī, un deduktīvā vaicājuma rezultātā tiek izvadītas šīs koka virsotnes pēcteči.

Tagad veiksim dažus deduktīvo vaicājumu izpildes piemērus. Šim nolūkam mums būs jāpadod SQL*Plus komanda par procedūras izpildi, un arī jāpadod procedūrai viens parametrs – virsotne, kuras pēcteči tiks meklēti. Bez tam, tie var būt vairāki, kā arī tēmēti uz koka leju.

Mēģināsim secīgi izvadīt piemērus par katru struktūras līmeni.Sāksim ar koka 1 līmeni, atrodot pēctečus firmai MAXIMA.

a) Tagad pāriesim pie koka otrā līmeņa un mēģināsim izvadīt datus par pilsētām, kuras atrodas Latvijā.

a) Tagad pāriesim pie koka trešā līmeņa un mēģināsim izvadīt datus par veikalu nosaukumiem, kuras atrodas Rīgā.

19

Page 20: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

b) Tagad pāriesim pie koka ceturtā līmeņa un mēģināsim izvadīt datus par veiklas atrāšanas vietu (adrese), kuriem ir vienīgais nosaukums – MAXIMA_XXX_1.

b) Tagad pāriesim pie koka otrā līmeņa un mēģināsim izvadīt datus par pilsētām, kuras atrodas Lietuvā.

b) Tagad pāriesim pie koka trešā līmeņa un mēģināsim izvadīt datus par veikalu nosaukumiem, kuras atrodas Palangā.

20

Page 21: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

b) Tagad pāriesim pie koka ceturtā līmeņa un mēģināsim izvadīt datus par veiklas atrāšanas vietu (adrese), kuriem ir vienīgais nosaukums - MAXIMA_XX_7.

c) Tagad pāriesim pie koka otrā līmeņa un mēģināsim izvadīt datus par pilsētām, kuras atrodas Igaunijā.

c) Tagad pāriesim pie koka trešā līmeņa un mēģināsim izvadīt datus par veikalu nosaukumiem, kuras atrodas Tallinnā.

21

Page 22: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

c) Tagad pāriesim pie koka ceturtā līmeņa un mēģināsim izvadīt datus par veiklas atrāšanas vietu (adrese), kuriem ir vienīgais nosaukums - MAXIMA_XX_8.

Tagad ievadīsim faktu tabulā vel vienu faktu.

Tagad veidosim pārbaudi un vēlreiz pāriesim pie koka ceturtā līmeņa un mēģināsim izvadīt datus par veiklas atrāšanas vietu (adrese), kuriem ir vienīgais nosaukums - MAXIMA_XX_8.

Rezultātā ir redzams, tagad ir divi veikali ar nosaukumu MAXIMA_XX_8, bet agrāk bijā tikai viens.

22

Page 23: Rīgas Tehniskā universitāte  · Web view1. Deduktīvā datu bāze sastāv no divām daļām: 1) sākumdati jeb fakti (facts). To sauc par paplašināto (extensional) datu bāzi.

SecinājumiDarbā ir sniegts piemērs par MAXIMA veikalu tīklu organizāciju Baltijas

reģionā. Trešā praktiskā darba gaitā, darba autors realizējis datu bāzi priekš faktiem,

predikātiem un arī likumiem, kuri atsaucas uz šiem faktiem un predikātiem. Tāpat tika

izveidotas arī procedūras, kas izvada minētās struktūras attiecīgajā formātā.

Neskatoties uz to, ka dotais uzdevums bija visgrūtākais un darbietilpīgākais šajā

priekšmetā, darba autoram izdevās to veiksmīgi izpildīt, jo tika apgūta un apkopota

papildinformācija no dažādiem internēta forumiem un lekcijām. Tāpat tika izpildītas

visas uzdevumā minētās prasības. Darba procesā noderēja iepriekš apgūtas zināšanas par

PL/SQL, kursoru, ciklu, IF komandas un tamlīdzīgu konstrukciju pielietošanu. Tomēr,

procedūru veidošanas gaitā, tika pieļautas dažādas sintaktiskās kļūdas, ko nācās meklēt

autoram pašam manuāli, jo diemžēl SQL Plus konsolē parādās tikai ziņojums, ka

procedūra izveidota ar kļūdām, bet netiek norādīta rinda ar kļūdu un kļūdas iespējamais

iemesls.

Autorprāt, deduktīvās datubāzes ir viena no aktuālākajām tēmām šajā kursā, jo no

izpildītāja tiek prasītas gan matemātikas zināšanas, gan mākslīga intelekta

pamatzināšanas, gan programmēšanas prasmes. Mācību procesā iegūtas zināšanas un

prasmes tiks pielietotas arī turpmāk.

23