RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un...

61
Dati, fakti, likumi un vaicājumi Dati: Jānis, Jūlijs, 75, sieviete Fakti: Jūlijs ir Jāņa vecāks vecāki( Jūlijs, Jānis) Jānis ir 40 gadus vecs vīrietis persona(Jānis, 40, vīrietis) Likumi: māte( X, Y) : - persona( X, , sieviete), vecāki( X, Y). Vaicājumus var pierakstīt sekojoši: ? - vecāki(Inese, X). Kam vecāks ir Inese? Atbilde Liene un Zane Tabula Vecāki Tēva vai mātes vārds (VEC) Bērna vārds (BER) Jūlijs Jānis Jūlijs Rasma Anita Jānis Anita Rasma Jānis Liene Jānis Zane Inese Zane Inese Liene Tabula Personas Vārds (VAR) Vecums (GADI) Dzimums (DZIM) Jūlijs 75 vīrietis Anita 70 sieviete Jānis 40 vīrietis Rasma 50 sieviete Inese 30 sieviete Liene 5 sieviete Zane 3 sieviete Monvīd 60 vīrietis

Transcript of RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un...

Page 1: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Dati, fakti, likumi un vaicājumi

Dati: Jānis, Jūlijs, 75, sieviete

Fakti: Jūlijs ir Jāņa vecāks vecāki( Jūlijs, Jānis)

Jānis ir 40 gadus vecs vīrietis persona(Jānis, 40, vīrietis)

Likumi: māte( X, Y) : - persona( X, , sieviete), vecāki( X, Y).

Vaicājumus var pierakstīt sekojoši:? - vecāki(Inese, X). Kam vecāks ir Inese? Atbilde Liene un Zane

? - vecāki( Y , Jānis). Kas ir Jāņa vecāki? Atbilde Jūlijs un Anita

? - vecāki( Y, Jānis), persona( Y, , sieviete). Kāda sieviete ir Jāņa vecāks?

Atbilde Anita

? - māte( Y, Jānis). Kas ir Jāņa māte? Atbilde Anita

Tabula VecākiTēva vai

mātes vārds(VEC)

Bērna vārds(BER)

Jūlijs JānisJūlijs RasmaAnita JānisAnita RasmaJānis LieneJānis ZaneInese ZaneInese LieneMonvīds IneseAnna Inese

Tabula PersonasVārds(VAR)

Vecums(GADI)

Dzimums(DZIM)

Jūlijs 75 vīrietisAnita 70 sievieteJānis 40 vīrietisRasma 50 sievieteInese 30 sievieteLiene 5 sievieteZane 3 sievieteMonvīds 60 vīrietisAnna 60 sieviete

Page 2: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Faktu un likumu bāze

Predikāti - fakti

dzimums(X, Y) dzimums(Anita, sieviete) dzimums(Jānis, vīrietis)

vecāks(X, Y) vecāks(Jānis, Zane) vecāks(Inese, Zane)

Predikāti - likumi

māte(M,X): vecāks(M,X), dzimums(M, sieviete)

tēvs(T,X): vecāks(T,X), dzimums(T, vīrietis)

dēls(D,X): vecāks(X,D), dzimums(D, vīrietis)

meita(M, X): vecāks(X,M), dzimums(M, sieviete)

brālis(B,X): māte(M, B), māte(M,X), tēvs(T, B), tēvs(T, X), dzimums(B, vīrietis)

māsa(S,X): māte(M, S), māte(M,X), tēvs(T, S), tēvs(T, X), dzimums(S, sieviete)

vecmamma(V, X): vecāks(V, Y), vecāks(Y, X), dzimums(V, sieviete)

vecpaps(V, X): vecāks(V, Y), vecāks(Y, X), dzimums(V, vīrietis)

2

Page 3: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Rekursija predikātu likumos

vecvecāks(VV, X): vecāks(VV, Y), vecāks(Y, X)

vecvecvecāks(VVV, X): vecāks(VVV, VV), vecāks(VV, V), vecāks(V, X)

sencis (S, X): vecāks (S, X) Vecāku iegūšana

sencis (S, X): vecāks (V, X), vecāks (S, V) Vec-vecāki

sencis (S, X): vecāks (V, X), vecāks (VV, V), vecāks (S, VV) Vec-vec-vecāki

Likums izmantojot rekursiju:

sencis(S, X): vecāks(S, X)

sencis(S, X): sencis(Z, X), vecāks(S, Z)

3

Sākotnējie fakti

Jauniegūtiefakti

Page 4: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Piemērs deduktīvās datu bāzes veidošanai

Vaicājums: brālis(B, Rasma)

Vai ir fakti brālis(X, Y)? nav Vai ir likums brālis(X, Y)?

Likums: brālis(X, Y): māte(M, X), māte(M,Y), tēvs(T, X), tēvs(T, Y), dzimums(X, vīrietis)brālis(B, Rasma): māte(M, B), māte(M, Rasma), tēvs(T, B), tēvs(T, Rasma), dzimums(B, vīrietis)

Vai ir fakti māte(X,Y)? nav Vai ir likums māte(X,Y)?Likums: māte(X,Y): vecāks(X,Y), dzimums(X, sieviete)māte(M, B): vecāks(M, B), dzimums(M, sieviete)

Vai ir fakti māte(X,Y)? nav Vai ir likums māte(X,Y)?Likums: māte(X,Y): vecāks(X,Y), dzimums(X, sieviete)māte(M, Rasma): vecāks(M, Rasma), dzimums(M, sieviete)

Vai ir fakti tēvs(X,Y)? nav Vai ir likums tēvs(X,Y)?Likums: tēvs(X,Y): vecāks(X,Y), dzimums(X, vīrietis)tēvs(T, B): vecāks(T, B), dzimums(T, vīrietis)

Vai ir fakti tēvs(X,Y)? nav Vai ir likums tēvs(X,Y)?Likums: tēvs(X,Y): vecāks(X,Y), dzimums(X, vīrietis)tēvs(T, Rasma): vecāks(T, Rasma), dzimums(T, vīrietis)

Vai ir fakti dzimums(X,Y)? Jā Fakti: dzimums(X,Y)dzimums(B, vīrietis)

4

Page 5: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Likumu un faktu predikātu pakārtotības koks

brālis(B, Rasma)

māte(M, B), māte(M, Rasma), tēvs(T, B), tēvs(T, Rasma), dzimums(B, vīrietis)

vecāks(M, B), dzimums(M, sieviete) vecāks(M, Rasma), dzimums(M, sieviete) vecāks(T, B), dzimums(T, vīrietis) vecāks(T, Rasma), dzimums(T, vīrietis)

5

Page 6: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Koka lapu faktu predikāti

vecāks(M, B)dzimums(M, sieviete)vecāks(M, Rasma)dzimums(M, sieviete)vecāks(T, B)dzimums(T, vīrietis)vecāks(T, Rasma)dzimums(T, vīrietis)dzimums(B, vīrietis)

Koka lapu faktu predikāti bez dublikātiemvecāks(M, B)dzimums(M, sieviete)vecāks(M, Rasma)vecāks(T, B)dzimums(T, vīrietis)vecāks(T, Rasma)dzimums(B, vīrietis)

VECAKS(M, B) SK(M, B, sieviete) SK(M, B) SK(M,T,B) SK(M,T,B) DZIMUMS(M, sieviete)VECAKS(M, Rasma)

VECAKS (T, B) SK(T, B, vīrietis) SK(T, B)DZIMUMS (T, vīrietis)VECAKS (T, Rasma)DZIMUMS(B, vīrietis)

6

Page 7: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Pakārtoto vaicājumu (skatu) rezultāti

Rezultātu vērtības

7

dzimumsVAR DZIMJūlijs vīrietisAnita sievieteJānis vīrietisRasma sievieteInese vīrietisLiene sievieteZane sievieteMonvīds vīrietis

vecāksVEC BERJūlijs JānisJūlijs RasmaAnita JānisAnita RasmaJānis LieneJānis ZaneInese LieneInese ZaneMonvīds Inese

VAR (M) DZIM (sieviete) VEC (M) BER (B)Anita sieviete Anita JānisAnita sieviete Anita RasmaInese sieviete Inese LieneInese sieviete Inese Zane

VAR (M) BER (B) VEC (M) BER (Rasma)Anita Rasma Anita RasmaAnita Jānis Anita Rasma

VAR (T) DZIM (vīrietis) VEC (T) BER (B)Jūlijs vīrietis Jūlijs JānisJūlijs vīrietis Jūlijs RasmaJānis vīrietis Jānis LieneJānis vīrietis Jānis Zane

VAR (M) BER (B) VAR (T) BER (B)Anita Rasma Jūlijs RasmaAnita Jānis Jūlijs Jānis

VAR (T) BER (B) VEC (T) BER (Rasma)Jūlijs Rasma Jūlijs RasmaJūlijs Jānis Jūlijs Rasma

BER (B) VAR (M) VAR (T) VAR (B) DZIM (vīrietis)Jānis Anita Jūlijs Jānis vīrietis

Page 8: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Dināmiskā SQL izmantošana kopējā vaicājuma realizēšanai

declarev_1 varchar2(200);v_2 varchar2(200);v_3 varchar2(200);v_4 varchar2(200);v_5 varchar2(400);v_6 varchar2(400);v_7 varchar2(800);m1 varchar2(10); m2 varchar2(10); m3 varchar2(10); beginv_1 := '(select P1.NOS as B, P2.VEC_NOS as M from DZIMUMS P1, VECAKS P2where P1. NOS = P2.BERN_NOS and P1.DZIM = ''virietis'')';v_2 := '(select P3.NOS as M from DZIMUMS P3, VECAKS P4where P3.NOS = P4.VEC_NOS and P3.DZIM = ''sieviete'' and P4.BERN_NOS = ''Rasma'')';v_3 := '(select P5.VEC_NOS as T, P5.BERN_NOS as B from VECAKS P5, DZIMUMS P6where P5.VEC_NOS = P6.NOS and P6.DZIM = ''virietis'')';v_4 := '(select P7.VEC_NOS as T from VECAKS P7 where P7.BERN_NOS = ''Rasma'')';

v_5 := '(select P8.B, P8.M from '|| v_1 || ' P8, ' || v_2 || ' P9 where P8.M = P9.M )';v_6 := '(select P10. T, P10.B from ' || v_3 || ' P10, ' || v_4 || ' P11 where P10.T = P11.T )';

v_7 := '(select P12.B, P12.M, P13.T from ' || v_5 || ' P12, ' || v_6 || 'P13 where P12.B = P13.B)'; execute immediate v_7 into m1, m2, m3; DBMS_OUTPUT.PUT_LINE(m1 || ' ' || m2 || ' ' || m3);end;

Juris Inese Janis Rezultāts

8

Page 9: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Faktu predikātu savienošana

vecāks(M, B) Mdzimums(M, sieviete) vecāks(M, Rasma)

B

vecāks(T, B) Tdzimums(T, vīrietis) vecāks(T, Rasma)

B dzimums(B, vīrietis)

Faktu predikāti

dzimums(X,Y) vecāks(Z,Q)

9

VEC_NOS BERN_NOS------------------------------------Anita JanisAnna IneseInese RasmaInese Juris

VEC_NOS BERN_NOS------------------------------------Inese JurisInese Rasma

VEC_NOS BERN_NOS------------------------------ --------Jūlijs JanisMonvids IneseJanis RasmaJanis Juris

VEC_NOS BERN_NOS------------------------------ ---------Janis JurisJanis Rasma

VEC_NOS BERN_NOS------------------------------ --------Inese RasmaInese Juris

BERN_NOS------------------Juris

Page 10: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

select M.BERN_NOS

from (select K.VEC_NOS, K.BERN_NOS from

(select C.VEC_NOS, C.BERN_NOS from

(select A.VEC_NOS, A.BERN_NOS from VECAKS A, DZIMUMS B where A.VEC_NOS = B.NOS and B.DZIM = 'sieviete') C,

(select D.VEC_NOS, D.BERN_NOS from VECAKS D where D.BERN_NOS = 'Rasma') E

where C.VEC_NOS = E.VEC_NOS) K,

(select F.VEC_NOS, F.BERN_NOS from

(select G.VEC_NOS, G.BERN_NOS from VECAKS G, DZIMUMS H where G.VEC_NOS = H.NOS and H.DZIM = 'virietis') F,

(select I.VEC_NOS, I.BERN_NOS from VECAKS I where I.BERN_NOS = 'Rasma') J

where F.VEC_NOS = J.VEC_NOS) L

where K.BERN_NOS = L.BERN_NOS) M, DZIMUMS N

where M.BERN_NOS = N.NOS and N.DZIM = 'virietis';

Faktu izgūšana un sasaiste lietojot select ... from (...), (...) ... konstrukciju

10

Page 11: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Deduktīvās datu bāzes datu bāzes tabulas un skatiTabula PERSONAS

NUM NOSAUKUMS DZIMUMS1 Jūlijs vīrietis2 Anita sieviete3 Monvīds vīrietis4 Anna sieviete5 Jānis vīrietis6 Inese sieviete7 Rasma sieviete8 Juris vīrietis

create table PERSONAS(NUM number Primary key,NOSAUKUMS varchar2(30),DZIMUMS char(8));

insert into PERSONAS values(1, 'Julijs', 'virietis');insert into PERSONAS values(2, 'Anita', 'sieviete');insert into PERSONAS values(3, 'Monvids', 'virietis');insert into PERSONAS values(4, 'Anna', 'sieviete');insert into PERSONAS values(5, 'Janis', 'virietis');insert into PERSONAS values(6, 'Inese', 'sieviete');insert into PERSONAS values(7, 'Rasma', 'sieviete');insert into PERSONAS values(8, 'Juris', 'virietis');

create view DZIMUMS(NOS, DZIM) as

select A.NOSAUKUMS, A.DZIMUMS

from PERSONAS A;

create or replace view VECAKS(VEC_NOS, BERN_NOS) as

select A.NOSAUKUMS, B.NOSAUKUMS

from PERSONAS A, PERSONAS B, VECAKI_S C

where A.NUM = C.V_NUM and B.NUM = C.P_NUM;

11

Tabula VECAKI_SP_NUM V_NUM

8 58 67 57 66 46 35 25 1

Skats DZIMUMSNOS DZIMJulijs virietisAnita sievieteMonvīds virietisAnna sievieteJānis virietisInese sievieteRasma sievieteJuris virietis

Skats VECAKSVEC_NOS BERN_NOSJulijs JanisAnita JanisMonvīds IneseAnna IneseJānis RasmaInese RasmaJānis JurisInese Juris

create table VECAKI_S(P_NUM number,V_NUM number);insert into VECAKI_S values(8, 5);insert into VECAKI_S values(8, 6);insert into VECAKI_S values(7, 5);insert into VECAKI_S values(7, 6);insert into VECAKI_S values(6, 4);insert into VECAKI_S values(6, 3);insert into VECAKI_S values(5, 2);insert into VECAKI_S values(5, 1);

Page 12: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Predikāti - fakti

dzimums(X, Y) dzimums(X, sieviete) dzimums(X, vīrietis)

vecāks(X, Y) vecāks(Jānis, Rasma) vecāks(Inese, Rasma)

Predikāti - likumi

māte(M,X): vecāks(M,X), dzimums(M, sieviete)

tēvs(T,X): vecāks(T,X), dzimums(T, vīrietis)

dēls(D,X): vecāks(X,D), dzimums(D, vīrietis)

meita(M, X): vecāks(X,M), dzimums(M, sieviete)

brālis(B,X): māte(M, B), māte(M,X), tēvs(T, B), tēvs(T, X), dzimums(B, vīrietis)

Atribūts: 1) noteikta vērtība; 2) jebkura vērtība; 3) vērtība sasaistei.

12

1.likums māte 1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

2.likums tēvs 1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

3.likums dēls 1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

4.likums meita 1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

5.likums brālis 1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

1.fakts dzimums 1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

2.fakts vecāks 1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

Jauni fakti

1.atribūts 2. atribūts 3.atribūts Saites ar likumiem un faktiem

Atribūtu saites

Pamatdatu bāze Uzdevuma datu bāze

Page 13: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Izveduma mehānisma realizēšana

create table IZVEDUMA_KOKS(PRED_NUM number,PRED_NOS varchar2(20),TIPS varchar2(20),ATR_SK number,ATR1 varchar2(20),ATR2 varchar2(20),ATR3 varchar2(20));

create sequence VIRKNE_1start with 1increment by 1nomaxvalue;

create or replace package IZVEDUMA_MEH issubtype TEKSTS is varchar2(20);procedure VECAKS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure DZIMUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure MATE(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure TEVS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure DELS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure MEITA(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure BRALIS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure VAICAJUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS, atr3 IN OUT TEKSTS, atr4 IN OUT TEKSTS);end;

create or replace package body IZVEDUMA_MEH asprocedure VECAKS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) isbegin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'VECAKS', 'fakts', 2, atr1, atr2, '');end;procedure DZIMUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) isbegin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'DZIMUMS', 'fakts', 2, atr1, atr2, '');end;procedure MATE(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'sieviete';begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'MATE', 'likums', 2, atr1, atr2, '');VECAKS(atr1, atr2);DZIMUMS(atr1, m1);end;

13

Page 14: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

procedure TEVS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'virietis' ;begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'TEVS', 'likums', 2, atr1, atr2, '');VECAKS(atr1, atr2);DZIMUMS(atr1, m1);end;procedure DELS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'virietis' ;begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'DELS', 'fakts', 2, atr1, atr2, '');VECAKS(atr2, atr1);DZIMUMS(atr1, m1);end;procedure MEITA(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'sieviete' ;begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'MEITA', 'fakts', 2, atr1, atr2, '');VECAKS(atr2, atr1);DZIMUMS(atr1, m1);end;procedure BRALIS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20);begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'BRALIS', 'likums', 2, atr1, atr2, '');m1 := 'M';MATE(m1, atr1);MATE(m1, atr2);m1 := 'T';TEVS(m1, atr1);TEVS(m1, atr2);m1 := 'virietis';DZIMUMS(atr1, m1);end;procedure VAICAJUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS, atr3 IN OUT TEKSTS, atr4 IN OUT TEKSTS) ispredik varchar2(20);begincase atr1when 'BRALIS' thenIZVEDUMA_MEH.BRALIS(atr2, atr3);when 'MATE' thenIZVEDUMA_MEH.MATE(atr2, atr3);when 'TEVS' thenIZVEDUMA_MEH.TEVS(atr2, atr3);when 'VECAKS' thenIZVEDUMA_MEH.VECAKS(atr2, atr3);when 'DZIMUMS' then

14

Page 15: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

IZVEDUMA_MEH.DZIMUMS(atr2, atr3);end case;end;end;

delete IZVEDUMA_KOKS;

drop sequence VIRKNE_1;

create sequence VIRKNE_1start with 1increment by 1nomaxvalue;

declarepar1 varchar2(20) := 'BRALIS';par2 varchar2(20) := 'X';par3 varchar2(20) := 'Rasma';par4 varchar2(20) := '';beginIZVEDUMA_MEH.VAICAJUMS(par1, par2, par3, par4);end;

column PRED_NUM format 99999999;column PRED_NOS format a10;column TIPS format a10;column ATR_SK format 999999999;column ATR1 format a10;column ATR2 format a10;column ATR3 format a10;

select * from IZVEDUMA_KOKS;PRED_NUM PRED_NOS TIPS ATR_SK ATR1 ATR2 ATR3------------------------------------------------------------------------------------------------------ 1 BRALIS likums 2 X Rasma 2 MATE likums 2 M X 3 VECAKS fakts 2 M X 4 DZIMUMS fakts 2 M sieviete 5 MATE likums 2 M Rasma 6 VECAKS fakts 2 M Rasma 7 DZIMUMS fakts 2 M sieviete 8 TEVS likums 2 T X 9 VECAKS fakts 2 T X 10 DZIMUMS fakts 2 T virietis 11 TEVS likums 2 T Rasma 12 VECAKS fakts 2 T Rasma 13 DZIMUMS fakts 2 T virietis 14 DZIMUMS fakts 2 X virietis

15

Page 16: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Vaicājums (Kas ir Rasmas brālis (-ļi)?)

Predikāts 1.atribūts 2.atribūts 3.atribūtsBRALIS B Rasma

Likumu definējumu tabulaLikumanumurs

Sastāv-dalas n.

Lik. vai fakts

Predikāts - likums

Pakārtotie predikāti

Atr.sk. 1.atr. 2.atr. 3.atr.

1 0 L BRALIS 2 B X1 1 L MATE 2 M B1 2 L MATE 2 M X1 3 L TEVS 2 T B1 4 L TEVS 2 T X1 5 F DZIMUMS 2 B virietis2 0 L MATE 2 X Y2 1 F VECAKS 2 X Y2 2 F DZIMUMS 2 X sieviete3 0 L TEVS 2 X Y3 1 F VECAKS 2 X Y3 2 F DZIMUMS 2 X virietis4 0 L DELS 2 X Y4 1 F VECAKS 2 Y X4 2 F DZIMUMS 2 X virietis5 0 L MEITA 2 X Y5 1 F VECAKS 2 Y X5 2 F DZIMUMS 2 X sieviete

Izveduma koka tabulaLik. vai fakts

Predikāts Atr.sk. 1.atr. 2.atr. 3.atr.

L MATE 2 M B

L MATE 2 M RasmaL TEVS 2 T B

16

Page 17: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

L TEVS 2 T RasmaF DZIMUMS 2 B virietisF VECAKS 2 M BF DZIMUMS 2 M sievieteF VECAKS 2 M RasmaF DZIMUMS 2 M sievieteF VECAKS 2 T BF DZIMUMS 2 T virietisF VECAKS 2 T RasmaF DZIMUMS 2 T sieviete

Izveduma koka lapu faktu predikāti (eksistē dublikāti)

Predikāts Atr.sk. 1.atr. 2.atr. 3.atr.DZIMUMS 2 B virietisVECAKS 2 M BDZIMUMS 2 M sievieteVECAKS 2 M RasmaDZIMUMS 2 M sievieteVECAKS 2 T BDZIMUMS 2 T virietisVECAKS 2 T RasmaDZIMUMS 2 T vīrietis

Dublējošo predikātu izslēgšana (vienas un tās pašas atribūtu vērtības)

1 DZIMUMS 2 B virietis2 VECAKS 2 M B3 DZIMUMS 2 M sieviete4 VECAKS 2 M Rasma5 VECAKS 2 T B6 DZIMUMS 2 T virietis7 VECAKS 2 T Rasma

17

Page 18: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Izveduma koka faktu predikātu savienošana

Predikāts Atr.skaits 1.atr. 2.atr. 3.atr. Savienojums arP1 DZIMUMS 2 B virietis P2P2 VECAKS 2 M B P1P3 DZIMUMS 2 M sieviete P4P4 VECAKS 2 M Rasma P3P5 VECAKS 2 T B P6P6 DZIMUMS 2 T virietis P5P7 VECAKS 2 T Rasma P7------------------------------------------------------------------------------------------------------------------------P1 DZIMUMS 2 B virietis P2P2 VECAKS 2 M B P1

P3 DZIMUMS 2 M sieviete P4P4 VECAKS 2 M Rasma P3

P5 VECAKS 2 T B P6P6 DZIMUMS 2 T virietis P5

P7 VECAKS 2 T Rasma P7

-----------------------------------------------------------------------------------------------------------------------P8 2 B M P9P9 1 M P8P10 2 T B P11P11 1 T P10

-----------------------------------------------------------------------------------------------------------------------P8 2 B M P9P9 1 M P8

P10 2 T B P11P11 1 T P10

------------------------------------------------------------------------------------------------------------------------P12 2 B M P13P13 2 T B P12

------------------------------------------------------------------------------------------------------------------------P12 2 B M P13P13 2 T B P12

-------------------------------------------------------------------------------------------------------------------------

18

Page 19: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

P14 2 B M T

Faktu predikātu savienojumu realizējošie SELECT vaicājumi

(select P1.NOS as B, P2.VEC_NOS as M from DZIMUMS P1, VECAKS P2where P1. NOS = P2.BERN_NOS and P1.DZIM = 'virietis') P8

(select P3.NOS as M from DZIMUMS P3, VECAKS P4where P3.NOS = P4.VEC_NOS and P3.DZIM = 'sieviete' and P4.BERN_NOS = 'Rasma') P9

(select P5.VEC_NOS as T, P5.BERN_NOS as B from VECAKS P5, DZIMUMS P6where P5.VEC_NOS = P6.NOS and P6.DZIM = 'virietis') P10

(select P7.VEC_NOS as T from VECAKS P7 where P7.BERN_NOS = 'Rasma') P11---------------------------------------------------------------------------------------------------------------------------(select P8.B, P8.Mfrom ( ... ) P8, ( ... ) P9where P8.M = P9.M ) P12

(select P10. T, P10.Bfrom (...) P10, (...) P11where P10.T = P11.T ) P13 ---------------------------------------------------------------------------------------------------------------------------(select P12.B, P12.M, P13.Tfrom ( ... ) P12, ( ... ) P13where P12.B = P13.B);

19

Page 20: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Dināmiskā SQL izmantošana kopējā vaicājuma realizēšanai

declarev_1 varchar2(200);v_2 varchar2(200);v_3 varchar2(200);v_4 varchar2(200);v_5 varchar2(400);v_6 varchar2(400);v_7 varchar2(800);m1 varchar2(10); m2 varchar2(10); m3 varchar2(10); beginv_1 := '(select P1.NOS as B, P2.VEC_NOS as M from DZIMUMS P1, VECAKS P2where P1. NOS = P2.BERN_NOS and P1.DZIM = ''virietis'')';v_2 := '(select P3.NOS as M from DZIMUMS P3, VECAKS P4where P3.NOS = P4.VEC_NOS and P3.DZIM = ''sieviete'' and P4.BERN_NOS = ''Rasma'')';v_3 := '(select P5.VEC_NOS as T, P5.BERN_NOS as B from VECAKS P5, DZIMUMS P6where P5.VEC_NOS = P6.NOS and P6.DZIM = ''virietis'')';v_4 := '(select P7.VEC_NOS as T from VECAKS P7 where P7.BERN_NOS = ''Rasma'')';

v_5 := '(select P8.B, P8.M from '|| v_1 || ' P8, ' || v_2 || ' P9 where P8.M = P9.M )';v_6 := '(select P10. T, P10.B from ' || v_3 || ' P10, ' || v_4 || ' P11 where P10.T = P11.T )';

v_7 := '(select P12.B, P12.M, P13.T from ' || v_5 || ' P12, ' || v_6 || 'P13 where P12.B = P13.B)'; execute immediate v_7 into m1, m2, m3; DBMS_OUTPUT.PUT_LINE(m1 || ' ' || m2 || ' ' || m3);end;

Juris Inese Janis Rezultāts

20

Page 21: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

filtrēšanas vērtības savienošanas vērtības

-----------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------

21

Skats DZIMUMSNOSAUKUMS DZIMUMSJulijs virietisAnita sievieteMonvids virietisAnna sievieteJanis virietisInese sievieteRasma sievieteJuris virietis

Skats VECAKSVEC_NOS BERN_NOSJulijs JanisAnita JanisMonvids IneseAnna IneseJanis RasmaInese RasmaJanis JurisInese Juris

NOSAUKUMS (B) DZIMUMS (vīrietis) VEC_NOS (M) BERN_NOS (B)Janis virietis Julijs JanisJanis virietis Anita JanisJuris virietis Janis JurisJuris virietis Inese Juris

NOSAUKUMS (M) DZIMUMS (sieviete) VEC_NOS (M) BERN_NOS (Rasma)Inese sieviete Inese Rasma

NOSAUKUMS (T) DZIMUMS (vīrietis) VEC_NOS (T) BERN_NOS (B)Julijs virietis Julijs JanisMonvids virietis Monvids IneseJanis virietis Janis RasmaJanis virietis Janis Juris

VEC_NOS (T) BERN_NOS (Rasma)Janis RasmaInese Rasma

(B) (M) (M)Juris Inese Inese

(T) (B) (T)Janis Rasma JanisJanis Juris Janis

(B) (M) (T) (B)Juris Inese Janis Juris

(B) (M) (T)Juris Inese Janis

Pakārtoto vaicājumu rezultāti

Page 22: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Likumu tabulas veidošana datu bāzē

Tabula LIKUMI

L_N

UM

L_N

OS

SAST

_SK

AT

R_1

AT

R_2

AT

R_3

PRE

D_N

OS

PRE

D_T

IPS

AT

R_S

K

AT

R_1

AT

R_2

AT

R_3

1 BRALIS 5 #1 #2 NULL MATE L 2 M #1 NULLMATE L 2 M #2 NULLTEVS L 2 T #1 NULLTEVS L 2 T #2 NULLDZIMUMS F 2 #1 virietis NULL

2 MATE 2 #1 #2 NULL VECAKS F 2 #1 #2 NULLDZIMUMS F 2 #1 sieviete NULL

3 TEVS 2 #1 #2 NULL VECAKS F 2 #1 #2 NULLDZIMUMS F 2 #1 virietis NULL

4 DELS 2 #1 #2 NULL VECAKS F 2 #2 #1 NULLDZIMUMS F 2 #1 virietis NULL

5 MEITA 2 #1 #2 NULL VECAKS F 2 #2 #1 NULLDZIMUMS F 2 #1 sieviete NULL

22

Page 23: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Izveduma koka tabulas veidošana datu bāzē

Tabula VAICAJUMSP_NUM PRED ATR_1 ATR_2 ATR_31 BRALIS B Rasma NULL

Tabula IZVED_KOKS

L_N

UM

L_N

OS

SAST

_SK

AT

R_1

AT

R_2

AT

R_3

PRE

D_N

OS

PRE

D_T

IPS

AT

R_S

K

AT

R_1

AT

R_2

AT

R_3

1 BRALIS 5 #1 #2 NULL MATE L 2 M #1 NULLMATE L 2 M #2 NULLTEVS L 2 T #1 NULLTEVS L 2 T #2 NULLDZIMUMS F 2 #1 virietis NULL

2 MATE 2 #1 #2 NULL VECAKS F 2 #1 #2 NULLDZIMUMS F 2 #1 sieviete NULL

2 MATE 2 #1 #2 NULL VECAKS F 2 #1 #2 NULLDZIMUMS F 2 #1 sieviete NULL

3 TEVS 2 #1 #2 NULL VECAKS F 2 #1 #2 NULLDZIMUMS F 2 #1 virietis NULL

3 TEVS 2 #1 #2 NULL VECAKS F 2 #1 #2 NULLDZIMUMS F 2 #1 virietis NULL

23

Page 24: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

create or replace type SASTAVDALA as object ( PRED_NOS varchar2(20), PRED_TIPS char(1), ATR_SK number, ATR_1 varchar2(20), ATR_2 varchar2(20), ATR_3 varchar2(20));create or replace type SASTAVDALAS as table of SASTAVDALA;

create table LIKUMI( L_NUM number Primary key, L_NOS varchar2(20), SAST_SK number, ATR_1 varchar2(20), ATR_2 varchar2(20), ATR_3 varchar2(20), L_SAST SASTAVDALAS) nested table L_SAST store as PAKARTOTI_PREDIKATI;

insert into LIKUMI values(1, 'BRALIS', 5, '#1', '#2', NULL, SASTAVDALAS( SASTAVDALA('MATE', 'L', 2, 'M', '#1', NULL), SASTAVDALA('MATE', 'L', 2, 'M', '#2', NULL), SASTAVDALA('TEVS', 'L', 2, 'T', '#1', NULL), SASTAVDALA('TEVS', 'L', 2, 'T', '#2', NULL), SASTAVDALA('DZIMUMS', 'F', 2, '#1', 'virietis', NULL) ) );

insert into LIKUMI values(2, 'MATE', 2, '#1', '#2', NULL, SASTAVDALAS( SASTAVDALA('VECAKS', 'F', 2, '#1', '#2', NULL), SASTAVDALA('DZIMUMS', 'F', 2, '#1', 'sieviete', NULL))); insert into LIKUMI values(3, 'TEVS', 2, '#1', '#2', NULL, SASTAVDALAS( SASTAVDALA('VECAKS', 'F', 2, '#1', '#2', NULL), SASTAVDALA('DZIMUMS', 'F', 2, '#1', 'virietis', NULL)));

insert into LIKUMI values(4, 'DELS', 2, '#1', '#2', NULL, SASTAVDALAS( SASTAVDALA('VECAKS', 'F', 2, '#2', '#1', NULL), SASTAVDALA('DZIMUMS', 'F', 2, '#1', 'virietis', NULL)));

insert into LIKUMI values(5, 'MEITAS', 2, '#1', '#2', NULL, SASTAVDALAS( SASTAVDALA('VECAKS', 'F', 2, '#2', '#1', NULL), SASTAVDALA('DZIMUMS', 'F', 2, '#1', 'sieviete', NULL)));

24

Page 25: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

create table IZVED_KOKS( L_NUM number, L_NOS varchar2(20), SAST_SK number, ATR_1 varchar2(20), ATR_2 varchar2(20), ATR_3 varchar2(20), L_SAST SASTAVDALAS) nested table L_SAST store as PAKARTOTI_PREDIKATI_1;

create table VAICAJUMS(P_NUM number Primary key,PRED varchar2(20),ATR_1 varchar2(20),ATR_2 varchar2(20),ATR_3 varchar2(20));

insert into VAICAJUMS values(1, 'BRALIS', 'B', 'Rasma', NULL);

Substitūciju izdarīšana

declarem1 varchar2(800);m2 varchar2(800);beginm1:= 'insert into LIKUMI values(1, ''BRALIS'', 5, ''#1'', ''#2'', NULL, SASTAVDALAS( SASTAVDALA(''MATE'', ''L'', 2, ''M'', ''#1'', NULL), SASTAVDALA(''MATE'' , ''L'', 2, ''M'', ''#2'', NULL), SASTAVDALA(''TEVS'', ''L'', 2, ''T'', ''#1'', NULL), SASTAVDALA(''TEVS'', ''L'', 2, ''T'', ''#2'', NULL), SASTAVDALA(''DZIMUMS'', ''F'', 2, ''#1'', ''virietis'', NULL) ) );';

m2 := REPLACE(m1, '#1', 'B');--DBMS_OUTPUT.PUT_LINE(m2);end;

25

Page 26: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Izveduma mehānisma realizēšana

create table IZVEDUMA_KOKS(PRED_NUM number,PRED_NOS varchar2(20),TIPS varchar2(20),ATR_SK number,ATR1 varchar2(20),ATR2 varchar2(20),ATR3 varchar2(20));

create sequence VIRKNE_1start with 1increment by 1nomaxvalue;

create or replace package IZVEDUMA_MEH issubtype TEKSTS is varchar2(20);procedure VECAKS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure DZIMUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure MATE(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure TEVS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure DELS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure MEITA(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure BRALIS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS);procedure VAICAJUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS, atr3 IN OUT TEKSTS, atr4 IN OUT TEKSTS);end;

create or replace package body IZVEDUMA_MEH asprocedure VECAKS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) isbegin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'VECAKS', 'fakts', 2, atr1, atr2, '');end;procedure DZIMUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) isbegin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'DZIMUMS', 'fakts', 2, atr1, atr2, '');end;procedure MATE(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'sieviete';begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'MATE', 'likums', 2, atr1, atr2, '');VECAKS(atr1, atr2);DZIMUMS(atr1, m1);end;

26

Page 27: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

procedure TEVS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'virietis' ;begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'TEVS', 'likums', 2, atr1, atr2, '');VECAKS(atr1, atr2);DZIMUMS(atr1, m1);end;procedure DELS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'virietis' ;begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'DELS', 'fakts', 2, atr1, atr2, '');VECAKS(atr2, atr1);DZIMUMS(atr1, m1);end;procedure MEITA(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20) := 'sieviete' ;begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'MEITA', 'fakts', 2, atr1, atr2, '');VECAKS(atr2, atr1);DZIMUMS(atr1, m1);end;procedure BRALIS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS) ism1 varchar2(20);begin insert into IZVEDUMA_KOKS values(VIRKNE_1.nextval,'BRALIS', 'likums', 2, atr1, atr2, '');m1 := 'M';MATE(m1, atr1);MATE(m1, atr2);m1 := 'T';TEVS(m1, atr1);TEVS(m1, atr2);m1 := 'virietis';DZIMUMS(atr1, m1);end;procedure VAICAJUMS(atr1 IN OUT TEKSTS, atr2 IN OUT TEKSTS, atr3 IN OUT TEKSTS, atr4 IN OUT TEKSTS) ispredik varchar2(20);begincase atr1when 'BRALIS' thenIZVEDUMA_MEH.BRALIS(atr2, atr3);when 'MATE' thenIZVEDUMA_MEH.MATE(atr2, atr3);when 'TEVS' thenIZVEDUMA_MEH.TEVS(atr2, atr3);when 'VECAKS' thenIZVEDUMA_MEH.VECAKS(atr2, atr3);when 'DZIMUMS' then

27

Page 28: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

IZVEDUMA_MEH.DZIMUMS(atr2, atr3);end case;end;end;

delete IZVEDUMA_KOKS;

drop sequence VIRKNE_1;

create sequence VIRKNE_1start with 1increment by 1nomaxvalue;

declarepar1 varchar2(20) := 'BRALIS';par2 varchar2(20) := 'X';par3 varchar2(20) := 'Rasma';par4 varchar2(20) := '';beginIZVEDUMA_MEH.VAICAJUMS(par1, par2, par3, par4);end;

column PRED_NUM format 99999999;column PRED_NOS format a10;column TIPS format a10;column ATR_SK format 999999999;column ATR1 format a10;column ATR2 format a10;column ATR3 format a10;

select * from IZVEDUMA_KOKS;PRED_NUM PRED_NOS TIPS ATR_SK ATR1 ATR2 ATR3------------------------------------------------------------------------------------------------------ 1 BRALIS likums 2 X Rasma 2 MATE likums 2 M X 3 VECAKS fakts 2 M X 4 DZIMUMS fakts 2 M sieviete 5 MATE likums 2 M Rasma 6 VECAKS fakts 2 M Rasma 7 DZIMUMS fakts 2 M sieviete 8 TEVS likums 2 T X 9 VECAKS fakts 2 T X 10 DZIMUMS fakts 2 T virietis 11 TEVS likums 2 T Rasma 12 VECAKS fakts 2 T Rasma 13 DZIMUMS fakts 2 T virietis 14 DZIMUMS fakts 2 X virietis

28

Page 29: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Tabulas IZVEDUMA_KOKS aizpildīšana un dublējošo faktu predikātu nodzēšana

declaresubtype PREDIKATS is varchar2(20);m1 PREDIKATS;m2 PREDIKATS;m3 PREDIKATS;begindelete IZVEDUMA_KOKS;m1 := 'B';m2 := 'Rasma';DEDUKCIJA.BRALIS(m1, m2);-- Dublējošu rindu (faktu predikātu) nodzēšanadelete from IZVEDUMA_KOKS A where A.ROWID =(select MIN(B.ROWID) from IZVEDUMA_KOKS B where B.PRED_NOS = A.PRED_NOSand B.ATR1 = A.ATR1 and B.ATR2 = A.ATR2group by B.PRED_NOS, B.ATR1, B.ATR2having COUNT(B.PRED_NOS)>1);end;

select * from IZVEDUMA_KOKS;

PRED_NOS KOL1 ATR1 KOL2 ATR2 KOL3 ATR3-----------------------------------------------------------------------------------------------------VECAKS VEC_NOS M BERN_NOS BVECAKS VEC_NOS M BERN_NOS RasmaDZIMUMS NOS M DZIMUMS sievieteVECAKS VEC_NOS T BERN_NOS BVECAKS VEC_NOS T BERN_NOS RasmaDZIMUMS NOS T DZIMUMS virietisDZIMUMS NOS B DZIMUMS virietis

29

Page 30: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

PRED_NOS ATR1 ATR2 ATR3-----------------------------------------------VECAKS M B DZIMUMS M sieviete

VECAKS M Rasma

VECAKS T B DZIMUMS T virietis

VECAKS T Rasma

DZIMUMS B virietis

PRED_NOS ATR1 ATR2 ATR3 PRED_NOS ATR1 ATR2 ATR3VECAKS M B DZIMUMS M sieviete P1, P2VECAKS M Rasma P3VECAKS T B DZIMUMS T virietis P4, P5VECAKS T Rasma P6DZIMUMS B virietis P7

M B P9M P10

T B P11T P12

B P13

M B M P9, P10T B T P11, P12B P13

M B P14T B P15

B P16

M B T B P14, P15B P16

M B T P17B P18

M B T B P19

M B T

30

Page 31: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Faktu predikātu savienojumus realizējošie SELECT vaicājumi

(select P1.VEC_NOS as M, P2.NOS as B from VECAKS P1, DZIMUMS P2where P1. VEC_NOS = P2.NOS and P2.DZIM = 'sieviete') P9

(select P3.VEC_NOS as M from VECAKS P3where P3.BERN_NOS = 'Rasma') P10

(select P4.VEC_NOS as T, P4.BERN_NOS as B from VECAKS P4, DZIMUMS P5where P4.VEC_NOS = P5.NOS and P5.DZIM = 'virietis') P11

(select P6.VEC_NOS as T from VECAKS P6, DZIMUMS P7 where P6.VEC_NOS = P7.NOS and P6.BERN_NOS = 'Rasma' and P7.DZIM ='virietis') P12

(select P8.NOS as B from DZIMUMS P8where P8.DZIM = 'virietis') P13---------------------------------------------------------------------------------------------------------------------------(select P9.M, P9.Bfrom (select P1.VEC_NOS as M, P2.NOS as B from VECAKS P1, DZIMUMS P2 where P1. VEC_NOS = P2.NOS and P2.DZIM = 'sieviete') P9, (select P3.VEC_NOS as M from VECAKS P3 where P3.BERN_NOS = 'Rasma') P10where P9.M = P10.M ) P14

(select P11. T, P11.Bfrom (select P4.VEC_NOS as T, P4.BERN_NOS as B from VECAKS P4, DZIMUMS P5 where P4.VEC_NOS = P5.NOS and P5.DZIM = 'virietis') P11, (select P6.VEC_NOS as T from VECAKS P6, DZIMUMS P7 where P6.VEC_NOS = P7.NOS and P6.BERN_NOS = 'Rasma' and P7.DZIM ='virietis') P12where P11.T = P12.T ) P15

(select P13.Bfrom (select P8.NOS as B from DZIMUMS P8 where P8.DZIM = 'virietis') P13 ) P16

31

Page 32: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

---------------------------------------------------------------------------------------------------------------------------(select P14.M, P14.B, P15.Tfrom ( ... ) P14, ( ... ) P15where P14.B = P15.B) P17

(select P16.NOS Bfrom ( ...) P16 ) P18--------------------------------------------------------------------------------------------------------------------------(select P17.M, P17.B, P17.Tfrom ( ... ) P17, ( ... ) P18where P17.B = P18.B) P19

32

M---------JanisInese

M B------------------------Inese IneseInese IneseAnna AnnaAnita Anita

T B----------------------------Julijs JanisMonvids IneseJanis RasmaJanis Juris

T---------Janis

B-------------JulijsMonvidsJanisJuris

M B---------------------Inese IneseInese Inese

T B-------------------Janis JurisJanis Rasma

B------------JulijsMonvidsJanisJuris

Page 33: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Dināmiskā SQL izmantošana kopējā vaicājuma realizēšanai

declarev_1 varchar2(200);v_2 varchar2(200);v_3 varchar2(200);v_4 varchar2(200);v_5 varchar2(400);v_6 varchar2(400);v_7 varchar2(800);m1 varchar2(10); m2 varchar2(10); m3 varchar2(10); beginv_1 := '(select P1.NOS as B, P2.VEC_NOS as M from DZIMUMS P1, VECAKS P2where P1. NOS = P2.BERN_NOS and P1.DZIM = ''virietis'')';v_2 := '(select P3.NOS as M from DZIMUMS P3, VECAKS P4where P3.NOS = P4.VEC_NOS and P3.DZIM = ''sieviete'' and P4.BERN_NOS = ''Rasma'')';v_3 := '(select P5.VEC_NOS as T, P5.BERN_NOS as B from VECAKS P5, DZIMUMS P6where P5.VEC_NOS = P6.NOS and P6.DZIM = ''virietis'')';v_4 := '(select P7.VEC_NOS as T from VECAKS P7 where P7.BERN_NOS = ''Rasma'')';

v_5 := '(select P8.B, P8.M from '|| v_1 || ' P8, ' || v_2 || ' P9 where P8.M = P9.M )';v_6 := '(select P10. T, P10.B from ' || v_3 || ' P10, ' || v_4 || ' P11 where P10.T = P11.T )';

v_7 := '(select P12.B, P12.M, P13.T from ' || v_5 || ' P12, ' || v_6 || 'P13 where P12.B = P13.B)'; execute immediate v_7 into m1, m2, m3; DBMS_OUTPUT.PUT_LINE(m1 || ' ' || m2 || ' ' || m3);end;

Juris Inese Janis Rezultāts

33

Page 34: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

34

Page 35: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Loģiskās programmēšanas valodas PROLOG pamatjēdzieni

1. Attīstoties dažādām teorēmu pierādīšanas metodēm, izveidojās loģiskās programmēšanas

valoda PROLOG (PROgramming LOGic). Tās autori bija Robert Kowalski (Edinburga),

Maarten van Emden (Edinburga), Alain Colmerauer (Marseļa).

2. Valoda PROLOG ir programmēšanas valoda rakstzīmju tipa datu apstrādei.

3. Loģiskās programmēšanas valoda izmanto sekojošus jēdzienus:

1) atoms – burtu un ciparu simbolu kopa, kas sākas ar mazo burtu: mašīna, grāmata, jānis;

2) konstante – atoms vai skaitlis: jānis, 123;

3) mainīgais - burtu un ciparu simbolu kopa, kas sākas ar lielo burtu: X, Y, Main_1

(mainīgais ar apzīmējumu _ norāda uz jebkuru mainīgo);

4) funktors –

5) terms – atomi un mainīgie;

6) dizjunkts – literāļu kopa, ir trīs tipu dizjunkti:

- likums – sastāv no galvas un ķermeņa:

māte( X, Y) : - persona( X, , sieviete), vecāki( X, Y).

- fakts – sastāv no viena literāļa: vecāki( Rasma, Pēteris).

- mērķis – dizjunkts bez galvas daļas, tas ir vaicājums: ? – vecāki( X, Jānis).

7) PROLOG-a mehānisms – izveduma mašīna

35

Page 36: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Valoda DATALOGDeduktīvo datu bāzu sistēmās viens no galvenajiem izstrādes virzieniem ir valoda DATALOG. Šī valoda paplašina relāciju bāzu valodas. DATALOG ļauj optimizēt SQL vaicājumus. DATALOG datu bāzēm semantika ir ļoti līdzīga loģiskās programmēšanas valodas semantikai, taču tiek ņemts vērā, ka deduktīva datu bāze sastāv no diviem komponentiem. Paplašinātā datu bāze mainās (dati tiek pievienoti, laboti, dzēsti), taču papildinātā datu bāze ir nemainīga, tātad tā paliek sākotnēji definēta. Ir 3 pieejas DATALOG datu bāzu semantikas modelēšanā:

1. Teorētiska modeļa semantika.2. “Darbs no augšas uz leju” semantika.3. “Darbs no lejas uz augšu” semantika.

Vaicājumi(queries)

Tāpat kā loģiskajā programmēšanā, arī deduktīvajās datu bāzēs vaicājums ir aprakstīts kā mērķis formā A1,....,An kur A1,....,An ir atomi.Svarīga atšķirība starp Prolog un DATALOG valodām ir tāda, ka ja Prologā tiek noteikts vai eksistē vismaz viens risinājums, tad DATALOG nosaka visus risinājumus. Šāda mērķa semantika ir iespējama pateicoties kopu-orientētai (set-oriented) pieejai vaicājumos, kur katram vaicājumam tiek noteiktas visas atbildes.

DATALOG pielikumi (extensions)

DATALOG nav pilnībā piemērota datu lietojumprogrammām, jo tajā nav daudzas iespējas, kas nepieciešamas lietojumprogrammu pilnvērtīgai uzturēšanai. Lai risinātu šādu trūkumu, ir izstrādāti DATALOG pielikumi, daži no kuriem pat ir iekļauti izstrādes prototipos.Noliegums – lai valoda DATALOG būtu izteiksmīgāka un varētu apstrādāt specifiskus vaicājumus, tai ir izveidots nolieguma pielikums. Visbiežāk noliegumu nepieciešams izmantot likumos, kur atoms A i ir jāparāda kā Ai. Šādu valodu sauc par DATALOG. Semantika un skaitļošanas problēmas galvenokārt ir saistītas ar sintakses ierobežojumiem, kā arī pielāgojot citu semantiku. Labi aprakstītai semantikai pamatideja ir tāda, ka datubāze nesatur tikai patiess/nepatiess informāciju par katru faktu. Drīzāk dažiem faktiem datu bāze varētu glabāt tādu informāciju, ka fakta patiesā vērtība nav zināma. Vairumam datu bāzu lietojumprogrammām ir jābūt spējai formulēt salīdzināšanas apgalvojumus, kad tiek piekļūts datu bāzes datiem. Salīdzināšanas apgalvojumi starp mainīgajiem vai konstantēm DATALOG likumā vai mērķī tiek formulēti kā salīdzināšanas saites, ko var apzīmēt ar tādiem simboliem kā , , , . Ir svarīgi šādas salīdzināšanas saites iebūvēt DATALOG, lai datu salīdzināšana tiktu veikta jau pie datu atlases. Taču, salīdzināšanas apgalvojumu iekļaušana sistēmā var novest pie bezgalīga atbilžu skaita, ja vien netiek ievēroti kādi drošības pasākumi.

DATALOG datu bāzu īpašības

Galvenā problēma ir noteikt vai īpašība pakļaujas papildinātās datu bāzes statiskai analīzei. Pieņemot, ka apgalvojums ir neapmierināms (unsatisfiable)- tātad apgalvojums neatrod nevienu risinājumu

36

Page 37: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

paplašinātai datu bāzei. Optimizācijas nolūkā šo apgalvojumu varētu izslēgt no papildinātās datu bāzes, taču šāda rīcība varētu izsaukt kļūdu. Svarīgākās īpašības ir:

1. Vienādība;2. Apmierinātība;3. Ierobežotība.

Šīs īpašības tiek iestrādātas kā DATALOG valodā tā arī dažos tās paplašinājumos.

Deduktīvo datu bāzu un loģisko programmēšanas sistēmu atšķirības

Galvenokārt tās ir saistītas ar to, ka deduktīvās datu bāzes uzglabā un vada lielus komplicētu datu apjomus, kamēr loģikas lietojumprogramma atbalsta programmēšanu un tai nav vajadzīgas iebūvētas speciālas tehnikas datu modelēšanai un vadīšanai. Izdala šādas galvenās atšķirības starp abiem sistēmu tipiem:

1. Deduktīva datu bāze parasti glabā vairāk faktus nekā likumus;2. Apgalvojumi deduktīvā datu bāzē dalās kā paplašinātie un papildinātie;3. Deduktīvo datu bāzu valodas, piemēram DATALOG ir bez funkcijām, vai atbalsta tikai

dažas, ļoti specifiskas funkcijas. Loģiskās programmēšanas valodas, tieši pretēji, ir pārblīvētas ar funkcijām;

4. DDB uztur ierobežojumu aprakstu;5. DDB tiek meklēti visi risinājumi, bet loģiskajā programmēšanā tikai viens risinājums no

visiem.

37

Page 38: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Loģiskās programmēšanas valodas un DBS kopdarbība1. Sasaiste – divu autonomu sistēmu interfeisa izveide, lai apmainītos ar datiem (datu bāze loģiskās programmēšanas valodas izpildes vides operatīvā atmiņa). Ābu autonomo sistēmu apvienojums tiek saukts par CPR sistēmām (Coupling Prolog to Relational databases).

a) vājā sasaiste (statiskā sasaiste)– datu apmaiņa notiek neatkarīgi no izveduma realizēšanas procesa, vienā datu apmaiņas procesā tiek izgūti visi nepieciešamie fakti;b) ciešā sasaiste (dināmiskā sasaiste) - datu apmaiņa notiek izveduma realizēšanas procesā, kad jāiegūst kārtējie konkrētie fakti.

2. Integrācija – jaunas vienotas sistēmas izveide, loģiskās programmēšanas valodas iekļaušana datu bāzes servera programmēšanas valodu kopā.

38

Loģiskās programmēšanas

valodaDatu bāzes sistēma

Loģiskās programmēšanas

valodaDatu bāzes sistēma

Page 39: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

CPR sistēmu komponentes

1. Prologa mehānisms – realizē PROLOG-a programma, izmantojot standarta izveduma mehānismu, bet var būt arī iespējas adaptēties konkrētai datu bāzes vadības sistēmai.

2. Prolog-a interfeiss – ļauj atpazīt un izmantot datu bāzes predikātus.

3. Datu bāzes interfeiss – PROLOG-a sistēmas pieprasījumu atpazīšana un atbildes nodošana:1) vienpredikāta vaicājums, formulējas katram datu bāzes predikātam;2) daudzpredikātu vaicājums, formulējas vairākiem datu bāzes predikātiem vienlaicīgi;3) agregātu vaicājumi, formulējas agregātfunkciju aprēķināšana datu bāzes predikātu grupām;4) rekursīvie vaicājumi, formulējas rekursīviem predikātiem;5) korteži tiek atgriezti pa vienam;6) tiek atgriezta kortežu grupa.

4. Datu bāzes mehānisms – veic datu meklēšanu un atjaunošanu.

39

Page 40: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Datu bāzes un loģiskās programmēšanas jēdzienu atbilstība

Datu bāzes tehnoloģijas jēdzieni

Loģiskās programmēšanas jēdzieni

datu attieksme predikātsatribūts predikāta argumentskortežs fakts, bāzes dizjunktsskats likumsvaicājums mērķisierobežojums Mērķis, atgriežot vēlamo patiesuma vērtību (patiess,

nepatiess)

40

Page 41: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

CPR sistēmu pamatjēdzieni

1. Datu bāzes predikāts – PROLOG-a sistēmas pieprasījuma rezultāts: tab1(a, b, X, Y, c).

2. Bāzes konjunkcija – datu bāzes predikātu un aritmētisko salīdzinājumu predikātu virkne: db1(X, a, Y), db2(Y, Z, V), (V = b).

3. Faktu kārtība: - datu bāzē nav svarīga; - PROLOG-a izpildes vidē no tās var būt atkarīgs rezultāts.

41

Page 42: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦ · Web viewDati, fakti, likumi un vaicājumi. Dati: Jānis, Jūlijs, 75, sieviete. Fakti: Jūlijs ir Jāņa vecāks

Deduktīvu datu bāzu prototipi

1. NAIL! -

2. MegaLog -

3. Lola -

4. Coral -

5. Aditi -

6. PRO_SQL – sistēma, kurā loģiskā programmēšanas valoda PROLOG sasaistīta ar SQL/DS

sistēmu (IBM Research Center at Yorktown Heights).

7. EDUCE - sistēma, kurā loģiskā programmēšanas valoda PROLOG sasaistīta ar DBVS

INGRES (European Computer Industry Research Center).

8. ESTEAM - firmas Philips izstrāds interfeiss sistēmai ESTEAM un DBVS INGRESS QUEL

vaicājumu valodā.

9. BERMUDA -

10. PRIMO – interfeiss starp Arity-Prolog sistēmu un DBVS Oracle, izstrāde veikta Modenas

universitātē Itālijā.

11. QUINTUS-PROLOG – firmas Quintus Computer System izstrādne, kurā izveidots interfeiss

ar DBVS Unify.

42