apskatītā sistēma - web viewlinux. izpildāmiem failiem. šī sistēma nav pilna deduktīva...

34
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķo datorsistēmu institūts Lietišķo datorzinātņu katedra Deduktīvās datubāzes Izstrādāja: Oļegs Gorbiks Rīga, 2010

Upload: vanphuc

Post on 01-Feb-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

RĪGAS TEHNISKĀ UNIVERSITĀTE

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

Lietišķo datorsistēmu institūts

Lietišķo datorzinātņu katedra

Deduktīvās datubāzes

Izstrādāja: Oļegs Gorbiks

Rīga, 2010

Page 2: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

Saturs1. Apskatītā sistēma.................................................................................................................3

2. Programmas instalācija........................................................................................................4

3. DES komandas...................................................................................................................10

4. DES funkcionalitāte...........................................................................................................14

5. Datu glabāšana...................................................................................................................17

6. Likumu glabāšana..............................................................................................................18

7. Deduktīvo datubāzu piemērs.............................................................................................24

8. Secinājumi.........................................................................................................................26

2

Page 3: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

1. Apskatītā sistēma

Šajā referātā tiek apskatīta DES (Datalog Educational System v2.1 –

http://www.fdi.ucm.es/profesor/fernan/DES/index.html). Šī sistēma ir bezmaksas atvērta koda

daudz platformu produkts. Tā ir uz Prolog bāzēta vienkāršas deduktīvas DBVS

implementācija. Tā atbalsta Datalog valodu un SQL vaicājumus, pilnīgi rekursīvu

novērtēšanu ar aritmētisku, stratificēto negāciju un jaunas pieejas deklaratīvu atkļūdošanu,

testu kopas ģenerāciju SQL skatiem, null vērtību atbalstu, outer join un agregācijas

predikātiem. Sistēma var būt izmantojama no Prolog interpretatora uz jebkuras OS, kas

atbalsta Prolog. Sistēmu var arī palaist atsevišķi no Windows vai Linux izpildāmiem failiem.

Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency),

transakcijas, drošību, tā ir tikai apmācoša sistēma. Sistēma ir bāzēta uz komandu

interpretatora, ar kuru palīdzību ir iespējams izpildīt vaicājumus, modificējot datubāzi un

izpildīt komandas. Arī ir iespēja izmantot GUI šai sistēmai – ACIDE

(http://www.fdi.ucm.es/profesor/fernan/ACIDE/), kas galvenokārt atbalsta teksta iezīmēšanu

ar krāsu, kas atvieglo darbu.

DES atbalsta vairākās OS:

Windows (98+);

Linux;

Mac OS X Leopard;

Mac OS X Snow Leopard.

Sistēma atbalsta arī relāciju datubāzes (MySQL, MS Access, Oracle un tml.) un piekļuvi

tai, izmantojot OBDC.

Pastāv iespēja rakstīt aritmētiskas izteiksmes, izmantojot plašu aritmētiskas funkcijas,

operatoru un konstanšu kopu. Pastāv arī iespēja ielādēt programmas pirmtekstus un veikt to

kompilāciju, iegūstot strādājošo programmas versiju nepieciešamajā vidē. Sistēma atbalsta

Prolog, Datalog un SQL valodas;

Sistēmai ir plaša un sīka dokumentācija, kura tiek izplatīta kopā ar sistēmu

(http://fastbull.dl.sourceforge.net/project/des/des/des2.1/manualDES2.1.pdf). Tā ir labi

strukturēta un satur 149 lapaspuses.

3

Page 4: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

2. Programmas instalācija

DES sistēma neprasa speciālas instalācijas. Lai palaistu programmu, ir jālejupielādē .zip

arhīvu un jāizpako to saturu vēlamā direktorijā. Pastāv divas iespējas strādāt ar DES. Pirmā ir

strādāt konsoles režīmā (skat. . att.). Darbība notiek vienkārši ievadot komandas. Lai to

palaistu ir jāpalaiž failu des.exe (šeit un tālāk būs runa tikai par Windows vidi).

1. att. Konsoles variants

Cita iespēja ir izmantot GUI (skat. . att.). Tas īpaši ne ar ko neatšķiras no konsoles

varianta. Lai palaistu to ir jāpalaiž failu deswin.exe.

4

Page 5: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

2. att. GUI variants

Cita iespēja ērti strādāt ir izmantot ACIDE vidi (skat. . att.). Kā jau bija minēts, šī vide

atbalsta teksta iezīmēšanu ar krāsu, kas atvieglo darbību ar sistēmu. Lai palaistu šo vidi, ir

jāpalaiž failu des_aside.jar, kurš atrodas tajā pašā direktorijā, kur arī atrodas citi faili.

5

Page 6: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

3. att. ACIDE vide

Bez dokumentācijas, kura ir atrodama DES oficiālajā Web-lapā, pastāv arī iespēja

ievadīt komandu /help, kura paradīs visas iespējamas komandas (skat. . att.), kuras var ievadīt

šajā sistēmā.

6

Page 7: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

4. att. Komandu saraksts

Kā jau bija minēts, sistēma atbalsta ārējo DBVS. Šajā referātā tiek apskatīta darbība ar

MySQL. Lai savienoties ar MySQL serveri, tiek izmantots ODBC draiveris. Palaižot no

standarta Windows izvēlnes Data Sources (ODBC) programmu, ir jāpievieno jaunu User DNS

ierakstu (skat. . att.).

7

Page 8: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

5. att. User DNS pievienošana

Pēc tām ir jāizvēlas draiveri MySQL ODBC Driver (skat. . att.).

6. att. Draivera izvēle

8

Page 9: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

Izmantojot standarto Windows konsoli (cmd), tika izveidota test_db datubāze (skat. .

att.), lai ODBC draiverim būtu iespējams uzreiz norādīt, pie kuras datubāzes ir jāpieslēdzas.

7. att. Datubāzes izveidošana

. attēlā ir redzama ODBC draivera konfigurācija.

8. att. Pieslēgšanas konfigurācija

Pieslēgties pie izveidotas datubāzes, izmantojot DES, var ievadot komandu /open_db.

Ar komandas /current_db var pārbaudīt tekošu datubāzi (skat. . att.).

9

Page 10: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

9. att. Pieslēgšanas datubāzei

Tagad sistēma ir gatava lietošanai un pastāv iespēja darboties ar ārējo datubāzi (šajā

gadījumā tā ir MySQL DBVS).

10

Page 11: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

3. DES komandas

DES atbalsta daudzās komandas. To sarakstu var uzzināt, ievadot komandu /help, jeb /h.

Tālāk seko īss komandu apraksts:

likumu datubāzes komandas:

- /[Filenames] – ielāde Datalog failus, atcelšot iepriekšējus likumus;

- /[+Filenames] – ielāde Datalog failus, saglabājot iepriekšējus likumus;

- /abolish – atcelt visus Datalog likumus;

- /abolish Name – atcel visus Datalog likumus, kuras atbilst predikāta vārdam Name;

- /abolish Name/Arity – atcel visus Datalog likumus, kuras atbilst predikāta

paraugam;

- /assert Head:-Body – definēt likumu. :-Body nav obligāts (tikai faktiem);

- /consult Filename – ielāde Datalog failu, atcelšot iepriekšējus likumus;

- /c Filename – īss /consult variants;

- /listing – izved Datalog likumus;

- /listing Name – izved Datalog likumus, kuras atbilst vārdam Name;

- /listing Name/Arity – izved Datalog likumus, kuras atbilst paraugam;

- /listing Head – izved Datalog likumus, kuras nosaukumā ir iekļauts Head;

- /listing Head:-Body – izved Datalog likumus, kuriem atbilst Head:-Body;

- /reconsult – ielāde Datalog failu, saglabājot iepriekšējus likumus;

- /r Filename – īss /reconsult variants;

- /restore_ddb Filename – tas pats, kas /consult;

- /retract Head:-Body – izdzēš pirmo likumu, kurš atbilst paraugam Head:-Body;

- /retractall Head – izdzēš visus likumus, kuras nosaukums atbilsts Head;

- /save_ddb Filename – saglāba pašreizējo Datalog likumu datubāzi failā.

relāciju datubāzes komandas:

- /open_db Conn [Opts] – atver Conn ODBC savienojumu, kur Opts=[user(Vārds)]

[password(Parole)];

- /close_db – aizver pašreizējo ODBC savienojumu;

- /current_db – parāda pašreizējo ODBC savienojuma vārdu;

atkļūdošana un testu kopas ģenerācija:

- /debug_datalog Goal [Level] – sāk atkļūdošanu Datalog bāzēs mērķim Goal teikuma

(c) vai, pēc noklusējuma, predikāta (p) līmenī

11

Page 12: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

- /debug_sql View [Opts] – sāk SQL skata View atkļūdošanu, kur:

Opts=[trust_tables([yes|no])] [trust_file(FileName)] [order([dq|preorder])];

pēc noklusējuma: trust_tables(yes), bez trust_file un order(preorder);

- /trace_datalog Goal [Order] – izsekot Datalog bāzes mērķim Goal dotajā secībā

(postorder, vai, pēc noklusējuma, preorder);

- /trace_sql View [Order] – izsekot SQL skatu View dotajā secībā (postorder, vai, pēc

noklusējuma, preorder);

- /test_case View [Opts] – ģenerē testu kopas klases dotajām skatam View, kur

Opts=[all|positive|negative] [display|add|replace];

- /tc_size Min Max – izstāda minimālo un maksimālo testu kopai ģenerēto kortežu

skaitu;

- /tc_size – parāda minimālo un maksimālo testu kopai ģenerēto kortežu skaitu;

- /tc_domain Min Max – izstāda vērtību apgabalu testu kopai starp Min un Max;

- /tc_domain – parāda vērtību apgabalu testu kopai starp Min un Max;

paplašinājuma tabulas komandas:

- /clear_et – iztīra paplašinājuma tabulu;

- /list_et – izved paplašinājuma tabulas saturu;

- /list_et Name – izved paplašinājuma tabulas saturu, kas atbilst vārdam Name;

- /list_et Name/Arity – izved paplašinājuma tabulas saturu, kas atbilst paraugam;

OS komandas:

- /cat Filename – izved faila Filename saturu;

- /cd Path – maina pašreizējo direktoriju uz Path;

- /cd – maina pašreizējo direktoriju uz to, no kurienes bija palaista DES;

- /dir – tas pats, kas /ls;

- /dir Path – tas pats, kas /ls Path;

- /ls – izved pašreizējas direktorijas saturu;

- /ls Path – izved Path direktorijas saturu;

- /pwd – izved pašreizējo direktoriju;

- /shell Command – padod komandu Command operetājsistēmai;

- /s Command – tas pats, kas /shell Command;

- /type Filename – tas pats, kas /cat Filename;

logošanas komandas:

- /log – atgriež pašreizējo logošanas failu;

12

Page 13: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

- /log Filename – uzstāda logošanu Filename failā;

- /nolog – aizliedz logošanu;

informatīvas komandas:

- /builtins – izved iebūvētus operatorus, funkcijas un predikātus;

- /check – parāda, vai ir ieslēgta integrācijas ierobežojuma pārbaude;

- /dbschema – izved datubāzes shēmu;

- /dbschema Name – izved datubāzes shēmu dotajām Name skatam vai tabulai;

- /development – parāda, vai ir ieslēgts izstrādāšanas uzskaitījums;

- /development Switch – ieslēdz vai izslēdz izstrādāšanas uzskaitījumu (atbilstoši on

vai off);

- /duplicates – parāda, vai ir ieslēgti dublikāti;

- /help – parāda palīdzību;

- /h – tas pats, kas /help;

- /negation – parāda pašreizējo algoritmu negācijai;

- /pdg – parāda predikātu atkarības grafu ielādētai programmai;

- /pretty_print – parāda, vai ir ieslēgta opcija pretty_print;

- /pretty_print Switch – ieslēdz, vai izslēdz opciju pretty_priint (atbilstoši on vai off);

- /safe – parāda, vai ieslēgta programmas transformācija;

- /simplification – parāda, vai ieslēgta programmas vienkāršošana;

- /status – parāda pašreizējo sistēmas statusu;

- /strata – parāda stratifikāciju ielādētai programmai;

- /timing – parāda, vai ieslēgta pagājuša laika radīšana;

- /timing Switch – izslēdz vai ieslēdz pagājuša laika radīšanu (atbilstoši off, on,

detailed);

- /verbose – parāda, vai ieslēgta verbose opcija;

- /verbose Switch – ieslēdz, vai izslēdz verbose opciju (atbilstoši on vai off);

- /version – parada sistēmas versiju;

valodas:

- /Datalog – pārslēdz uz Datalog interpretatoru;

- /datalog Query – Datalog Query novērtēšana;

- /prolog – pārslēdz uz Prolog interpretatoru;

- /prolog Goal – Prolog mērķa Goal novērtēšana;

- /sql – pārslēdz uz SQL interpretatoru;

13

Page 14: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

- /sql SQL_statement – SQL SQL_satatement novērtēšana;

pārējais:

- /check Switch – ieslēdz vai izslēdz integrācijas ierobežojuma pārbaude (atbilstoši on

vai off);

- /duplicates Switch – ieslēdz vai izslēdz dublikātus (atbilstoši on vai off);

- /negation Algorithm – uzstāda negācijas algoritmu (strata vai et_not);

- /halt – iziet no DES;

- /output Switch – ieslēdz vai izslēdz izejas radīšanu (atbilstoši on vai off);

- /process Filename – apstrādā failu Filename tā, kā ja tas saturs būtu ievadīts ar

tastatūru sistēmas vidē.

- /p Filename – tas pats, kas /process Filename;

- /quit, /q, /exit, /e – tas pats, kas /halt;

- /safe Switch – ieslēdz vai izslēdz drošības transformāciju (atbilstoši on vai off);

- /simplification Switch – ieslēdz vai izslēdz programmas vienkāršošanu (atbilstoši on

vai off);

realizācijas komandas:

- /nospyall – Prolog interpretatorā dzēs visus spy points;

- /spy Pred[/Arity] – Prolog interpretatorā uzstāda spy point uz uzdotu predikātu;

- /t – izeja no DES bez izejas no Prolog.

14

Page 15: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

4. DES funkcionalitāte

Relāciju funkcijas:

- not(a) – negācija;

- lj(a1,a2,a3) – left outer join relācijām a1 (kreisa relācija) un a2 (laba relācija), ar

kondīciju a3;

- rj(a1,a2,a3) – left outer join relācijām a1 (kreisa relācija) un a2 (laba relācija), ar

kondīciju a3;

- fj(a1,a2,a3) – full outer join relācijām a1 (kreisa relācija) un a2 (laba relācija), ar

kondīciju a3.

Agregācijas funkcijas:

- sum(X) – kumulatīva summa;

- count(X) – elementu skaits;

- min(X) – minimālais elements;

- max(X) – maksimālais elements;

- avg(X) – vidējais;

- times(X) – visu elementu reizinājums.

Predikāti:

- group_by(Query, Variables, GroupCondition) – predikāts, grupē pēc GroupCondition

Query kontekstā. Variables ir iespējamas mainīgu vērtības;

- sum(Query, Variables, GroupCondition) – kumulatīva summa;

- count(Query, Variables, GroupCondition) – elementu skaits;

- min(Query, Variables, GroupCondition) – minimālais elements;

- max(Query, Variables, GroupCondition) – maksimālais elements;

- avg(Query, Variables, GroupCondition) – vidējais;

- times(Query, Variables, GroupCondition) – visu elementu reizinājums;

- is_null(Term) – pārbauda uz nulli;

- is_not_null(Term) – pārbauda uz ne nulli.

:- type(relation, [type1, type2, ...]) – uzstāda relācijas parametru tipus:

varchar

string

Nedefinēta garuma

rinda

char(N)

varchar(N)Rinda ar garumu N

15

Page 16: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

integer

intVesels skaitlis

float

real

Skaitlis ar peldošo

punktu

:-pk(relation, [field]) – uzstāda relācijā primāro atslēgu.

:-fk(relation 1, [field1], relation 2, [field2]) – uzstāda kā ārējo atslēgu relācijā relation1

kolonnu field1 un saista to ar primāro atslēgu field2 relācijā relation2.

Pārbaudēs:

Šāds SQL vaicājums:

CREATE TABLE t(c INT CHECK (c BETWEEN 0 AND 10)),

izmantojot DES, var būt pierakstīts sekojošā veidā:

:-type(t,[c:int])

:-t(X),(X<0;X>10)

SQL aritmētiskie operatori:

• \X – bitu negācija (X ir vesels skaitlis);

• -X negatīva X vērtība;

• X ** Y – X pakāpē Y;

• X ^ Y – X pakāpē Y;

• X * Y – reizinājums;

• X / Y – reālo skaitļu dalīšana;

• X + Y – summēšana;

• X - Y – atņemšana;

• X // Y – dalīšanas vesela daļa;

• X rem Y – dalīšanas atlīkums;

• X \/ Y – bitu disjunkcija;

• X /\ Y – bitu konjunkcija;

• X # Y bitu operācija „VAI”;

• X << Y – nobīde pa kreisi uz Y vietām;

• X >> Y – nobīde pa labi uz Y vietām.

Aritmētiskas funkcijas

• sqrt(X) – kvadrātsakne;

• log(X) – naturālais logaritms;

• ln(X) – naturālais logaritms;

16

Page 17: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

• log(X,Y) – logaritms pēc bāzes Y.

• sin(X) – sinuss;

• cos(X) – kosinuss;

• tan(X) – tangenss;

• cot(X) – kotangenss;

• asin(X) – arksinuss;

• acos(X) – arkkosinuss;

• atan(X) – arktangenss;

• acot(X) – arkkotangenss;

• abs(X) – modulis;

• float(X) – reālais skaitlis;

• integer(X) – vesels skaitlis;

• sign(X) – skaitļa zīme (-1 ja negatīvs, 0 ja vienāds ar nulli un 1 ja pozitīvs);

• gcd(X,Y) – lielākais kopējais dalītājs;

• min(X,Y) – minimāls skaitlis;

• max(X,Y) – maksimāls skaitlis;

• truncate(X) – tuvākais vesels skaitlis starp X un 0;

• float_integer_part(X) – reālais veselas daļas skaitlis, tas pats, kas float(integer(X));

• float_fractional_part(X) – frakcionāla daļa;

• round(X) – tuvākais pie X vesels skaitlis;

• floor(X) – noapaļošana uz leju;

• ceiling(X) – noapaļošana uz augšu.

17

Page 18: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

5. Datu glabāšana

Dati glabājas MySQL datubāzes tabulās. Tabulu izveidošanai un datu ievadei tiek

izmantota SQL valoda. Lai to izpildītu, ir jāienāk SQL režīmā, ievadot komandu /sql.

. attēlā ir parādīta tabulas table1 izveidošana un aizpildīšana ar datiem.

10. att. Tabulas izveidošana

Lai pārbaudītu DES darbības rezultātu tika veikts SQL vaicājums, lai iegūtu visus

tabulas table1 ierakstus (skat. . att.).

11. att. Tabulas saturs

18

Page 19: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

19

Page 20: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

6. Likumu glabāšana

Likumi netiek saglabāti datubāzē un ir pieejami tikai pašreizējas sesijas laikā. Lai

izmantotu to pašu likumu kopu pēc sistēmas pārstartēšanas, ir jāsaglabā likumus failā ar

komandas /save_ddb palīdzību un nākošajā sesijā to var atjaunot ar komandu /consult.

12. att. Skata izveidošana

DES atļauj izveidot arī skatus relāciju datubāzes tabulām (skat. . att.).

13. att. Likumu pārbaude

MySQL tabulas arī var izmantot kā likumus (skat. . att.), ievadot to formāta

TABLULAS_VĀRDS(VĒRTĪBA_1, ...). To pašu var izdarīt arī ar skatiem (skat. . att.).

20

Page 21: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

14. att. Skata izmantošana

Izmantojot komandu /assert, tika pievienots likums, kas pārbauda, vai eksistē tāds

ieraksts tabulā table1 (skat. . att.).

15. att. Likuma pievienošana

21

Page 22: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

. attēlā ir redzama likuma pārbaude – tabulā table1 eksistē ieraksts ar id=1 un sistēma

neko neizvadīja, id=9 neeksistē un sistēma to paradīja.

16. att. Likuma pārbaude

. attēlā ir redzams fails ar likumiem, kuri pārbauda radinieku attiecības.

17. att. Fails ar likumiem

Šis fails tika ielādēts ar komandu /consult. Likuma izsaukšana notiek sekojošā formātā:

LIKUMA_NOSAUKUMS(ATRIBŪTS1, ...). . attēlā ir redzams, kā grandparent(a,d) nav

patiesība, kā arī bija uzrakstīts likumos, tomēr grandparent(a,c) ir patiesība.

22

Page 23: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

18. att. Likumu ielāde un pārbaude

Lai sīkāk apskatītu loģiku, pastāv iespēja trasēt likumus ar komandas /trace_datalog

komandas palīdzību (skat. . att.). Sistēma parādīs, kurus predikātus tā apskata un kādā secībā.

23

Page 24: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

19. att. Trasēšana

Pastāv arī iespēja atkļūdot loģiku (skat. . att.), izsaucot komandu /debug_datalog. Šajā

režīmā lietotājs var solis pēc soļa redzēt pieņemtus lēmumus un ietekmēt tām.

24

Page 25: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

20. att. Atkļūdošanas process

25

Page 26: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

7. Deduktīvo datubāzu piemērs.

Lai nodemonstrētu deduktīvo datubāzu darbības piemēru, tika izveidotas 3 tabulas no

skolas problemsfēras. Tabula teachers glabā informāciju par skolotājiem (skolotāja

identifikatoru un vārdu), tabula scholars glabā informāciju par skolēniem (skolēna

identifikatoru un vārdu). Tabulu izveidošana ir parādīta . attēlā.

21. att. Tabulas ar datiem

. attēlā ir parādīta datu ievade šajās tabulās.

22. att. Datu ievade

Trešā tabula ir t2s. Šajā tabulā glabājas, kurš skolotājs, kuru skolēnu māca (skat. . att.).

23. att. Trešā tabula un datu ievade

. attēlā ir parādīts fails ar likumu, kurš pārbauda pēc diviem ievadītiem vārdiem, vai šīs

skolotājs māca šo skolēnu vai nē.

26

Page 27: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

24. att. Likuma definēšana

. attēlā ir redzama izveidota likuma pārbaude. Skolotājs teacher 1 māca skolēnu scholar

1, un sistēma to godīgi parādīja, tomēr šīs skolotājs nemāca skolēnu shlolar 6, un sistēma arī

godīgi par to atzītas.

25. att. Likuma pārbaude

Visam, kas bija aprakstīts augšā, tika izmantots Datalog interpretators. Tomēr, DES

atbalsta arī Prolog interpretatoru. likumu izsaukšana notiek tapāt, rezultāts arī sakrita, tomēr

sistēmas izvade atšķiras (skat. . att.), vienkārši pasākot, vai apgalvojums ir patiess (yes), vai

nē (no).

26. att. Likuma pārbaude Prolog režīmā

27

Page 28: Apskatītā sistēma - Web viewLinux. izpildāmiem failiem. Šī sistēma nav pilna deduktīva datubāze, tā neatbalsta datu glabāšanu (persistency), transakcijas, drošību, tā

8. Secinājumi

Deduktīvas datubāzes ir spēcīgs rīks datu pārbaudei un analizēšanai. DES atļauj

programmēt loģiku, izmantojot Datalog un Prolog valodas, kā arī strādāt ar ārējam DBVS,

tādām kā Oracle, PostgreSQL, MySQL utt. un izmantot Datalog/Prolog valodas iespējas datu

analizēšanā un rezultātu iegūšanā.

Diemžēl DES ir tikai apmācoša sistēma un neatbalsta dažas funkcijas, tādas kā datu

glabāšanu (persistency), transakcijas un drošību. Tomēr, tā ir multiplatformu un to var lietot

gan Windows, gan Unix vidē. Arī, DES atļauj iegūt datus no DBVS ne tikai ar metožu

izsaukumu palīdzību, bet arī izmantojot SQL valodu, kā arī piedāvā programmas atkļūdošanas

un trasēšanas iespēju.

Šīs darbs deva iespēju dziļāk iepazīties ar deduktīvo datubāzu principiem un idejām.

28