54
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Informācijas tehnoloģijas institūts 3. praktiskais darbs priekšmetā „Progresīvās datu bāzes” “DATU NOLIKTAVAS IZVEIDOŠANA UN IZMANTOŠANAIzstrādāja: Maksims Korņevs 1

Anotācija - Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

  • Upload
    vokhue

  • View
    233

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

RĪGAS TEHNISKĀ UNIVERSITĀTEDatorzinātnes un informācijas tehnoloģijas fakultāte

Informācijas tehnoloģijas institūts

3. praktiskais darbs priekšmetā

„Progresīvās datu bāzes”

“DATU NOLIKTAVAS IZVEIDOŠANA UN IZMANTOŠANA”

Izstrādāja: Maksims Korņevs

II RDMI-2, 081RDB076

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

2012./13. māc. gads

1

Page 2: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

ANOTĀCIJA

Darba mērķis tiek definēts kā izpētīt datu noliktavas tehnoloģija. Mērķa

sasniegšanai tika izdomāta uzskaitīšanas sistēma biroja preču veikalam SIA

VEIKALS, kas satur informāciju par precēm, klientiem, darbiniekiem un to

mijiedarbības vēsturi jeb transakcijām. Tika izdomātas datu bāzes tabulas un objekti,

kā arī loģiskas saites starp tām. Kā rezultāts, darbā ir aprakstīta darbība ar datu

noliktavas tehnoloģijām, kas ietver sevī vairākus posmus tādus kā faktu tabulas,

dimensiju tabulu, materializētu skatu utt izmantošana. Ir definēti un izpildīti vairāki

vaicājumi.

Darbā gaitā tika izmantota SQL valoda. Darbs tika veikts ar Oracle SQL

Developer 3.0.04 programmas palīdzību.

Darba apjoms ir 40 lappuses, kuras satur 25 attēlus un 6 tabulas.

2

Page 3: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

SATURS

Anotācija............................................................................................................2

Saturs..................................................................................................................3

Uzdevums...........................................................................................................4

1. Izmantotā datu bāze........................................................................................5

2. Oracle SQL Developer programmas izmantošana.........................................6

3. Dimensiju modelēšana...................................................................................8

4. Datu glabāšanas struktūras...........................................................................11

4.1. Dimensiju tabulas..................................................................................11

4.2. Faktu tabula...........................................................................................15

4.3. Datu ievade............................................................................................15

5. Grupēšanas vaicājumi..................................................................................18

5.1. GROUP BY vaicājumi..........................................................................19

5.2. ROLLUP vaicājumi............................................................................20

5.3. CUBE vaicājumi...................................................................................21

5.4. GROUPING vaicājumi.........................................................................22

5.5. GROUPING_ID vaicājumi...................................................................25

6. SQL Model vaicājumi..................................................................................26

7. PIVOT vaicājumi.........................................................................................29

8. Materializētie skati.......................................................................................33

9. Secinājumi....................................................................................................38

10. Izmantotās literatūras saraksts....................................................................40

3

Page 4: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

UZDEVUMS

1. Dimensiju modelēšana: tiek izveidotas vismaz trīs dimensijas ar hierarhijām

(hierarhijā vismaz trīs līmeņi) un definēti vismaz divi faktu veidi.

2. Datu bāzē tiek izveidotas atbilstošās datu glabāšanas struktūras: dimensiju

tabulas un faktu tabula. Tiek veikta datu ievade.

3. Izmantojot GROUP by CUBE() konstrukciju un funkciju GROUPING(),

tiek veikti vaicājumi, lai demonstrētu to iespējas.

4. Izmantojot SQL Model konstrukciju, tiek veikti vaicājumi, lai demonstrētu

tās iespējas.

5. Izmantojot Pivot konstrukciju, tiek veikti vaicājumi, lai demonstrētu tās

iespējas.

5. Papildus dimensiju un faktu tabulām tiek izveidoti materializētie skati,

kuros iekļauti vaicājumos pieprasītie datu agregāti.. Tiek veikti vaicājumi un tiek

pārbaudīts vai notiek vaicājumu pārrakstīšana (rewriting) sakarā ar materializēto skatu

izmantošanu.

6. Kopējie secinājumi.

4

Page 5: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

1. IZMANTOTĀ DATU BĀZE

Datu bāze ir paredzēta biroja preču veikalam SIA VEIKALS. Tā ir

uzskaitīšanas sistēma, kas satur informāciju par precēm, klientiem, darbiniekiem un to

mijiedarbības vēsturi jeb transakcijām.

Saskaņā ar aprakstu vislabākais risinājums ir datu bāze, kas ir redzama 1.

attēlā.

Attēls 1. Datu bāze

5

Page 6: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

2. ORACLE SQL DEVELOPER PROGRAMMAS IZMANTOŠANA

Darba izpildei tika izmantots ORACLE programma – ORACLE SQL

Developer 3.0.04. ORACLE SQL Developer ir SQL*Plus grafiskā versija, kas dot

iespēju datu bāzes administratoriem ērtā veidā izpildīt pamatuzdevumus: apskatīt,

veidot, rediģēt un iznicināt datu bāzes objektus; pildīt SQL komandas un skriptus,

rediģēt un atkļūdot PL/SQL kodus; ievadīt un eksportēt datus; apskatīt un veidot

atskaites.

Programmas palaišanas fails ir sqldeveloper.exe (sk. att. 2)

Attēls 2. ORACLE SQL Developer palaišanas logs

Pirmais solis, kas ir nepieciešams izveidot ir savienojuma ar datu bāzi

izveidošana. To var izdarīt sekojoši:

1) no izvēlnes VIEW ir nepieciešams izvelēties rīkjoslu Connections;

2) rīkjoslā Conections izvēlēties New Connection (sk. attēls 3);

3) attiecīgos laukos ir jāievada savienojuma parametri un lietotāja konta

dati;

4) uzklikšķinot uz Test Connection, jāparādās ziņojumam Status:

Success;

5) jāsaglabā savienojums.

6

Page 7: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 3. New Coonection parametru logs

Kad savienojums ir izveidots ir jāpieslēdzas datu bāzei, uzklikšķinot ar labu

taustiņu uz jaunizveidotā savienojuma nosaukuma un izvēloties Connect. Vaicājumi

jāraksta jaunatvērtajā logā. Palaist izpildei uzrakstītu vaicājumu var ar pogu F5.

Rezultāti tiek izvadīti logā Script Output kā ir redzams attēlā 4.

Attēls 4. ORACLE SQL Developer darba virsma

7

Page 8: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

3. DIMENSIJU MODELĒŠANA

Dimensiju modelēšana ir metode, kas tiek lietota projektējot datu noliktavas

datu struktūras. Šī tehnoloģija nodrošina datu struktūras vieglu uztveramību un

izprotamību. Veidojot operatīvās datu bāzes, datu struktūras projektēšanai izmanto

ER diagrammas.

Attēls 5. Dimensiju modelis

Dimensiju modelēšana ir loģikas projektēšanas tehnika, kas mēģina prezentēt

datus intuitīvi labi izprotamā veidā un nodrošina ātru piekļūšanu vajadzīgajiem

datiem. Tiek izmantotas faktu un dimensiju tabulas. Faktu tabulai ir vairākas datu

meklēšanas atslēgas. Dimensiju tabulas primārā atslēga atbilst vienai faktu tabulas

atslēgai. Dimensiju tabulas ir ieejas punkti datu noliktavā.

Dimensiju modeļa priekšrocības:

1. Dimensiju modelis ir labi izprotams un no tā vienkārši var iegūt

nepieciešamos datus.

2. Visas dimensijas ir loģiski ekvivalentas. Līdz ar to vaicājumi ir

simetriski, vienveidīgi.

3. Dimensiju modelis ir viegli paplašināms, pievienojot :

a. jaunus faktus;

b. jaunas dimensijas;

c. jaunus dimensiju atribūtus;

d. jaunu apakšdimensiju ieviešana.

8

Faktu tabula

1. dimensiju

tabula

2. dimensiju

tabula

3. dimensiju

tabula

Page 9: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

4. Ir speciālas pieejas īpašu situāciju modelēšanā:

a. lēnu izmaiņu dimensiju modelēšana;

b. heterogēnu biznesa objektu izvērtēšana (vienlaicīgi jāievēro

aršķirīgas biznesa lietas);

c. “pay-in advance” datubāzes, kurās var apskatīt transakcijas un

kopējo gala rezultātu ;

d. “event-handling” datubāzes - darbība faktu deficītā.

5. Agregātu lietošanas iespējas (būtiskas vaicājuma izpildes ātrdarbības

palielināšanas iespējas).

Dimensiju modelī svarīgi ir atšķirt faktus un atribūtus.

Fakts ir kaut kādi dati, kas iepriekš nav zināmi. Tie parasti ir skaitļu formā

(reāli skaitļi), bet var būt arī teksta veidā (retāk). Atribūts parasti ir teksta formā un

norāda reālu lietu īpašību.

Tekstuālie atribūti, kas raksturo lietas tiek organizēti dimensijās. Dimensijas

atribūti ir cieši saistīti viens ar otru. Dimensiju vērtībām kombinējoties kopā, rodas

norāde uz faktiem. Ja dimensijas ir samērā vāji korelētas, tad fakta iespējamo vērtību

skaits ir neliels. Ja korelācijas pakāpe ir augsta, fakta vērtību skaits var būt ļoti liels.

Atribūtiem dimensiju modelī ir izšķiroša loma. Tie veido lietojuma vaicājuma

noteikumu sistēmu (ierobežojumus) un igūstamā pārskata rindu virsrakstus.

Dimensiju tabulā atribūti parasti veido vairākas hierarhiju sistēmas. Labi

projektētā datu noliktavā pieprasot vienādu skaitu rakstu dažādās hierarhijas pakāpēs,

izpildes laiki nedrīkst būtiski atšķirties.

Strādājot ar dimensiju tabulām jānodrošina labas to atribūtu vērtību pārskata

iespējas. Lietotājam bieži ir vēlams noskaidrot kādas un cik ir unikālas atribūtu

vērtības un kā tās ir saistītas ar citu atribūtu vērtībām. Tā kā katrs lietotājs datus

analizē izejot no savām prasībām, lietderīgi izmantot ierobežojumu definēšanu un

piekārtošanu katram lietotāja mehānismam. Lietotājs definē savus ierobežojumus, tie

fiksējas un nākošā sesijā atkal tiek ievēroti.

Dažreiz zvaigznes shēma tiek paplašināta uz sniegpārsliņas shēmu izslēdzot

no sākotnējās dimensiju tabulas zemas kardinalitātes atribūtus un izveidojot

pakārtotas dimensijas tabulu.

Datu noliktavas kvalitāti nosaka dimensiju atribūtu kvalitāte. Dimensiju

atribūtiem un to vērtībām jābūt:

9

Page 10: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

saprotamiem;

aprakstošiem;

pilnīgiem, bez kļudainām (pretrunīgām) vērtībām;

indeksētiem;

dokumentētiem (metadatos).

Darbā ir izmantota sniegpārsla modeļa shēma (sk. 6. att.) biroja preču

veikalam, kur ir trīs dimensijas: Darbinieku_dim (satur informāciju par veikala

darbiniekiem), Klientu_dim (satur informāciju par klientiem) un Precu_dim (satur

informāciju par precēm). Katrā no šīm dimensijām ir hierarhiskie līmeni. Visas

dimensijas apvieno faktu tabula Faktu_taula, kur ir ierakstīta informācija par

transakcijas datiem: klients, prece un to daudzums, atbildīgais darbinieks, datums un

transakcijas statuss.

Attēls 6. Darba izmantota sniegpārsla modeļa shēma

10

Page 11: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

4. DATU GLABĀŠANAS STRUKTŪRAS

Lai datu bāze varētu pareizi funkcionēt ir nepieciešams izveidot atbilstošās

datu glabāšanas struktūras: dimensiju tabulas un faktu tabula.

Tabulas ir pamatstruktūra, kurā dati tiek glabāti datu bāzē. Tabulas ir sadalītas

rindās un kolonnās. Katra rinda ir viena datu vienība, un katrs lauks var būt uzskatams

par šādu datu kopas noteiktu daļu. Tabulas izveidošanas laikā, nosaka lauku

apzīmējumus un datu tipus, kas tur glabājas.

Tabulas izveidošana tika realizēta SQL valodā ar komandas CREATE TABLE

palīdzību, un tās pamata sintakse ir:

CREATE TABLE tabulas_nosaukums(pirmā_lauka_nosaukums pirmā_lauka_tips,otrā_lauka_nosaukums otrā_lauka_tips,...pēdējā_lauka_nosaukums pēdējā_lauka_tips);

Eksistē vairākas lauka tipi, kas ir domāti datu glabāšanai kā skaitli binārā

sistēmā (binary, varbinary, image) un decimālā sistēmā (bigint, numeric, bit, smallint,

decimal, smallmoney, int, tinyint, float, real), datu glabāšanai kā laiks vai datums

(date, datetimeoffset, datetime2, smalldatetime, datetime, time), kā teksta virkne

(char, varchar, text) vai citā veidā (cursor, timestamp, hierarchyid, uniqueidentifier,

sql_variant, xml utt.)

4.1. Dimensiju tabulas

Datu bāzē ir piecas dimensiju tabulas: Cilveku_dim, Darbinieku_dim,

Adresu_dim, Klientu_dim un Precu_dim. Katrai tabulai ir savi atribūti un līdz ar to,

katra tabula ir definēta atsevišķi sekojošā veidā:

CREATE TABLE Cilveku_dim (Cilveka_Id Number NOT NULL,Vards VarChar2(15),Uzvards VarChar2(15),Per_kods VarChar2(12),CONSTRAINT Cilveks_PK PRIMARY KEY (Cilveka_Id));

11

Page 12: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 7. Cilvēku dimensijas izveidošana

CREATE TABLE Darbinieku_dim (Darbinieka_Id Number NOT NULL,Amats VarChar2(10),Alga Number(10,2),Nodala VarChar2(12),Cilveks_FK Number,CONSTRAINT Darbinieks_PK PRIMARY KEY (Darbinieka_Id),CONSTRAINT Cilveks_FKey FOREIGN KEY (Cilveks_FK) REFERENCES Cilveku_dim(Cilveka_Id));

Attēls 8. Darbinieku dimensijas izveidošana

CREATE TABLE Adresu_dim (Adreses_Id Number NOT NULL,Valsts VarChar2(10),Pilseta VarChar2(10),

12

Page 13: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Iela VarChar2(10),Maja Number,Birojs Number,Pasta_indekss VarChar2(7),CONSTRAINT Adrese_PK PRIMARY KEY (Adreses_Id));

Attēls 9. Adrešu dimensijas izveidošana

CREATE TABLE Klientu_dim (Klienta_Id Number NOT NULL,Konts VarChar2(30),Atlaide Number,Talrunis VarChar2(12),Adrese_FK Number,CONSTRAINT Klients_PK PRIMARY KEY (Klienta_Id),CONSTRAINT Adrese_FKey FOREIGN KEY (Adrese_FK) REFERENCES Adresu_dim(Adreses_Id));

13

Page 14: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 10. Klientu dimensijas izveidošana

CREATE TABLE Precu_dim (Preces_Id Number NOT NULL,Nosaukums VarChar2(15),Cena VarChar2(15),Mervieniba VarChar2(12),Piegadatajs VarChar2(12),CONSTRAINT Prece_PK PRIMARY KEY (Preces_Id));

Attēls 11. Preču dimensijas izveidošana

Šādā veidā visas dimensijas ir izveidotas.

14

Page 15: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

4.2. Faktu tabula

Pēc dimensiju tabulu izveidošanas faktu tabula ir izveidota. Tas ir izpildīts ar

sekojošo vaicājumu:

CREATE TABLE Faktu_Tabula (Klients Number,Prece Number,Daudzums Number,Darbinieks Number,Datums Date,Statuss Number,CONSTRAINT Klients_FKey FOREIGN KEY (Klients) REFERENCES Klientu_dim(Klienta_Id),CONSTRAINT Prece_FKey FOREIGN KEY (Prece) REFERENCES Precu_dim(Preces_Id),CONSTRAINT Darbinieks_FKey FOREIGN KEY (Darbinieks) REFERENCES Darbinieku_dim(Darbinieka_Id));

Attēls 12. Faktu tabulas izveidošana

4.3. Datu ievade

Kad visas tabulas un saites starp tām ir izveidotas, ir nepieciešams ievadīt

datus.

Datu ievadīšana var notiek ar komandu INSERT INTO vai ar SQL*LOADER

programmas palīdzību. Tā kā ir paredzēts liels datu apjoms, SQL*LOADER ir

izmatots.

SQL*LOADER ir ievades programma, kas domāta ārējas datu ievadei iekš

Oracle datu bāzes. Programma dot iespēju ievadīt dažādu failu formātus, veikt daļēju

15

Page 16: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

ievadi un arī ievadīt datus vairākām tabulām. Programmas palaišana sakas ar

operācijas sistēmas komandu:

SQLLDR lietotājs/parole@// 85.254.218.238:1521/

rtuditf CONTROL=Loader.ctl,

kur lietotājs un parole ir attiecīgi dati serverī. Loader.ctl ir kontroles fails, kas

satur nepieciešamu informāciju:

LOAD DATAINFILE 'C:\SCHOOL\DB3\Cilveki.dat'INTO TABLE Cilveku_dimFIELDS TERMINATED BY ","(Cilveka_ID, Vards, Uzvards, Per_kods)

Fails ar datiem Cilveki.dat izskatās sekojoši:

1, Anete, Blauva, 040768-14856

2, Staņislavs, Duškins, 131071-17321

3, Savelijs, Guževs, 010760-13602

4, Maksims, Ivanovs, 220873-17412

5, Oļegs, Mihailovs, 110866-12099

6, Ernests, Pakers, 291192-10443

7, Aleksandrs, Petrišins, 010481-18997

8, Uģis, Pūpoliņš, 030164-18812

9, Aleksandrs, Sila, 091095-17831

10, Aleksandrs, Suvorovs, 221063-13057

108, Viktors, Pehota, 190374-18211

16

Page 17: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Līdzīgā veidā tika aizpildītas visas tabulas.

Pārliecināties, kā ievadīti dati ir ievadīti korekti cara ar SELECT vaicājumu:

Attēls 13. Dati no Faktu tabulas

17

Page 18: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

5. GRUPĒŠANAS VAICĀJUMI

Grupēšana ļauj analizēt datus, lai izdotu nepieciešamo rezultātu. Ir vairāki

grupēšanas funkcijas:

Group by

Rollup (GROUP BY ROLLUP)

Cube (GROUP BY CUBE)

Grouping

Grouping_ID un citi

Darba tiek grupēti dati par ierakstītām transakcijām pēc darbinieka un pēc

klienta pilsētas.

Dati vaicājumam var būt iegūti ar sekojošo vaicājumu:

SELECT C.Uzvards, F.Klients, A.Pilseta, (F.Daudzums*P.Cena*(100-K.Atlaide)/100) AS SummaFROM Faktu_Tabula F, Precu_Dim P, Klientu_Dim K, Darbinieku_Dim D, Cilveku_Dim C, Adresu_Dim AWHERE F.Prece=P.Preces_Id AND F.Klients=K.Klienta_Id AND F.Darbinieks=D.Darbinieka_Id AND D.Cilveks_Fk = C.Cilveka_Id AND K.Adrese_FK=A.Adreses_ID;

Lai nerakstītu kodu katru reizi, ir izveidots skats „Skats”, kas izvada

nepieciešamu informāciju.

18

Page 19: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 14. Skats grupēšanas vaicājumiem

5.1. GROUP BY vaicājumi

GROUP BY darbojas ar agregātām funkcijām, piemērām funkcija SUM,

COUNT, MAX, MIN un citām. Agregātas funkcijas izanalizē vairākas rindas un izdot

vienu rezultātu, piemēram:

Attēls 15. Visu transakciju kopīga summa

19

Page 20: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Iekļaujot GROUP BY vaicājumā, tas ierobežo apstrādāto datu kopu. Tādā

veidā ir saņemtas agregātas vērtības katrai atsevišķai kombinācijai, kas ir definētas

GROUP BY daļā. Sagaidāmo ierakstu skaitu var aprēķināt, reizinot atšķirīgas vērtības

katrā kolonnā, kas ir uzskaitītas pēc GROUP BY. Darba gadījumā kolonai „Uzvards”

ir 26 vērtības, kolonai „Klients” arī 26 vērtības, un kolonai „Pilseta” – tikai divas

vērtības. Līdz ar, izmantojot pēdējo kolonu rezultātā ir saņemtas divas rezultātu

rindas:

Attēls 16. Transakciju skaits un to summa katrai klienta pilsētai

Izmantojot kolonu kombināciju GROUP BY daļā rezultātu ierakstu būs vairāk,

piemērām, darbinieka un klienta pilsētas kombinācija izdos 2*26=52 ierakstus, un

visu kolonu kombinācija izdos 2*26*26=1352 ierakstus.

5.2. ROLLUP vaicājumi

Papildus parastajiem agregātiem rezultātiem, ko var sagaidīt no GROUP BY

vaicājuma, ROLLUP paplašinājums veido grupas starpsummas no labās uz kreiso, un

kopējo summu. Ja vaicājuma uzskaitīto kolonnu skaits ir n, tiks ievadīti n+1

starpsummas.

Ir izmantots sekojošs vaicājums, lai aprēķinātu cik katrā pilsētā katrs

darbinieks izpildīja transakcijas:

Select Uzvards, Pilseta,

20

Page 21: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Count(*) As "Ierakstu skaits", Sum(Summa) As SummaFrom SkatsGroup By Rollup (Uzvards, Pilseta)ORDER BY Uzvards,Summa;

Vaicājumam ir sekojošs rezultāts:

UZVARDS PILSETA Ierakstu skaits SUMMAAnsons Liepāja 2 101,8Ansons Rīga 7 1163,7545Ansons 9 1265,5545Antropovs Liepāja 4 564,543Antropovs Rīga 10 1252,6335Antropovs 14 1817,1765Aņisimovs Liepāja 2 320,976Aņisimovs Rīga 9 804,702Aņisimovs 11 1125,678Aņiskovecs Liepāja 5 380,572Aņiskovecs Rīga 7 1432,785Aņiskovecs 12 1813,357Arsentjeva Rīga 5 877,47Arsentjeva Liepāja 5 945,75Arsentjeva 10 1823,22

…Vērzemnieks Liepāja 2 112,588Vērzemnieks Rīga 12 2151,6825Vērzemnieks 14 2264,2705

289 43411,913576 rows selected

Lai samazinātu starprezultātu daudzumu ir iespējams veikt daļējo PULLUP,

piemēram sekojošā veidā: Group By Uzvards, Rollup (Pilseta). Šajā gadījumā

vaicājuma rezultāts būs līdzīgs iepriekšējam tikai nebūs starpsummas pēc abām

kolonām.

5.3. CUBE vaicājumi

CUBE ģenerē starpsummas līdzīgi ROLLUP, bet klāt CUBE izveido

starprezultātus visām iespējam kombinācijām, ko var izveidot no norādītām kolonām.

Ja vaicājuma uzskaitīto kolonnu skaits ir n, tiks ievadīti n2 starpsummas.

Ir izmantots vaicājums kā iepriekšējā apakšnodaļā izmainot tikai ROLLUP uz

CUBE. Rezultātā ir izdotas tie paši ieraksti un 2 jauni ieraksti (atzīmēti ar sarkano):

21

Page 22: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

UZVARDS PILSETA Ierakstu skaits SUMMAAnsons Liepāja 2 101,8Ansons Rīga 7 1163,7545Ansons 9 1265,5545Antropovs Liepāja 4 564,543Antropovs Rīga 10 1252,6335Antropovs 14 1817,1765Aņisimovs Liepāja 2 320,976Aņisimovs Rīga 9 804,702Aņisimovs 11 1125,678Aņiskovecs Liepāja 5 380,572Aņiskovecs Rīga 7 1432,785Aņiskovecs 12 1813,357Arsentjeva Rīga 5 877,47Arsentjeva Liepāja 5 945,75Arsentjeva 10 1823,22

…Vērzemnieks Liepāja 2 112,588Vērzemnieks Rīga 12 2151,6825Vērzemnieks 14 2264,2705

Liepāja 90 11448,549Rīga 190 31963,3645

289 43411,913576 rows selected

Ar kolonu skaitu palielināšu CUBE daļā, palielinās arī starpsummu skaits.

Piemērām šādam vaicājumam ir 590 rezultāti un 360 no tiem ir starpsummas.

Select Uzvards, Pilseta, Klients, Count(*) As "Ierakstu skaits", Sum(Summa) As SummaFrom SkatsGroup By CUBE (Uzvards, Pilseta, Klients)ORDER BY Uzvards,Summa;

Līdzīgi kā ar PULLUP, lai samazinātu starprezultātu daudzumu ir iespējams

veikt daļējo CUBE vaicājumu.

5.4. GROUPING vaicājumi

Var būt diezgan viegli vizuāli identificēt starpsummas no ROLLUP vai CUBE

vaicājumiem, bet lai automatizētu rezultātu apkopojumu ir nepieciešams kaut precīzāk

Null vērtības grupējuma kolonnās.

22

Page 23: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Tas ir iespējams atrisināt ar GROUPING funkciju. Tā izveido vienu kolonnu

kā parametru un atgriež "1", ja ROLLUP vai CUBE rezultātā dēļ kolonna satur Null

vērtības vai "0" par jebkuru citu vērtību, tostarp ja tā vērtība citu iemeslu dēļ ir Null.

Sekojošs vaicājums ir atkārtojums no CUBE vaicājuma, bet GROUPINF

funkcija ir pievienota katrai kolonai.

SELECT Uzvards, Pilseta, Count(*) As "Ierakstu skaits", Sum(Summa) As Summa, GROUPING(Uzvards) AS "Grupēšana pēc uzvārda", GROUPING(Pilseta) AS "Grupēšana pēc pilsētas"FROM SkatsGROUP BY CUBE (Uzvards, Pilseta)ORDER BY Uzvards,Summa;

UZVARDS PILSETA Ierakstu skaits SUMMA Grupēšana

pēc uzvārdaGrupēšana pēc pilsētas

Ansons Liepāja 2 101,8 0 0Ansons Rīga 7 1163,7545 0 0Ansons 9 1265,5545 0 1Antropovs Liepāja 4 564,543 0 0Antropovs Rīga 10 1252,6335 0 0Antropovs 14 1817,1765 0 1Aņisimovs Liepāja 2 320,976 0 0Aņisimovs Rīga 9 804,702 0 0Aņisimovs 11 1125,678 0 1Aņiskovecs Liepāja 5 380,572 0 0Aņiskovecs Rīga 7 1432,785 0 0Aņiskovecs 12 1813,357 0 1Arsentjeva Rīga 5 877,47 0 0Arsentjeva Liepāja 5 945,75 0 0Arsentjeva 10 1823,22 0 1…Vērzemnieks Liepāja 2 112,588 0 0Vērzemnieks Rīga 12 2151,6825 0 0Vērzemnieks 14 2264,2705 0 1

Liepāja 90 11448,549 1 0Rīga 199 31963,3645 1 0

289 43411,9135 1 178 rows selected

No tā var redzēt:

Grupēšana pēc uzvārda

Grupēšana pēc pilsētas Nozīme

0 0 Parastā starpsumma, kas varētu būt iegūta no

23

Page 24: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

GROUP BY operatora

0 1 Starpsumma pēc uzvārda, ko var iegūt ar ROLLUP vai CUBE operatoriem

1 0 Starpsumma pēc pilsētas, ko var iegūt tikai ar CUBE operatoru

1 1 Vaicājuma kopsumma, ko var iegūt ar ROLLUP vai CUBE operatoriem

Ar šīm vērtībām tagad ir vieglāk izveidot programmu datu apkopošanai. Arī

GROUPING kolonas var būt izmantotas rezultātu kārtošanai vai filtrācijai:

SELECT Uzvards, Pilseta, Count(*) As "Ierakstu skaits", Sum(Summa) As Summa, GROUPING(Uzvards) AS "Grupēšana pēc uzvārda", GROUPING(Pilseta) AS "Grupēšana pēc pilsētas"FROM SkatsGROUP BY CUBE (Uzvards, Pilseta)HAVING GROUPING(Uzvards) = 1 OR GROUPING(Pilseta) = 1ORDER BY Uzvards,Summa;

UZVARDS PILSETA Ierakstu skaits SUMMA Grupēšana

pēc uzvārdaGrupēšana pēc pilsētas

Akantjevs 8 1079,326 0 1Ansons 9 1265,5545 0 1Antropovs 14 1817,1765 0 1Aņisimovs 11 1125,678 0 1Aņiskovecs 12 1813,357 0 1Arsentjeva 10 1823,22 0 1Āboliņš 15 1411,8885 0 1Balcers 9 1374,447 0 1Bernšteine 14 1510,768 0 1Bessonova 10 1919,6475 0 1Blauva 18 3160,694 0 1Bodžs 13 1897,892 0 1Boginskis 4 658,918 0 1Borovskis 3 205 0 1Brēdiķis 19 2822,951 0 1Duškins 12 2378,578 0 1Guževs 10 1379,581 0 1Ivanovs 4 458,9135 0 1Mihailovs 8 1074,3065 0 1Pakers 12 2287,34 0 1Petrišins 12 2364,5685 0 1Pūpoliņš 10 1366,619 0 1Sila 10 1887,628 0 1Slobodnik 12 1917,239 0 1

24

Page 25: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

UZVARDS PILSETA Ierakstu skaits SUMMA Grupēšana

pēc uzvārdaGrupēšana pēc pilsētas

Suvorovs 16 2146,3515 0 1Vērzemnieks 14 2264,2705 0 1

Liepāja 90 11448,549 1 0Rīga 199 31963,3645 1 0

289 43411,9135 1 1

5.5. GROUPING_ID vaicājumi

Funkcija GROUPING_ID piedāvā kompaktāko alternatīvu starprezultātu

identifikācijai. Tā izvada dimensijas kolonas kā argumentus pēc GROUP BY līmeņa.

Kā piemēru var apskatīt vaicājumu, kas bija apskatīts ar GROUPING

funkciju:

SELECT Uzvards, Pilseta, Count(*) As "Ierakstu skaits", Sum(Summa) As Summa, GROUPING_ID(Uzvards, Pilseta) AS Grupēšana FROM SkatsGROUP BY CUBE (Uzvards, Pilseta)ORDER BY Uzvards,Summa;

UZVARDS PILSETA Ierakstu skaits SUMMA GrupēšanaAnsons Liepāja 2 101,8 0Ansons Rīga 7 1163,7545 0Ansons 9 1265,5545 1Antropovs Liepāja 4 564,543 0Antropovs Rīga 10 1252,6335 0Antropovs 14 1817,1765 1Aņisimovs Liepāja 2 320,976 0Aņisimovs Rīga 9 804,702 0Aņisimovs 11 1125,678 1Aņiskovecs Liepāja 5 380,572 0Aņiskovecs Rīga 7 1432,785 0Aņiskovecs 12 1813,357 1…Vērzemnieks Liepāja 2 112,588 0Vērzemnieks Rīga 12 2151,6825 0Vērzemnieks 14 2264,2705 1

Liepāja 90 11448,549 2Rīga 199 31963,3645 2

289 43411,9135 378 rows selected

25

Page 26: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

6. SQL MODEL VAICĀJUMI

Bieži izstrādājot vaicājumus rodas problēmas milzīgo vaicājuma dēļ, īpaši gadījumos

ar aprēķinu iteratīviem metodēm, starprezultātu aprēķināšanām, risinājumiem, kas

pieprasa blakus vērtības utt. Tas vada pie ātrdarbības samazināšanas un koda

caurskatāmības bojāšanu. Lai atrisinātu šīs problēmas, ir piedāvāts izmantot SQL

MODEL operatoru.

SQL MODEL operators ir SELECT konstrukcijas paplašinājums, kas ir

pieejams sakot ar Oracle 10 versiju. MODEL ļauj izmantot SELECT rezultātus kā

daudzdimensiju masīvu, mainīt un pievienot elementus, veikt sarežģītas agregātas

funkcijas, un arī risināt problēmas, ko pirms tam tika risināts tikai ar PL/SQL. Tajā

pašā laikā valodas konstrukcijas ir labi caurskatāmi un saprotami.

MODEL operatora sintakse ir sekojošā:

MODEL [IGNORE NAV] [RETURN UPDATED ROWS] [PARTITION BY (partition_column_1, ...)] DIMENSION BY (dimension_column_1, ...) MEASURES (measured_column_1, ...) RULES [AUTOMATIC ORDER | ITERATE (value) [UNTIL (expression)]] ( rule_1, ... );

MODEL operators tiek izpildīts viens no pēdējam. Pēc tā ir izpildīts tikai

DISTINCT un ORDER BY operatori. Pielietošanas rezultātā aprēķini ir izvadīti

masīvā measured_column_n ar dimensijām dimension_column_n. Parametrs

PARTITION BY ir neobligāts un nosāka nodalījumus. Likumi tiek izpildīti

definēšanas kartībā.

MODEL operatoru darbā var apskatīt ar dimensiju tabulu „Darbinieku_Dim”

palīdzību. Pašlaik darbiniekam ar ID=1 ir alga 345 lati (sk. 17. att.). Ar likumu

MODEL operatora ir iespējams izmainīt to uz citu vērtību, piemērām 500 Ls, kā ir

redzams 18. attēlā.

26

Page 27: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 17. Darbinieka ar ID=1 alga

Attēls 18. Izmainīta darbinieka alga

Likumus arī var definēt visai grupai vai grupas daļai ar filtra palīdzību. To var

darīt sekojošā veidā:

Alga[Darbinieka_ID<20, Amats LIKE ‘Selle%’, any]

Ar šāda veida likumiem nevar veidot jaunus elementus, bet tikai atjaunot

vērtības jau eksistējošos elementos. Kā piemērs ir apskatīts uzdevums, kad ir

27

Page 28: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

nepieciešams palielināt algu elektronodaļas darbiniekiem par 50% un arī apreķināt

vidējo algu katrā nodaļā. To var izdarīt ar sekojošo vaicājumu:

SELECT *FROM Darbinieku_DimMODEL DIMENSION BY (Darbinieka_Id,Amats, Nodala) MEASURES (Alga) RULES ( Alga[Any, Any, 'Electro'] = Alga[CV(Darbinieka_Id), CV(Amats),Cv(Nodala)] * 1.5, Alga[Null, Null, 'Electro'] = AVG(Alga)[Any,Any,'Electro'], Alga[Null, Null, 'Office'] = AVG(Alga)[Any,Any,'Office'], Alga[Null, Null, 'Paper'] = AVG(Alga)[Any,Any,'Paper'], Alga[Null, Null, 'PR'] = AVG(Alga)[Any,Any,'PR'], Alga[Null, Null, 'Valdība'] = AVG(Alga)[Any,Any,'Valdība'] )ORDER BY Amats,Nodala;

Attēls 19. MODEL vaicājuma rezultāts

28

Page 29: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

7. PIVOT VAICĀJUMI

PIVOT vaicājumi iekļauj sevī rindu transformāciju kolonnās (pivot) vai

kolonnu transformāciju rindās (unpivot), lai radītu rezultātus pagriezta formātā.

Pagrieziens ir izplatīta metode, īpaši atskaišu ģenerēšanai, kas bija pieejams SQL

valodā un Oracle versijās ilgu laiku. Taču tikai Oracle 11. Versijā parādījās operatori

PIVOT un UNPIVOT. Šie operatori ir SELECT operatora paplašinājumi ar savu

sintaksi un struktūtu.

PIVOT operatora darbības ir pārsvarā zināmi: vairākas rindas tiek apkopotas

jeb agregātas un pagriezti, lai tiktu atspoguļotiem kā kolonnas, kur katra kolonna ir

atsevišķo agregāto datu kopa. Kopumā, to sintakse ir šāda:

SELECT ...FROM ...PIVOT ( pivot_clause pivot_for_clause pivot_in_clause )WHERE ...

kur pivot_clause - apraksta kolonas, kas tiks agregātas;

pivot_for_clause - apraksta kolonas, kas tiks grupēti un pagriezti;

pivot_in_clause - apraksta ierobežojumus pivot_for_clause

daļai.

PIVOT funkcija nav pieejama ORACLE SQL Developer 3.0.04 versija, līdz ar

to uzdevums ir izpildīts izmantojot Oracle Database 11g Express Edition. Pirmais

vaicājums var būt sekojošs:

SELECT *FROM Darbinieku_DimPivot ( Avg(Alga) For Nodala In ('Electro', 'Office', 'Paper', 'PR'));

Tomēr, kā ir ir redzms 20. attēlā rezultāts nav lietderīgs, jo tas izvada visu

informāciju un rezultātu apkopošana nav redzama.

29

Page 30: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 20. PIVOT vaicājums

Lai izlabotu situāciju, jādefinē apakškopu iepriekš:

WITH pivot_data AS (SELECT Nodala, Amats, AlgaFROM Darbinieku_Dim)SELECT * FROM pivot_dataPivot ( Avg(Alga) For Nodala In ('Electro', 'Office', 'Paper', 'PR'));

30

Page 31: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 21. Vidējā alga pēc amata katra nodaļā

Ja pievienot pivot_clause daļā nosaukumu, tad tā paradīsies arī

rezultātos. Tas ir svarīgi, lai īpaši paradīt kā dati ir agregēti vai kad ir vairāk nekā

viens rezultāts:

WITH pivot_data AS (SELECT Nodala, Amats, AlgaFROM Darbinieku_Dim)SELECT *FROM pivot_dataPivot ( Sum(Alga) as ALGA, COUNT(Alga) as Daudzums For Nodala In ('Electro', 'Office', 'Paper', 'PR'));

Attēls 22. Vidējā alga un darbinieku skaits pēc amata katra nodaļā

Pirms Oracle 11. versijai līdzīgu rezultātu bija iespējams sasniegt izmantojot

DECODE funkciju kopā ar agregācijas funkciju. Piemēram sekojošs vaicājums izdot

tādu pašu rezultātu kā iepriekšējs vaicājums.

SELECT Amats, avg(DECODE(Nodala, 'Electro', ALGA, 0)) AS "'Electro'_ALGA", count(DECODE(Nodala, 'Electro', ALGA, 0)) AS "'Electro'_DAUDZUMS", avg(Decode(Nodala, 'Office', Alga, 0)) AS "'Office'_ALGA", count(DECODE(Nodala, 'Office', ALGA, 0)) AS "'Office'_DAUDZUMS", avg(DECODE(Nodala, 'Paper', ALGA, 0)) AS "'Paper'_ALGA", count(DECODE(Nodala, 'Paper', ALGA, 0)) AS "'Paper'_DAUDZUMS",

31

Page 32: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

avg(DECODE(Nodala, 'PR', ALGA, 0)) AS "'PR'_ALGA", count(DECODE(Nodala, 'PR', ALGA, 0)) AS "'PR'_DAUDZUMS"From Darbinieku_DimGROUP BY Amats;

32

Page 33: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

8. MATERIALIZĒTIE SKATI

Materializētie skati pirmo riezi parādījās Oracle 8. versijā kā daļa no

komponentes Pārskatu vadība. Daudzi cilvēki ikdienā lieto materializētos skatus,

vienīgā atšķirība ir, ka viņi tos lieto ar citu vārdu, piemēram, summārās vai agregātu

tabulas.

Materializētie skati ļauj būtiski samazināt saliktu vaicājumu ar plašu atribūtu

agregāciju izpildes laiku. Tiek izmantota arī kopsavilkumu konsultanta komponente,

kas iesaka administratoram, kādus materializētos skatus radīt, dzēst un saglabāt.

Lielākos materializēto skatu ieguvumus gūs lietotājs, kas lietos datu noliktavu.

Tiks izmantots vaicājumu pārrakstīšanas mehānisms Oracle serverī automātiski

pārrakstīs vaicājumu tā, lai tiktu izmantots materializētais skats.

Materializētie skati pilda dažādas funkcijas: vaicājumu izpildes ātruma

palielināšana, datu kopēšana, datu apstrāde un apkopošana. Informāciju no

materializētajiem skatiem var izgūt ar vienkāršu SELECT vaicājumu palīdzību.

Materializētais skats ir saglabāta vaicājuma atbilde. Lai izveidotu

materializētu skatu, ir nepieciešams definēt:

1) apraksts, kā fiziski tiek glabāti dati ;

2) kad vajag aizpildīt materializēto skatu uzreiz pēc izveidošanas vai

vēlāk;

3) kā atjaunot datus, kad dati atbilstošās tabulās mainās;

4) kad veikt datu atjaunošanu: katras transakcijas beigās, vai pēc

pieprasījuma;

5) izmantot skatu, lai pārrakstītu vaicājumu, vai nē;

6) SELECT operators, kurš apraksta materializēta skata saturu.

Pirms materializēta skata veidošanas datu bāzē ir iespējams sakumā pārbaudīt

to ar utilītu EXPLAIN_MVIEW. Utilīta palīdz noskaidrot, vai materializētā skata

vaicājumu būs iespējams ātri atjaunot, vai nē. Utilīta paskaidros, kādas rindiņas

nepietiek materializēta skatā definējumā.

33

Page 34: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Darbā izveidotais materializētais skats ir izmantots darbam ar transakcijām

pēc darbinieka uzvārda, klienta ID, piegādes pilsētas un transakcijas summas.

Materializētā skata izveidošana notiek ar sekojošo vaicājumu:

CREATE MATERIALIZED VIEW Materializetais_Skats BUILD IMMEDIATE ENABLE QUERY REWRITE AS SELECT C.Uzvards, F.Klients, A.Pilseta, (F.Daudzums*P.Cena*(100-K.Atlaide)/100) AS Summa FROM Faktu_Tabula F, Precu_Dim P, Klientu_Dim K, Darbinieku_Dim D, Cilveku_Dim C, Adresu_Dim A WHERE F.Prece = P.Preces_Id AND F.Klients = K.Klienta_Id AND F.Darbinieks = D.Darbinieka_Id AND D.Cilveks_Fk = C.Cilveka_Id AND K.Adrese_FK = A.Adreses_ID;

34

Page 35: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 23. Materializētā skata izveidošana

SQL komandu izpildes plāna ierakstīšanai izmanto tabulu PLAN_TABLE.

Vaicājuma izpildes plāna iegūšana un ierakstīšana tabulā PLAN_TABLE:

EXPLAIN PLANSET STATEMENT_ID = 'Transakciju_skats' FOR SELECT C.Uzvards, F.Klients, A.Pilseta, (F.Daudzums*P.Cena*(100-K.Atlaide)/100) AS Summa FROM Faktu_Tabula F, Precu_Dim P, Klientu_Dim K, Darbinieku_Dim D, Cilveku_Dim C, Adresu_Dim A WHERE F.Prece = P.Preces_Id AND F.Klients = K.Klienta_Id AND F.Darbinieks = D.Darbinieka_Id

35

Page 36: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

AND D.Cilveks_Fk = C.Cilveka_Id AND K.Adrese_FK = A.Adreses_ID;

Attēls 24. Plāna ierakstīšana

Izpildes plāna izvade ir ierakstīts tabulā PLAN_TABLE un to var apskatīt ar

SELECT vaicājumu:

SELECT Statement_Id, Operation, OptionsFROM Plan_TableWHERE Statement_Id='Transakciju_skats';

36

Page 37: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Attēls 25. SELECT vaicājuma izpilde

Ir iespējams pārbaudīt materializētā skata neizmantošanu ar jauno izpildes

plāna ierakstīšanu un tālāko plāno apskati:

EXPLAIN PLANSET STATEMENT_ID = 'Skata_neizmantosana' FOR SELECT C.Uzvards, F.Klients, A.Pilseta, (F.Daudzums*P.Cena*(100-K.Atlaide)/100) AS Summa FROM Faktu_Tabula F, Precu_Dim P, Klientu_Dim K, Darbinieku_Dim D, Cilveku_Dim C, Adresu_Dim A WHERE F.Prece = P.Preces_Id AND F.Klients = K.Klienta_Id AND F.Darbinieks = D.Darbinieka_Id AND D.Cilveks_Fk = C.Cilveka_Id AND K.Adrese_FK = A.Adreses_ID;

SELECT Statement_Id, Operation, OptionsFROM Plan_TableWHERE Statement_Id='Skata_neizmantosana';

37

Page 38: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

38

Page 39: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

9. SECINĀJUMI

Darba mērķis tiek definēts kā izpētīt datu noliktavas tehnoloģija. Mērķa

sasniegšanai tika izdomāta uzskaitīšanas sistēma biroja preču veikalam SIA

VEIKALS, kas satur informāciju par precēm, klientiem, darbiniekiem un to

mijiedarbības vēsturi jeb transakcijām. Tika izdomātas datu bāzes tabulas un objekti,

kā arī loģiskas saites starp tām. Kā rezultāts, darbā ir aprakstīta darbība ar datu

noliktavas tehnoloģijām, kas ietver sevī vairākus posmus tādus kā faktu tabulas,

dimensiju tabulu, materializētu skatu utt izmantošana. Ir definēti un izpildīti vairāki

vaicājumi.

Datu noliktavas ir pielietotas vairākās jomās, jo tās ļauj saglabāt un apstrādāt

datus. Datu noliktavas var būt izmantotas uzskaitīšanas sistēmās, finanšu sistēmās,

krājumu vadības sistēmās un vairākās citās sistēmās.

Viena no stiprām pusēm šajā datu bāzē ir dimensiju modelēšana. Tā ir metode,

kas tiek lietota projektējot datu noliktavas datu struktūras. Šī tehnoloģija nodrošina

datu struktūras vieglu uztveramību un izprotamību. Dimensiju modeļa priekšrocības ir

sekojošas:

Dimensiju modelis ir labi izprotams un no tā vienkārši var iegūt

nepieciešamos datus.

Visas dimensijas ir loģiski ekvivalentas. Līdz ar to vaicājumi ir

simetriski, vienveidīgi.

Dimensiju modelis ir viegli paplašināms, pievienojot jaunus faktus,

jaunas dimensijas, jaunus dimensiju atribūtus.

Jaunu apakšdimensiju ieviešana.

Praktiskais darbs tika izpildīts aptuveni 40 stundu laikā. Darba ietvaros ir

izveidotas 5 dimensiju tabulas un viena faktu tabula, kas ir savienotas sniegpārsla

veidā. Klāt izveidotām tabulām, darbā ir izpildīti un aprakstīti vairāki vaicājumi.

Darbā iekļauti vaicājumi neierobežo visus vaicājumus, kas tika izpildīti darba procesa,

bet darbā ir iekļauti tikai labākos piemērus pēc autora domām.

39

Page 40: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

Pirmais apskatītais vaicājumu klāsts ir grupēšanas vaicājumi, kur autors

papildi izpētīja vairākus grupēšanas operatorus kā ROLLUP, GROUPING_ID un

citus.

Otrā vaicājumu grupa izmantoja MODEL operatoru. Principā MODEL netiek

izmantots bieži, jo gandrīz visu to darbu var realizēt ar analītiskām funkcijām, bet ko

nevar – parast netiek risināts datu bāzes līmenī. Bet tomēr ir izdevīgi izmantot

MODEL, kad:

Ir jāģenerē tiešam sarežģīts vaicājums, kas ir labi caurskatāms;

Atlase nav iespējama par ar analītiskām funkcijām;

Vaicājums tiek ģenerēts ar augsto valodas palīdzību, jo vieglāk definēt

MODEL likumus nekā analītiskie likumi;

Ir veikta resursuietilpīga skaitļošana.

Pēdējā vaicājumu grupa izmantoja materializētus skatus.

Darba gaita bija dažādas grūtības. Daļa no tām tika izraisīta nepareizas

sintakses dēļ vai nepareizas datu bāzes vienību definēšanas secību.

Vēl viena problēma bija saistīta ar to, ka PIVOT funkcija nav pieejama Oracle

Developer rīkā, un bija jāmeklē cits rīks, kas atbalstu šo funkciju. Rezultātā tika

izvelēts Oracle Database 11g Express Edition, jo tas bija līdzīgāk Oracle Developer

pēc darbības principa nekā citi rīki.

Kaut gan darba izstrāde aizņēma daudz laika, tomēr darbs ir bijis interesants

un dot daudz prasmju un zināšanas, kas noteikti būs nepieciešamas turpmākajā

mācību laikā un profesionālā darbībā.

Apkopojot visu izdarīto, autors ir ļoti apmierināts ar paveikto darbu, jo visa

izdomāta struktūra funkcionē korekti un visi informācijas objekti mijiedarbojoties

savā starpā pilnīgi saskaņā ar uzstādītu loģiku, kas ļauj secināt, ka šo datu bāzes

paraugu var realizēt arī reālajā dzīvē.

40

Page 41: Anotācija -    Web viewORACLE SQL Developer ir SQL*Plus grafiskā versija, ... Oracle® Database Data Warehousing Guide 11g Release 2 (11.2). Chapter 22 . SQL . for. Modeling

10. IZMANTOTĀS LITERATŪRAS SARAKSTS

1) Jāņa Eiduka lekciju konspekts

2) Jāņa Eiduka disks ar piemēriem

3) Oracle® Database Data Warehousing Guide 11g Release 2 (11.2).

Chapter 22 SQL for Modeling

4) Oracle® Database Performance Tuning Guide 11g Release 1 (11.1).

Chapter 12 Using EXPLAIN PLAN

5) Oracle® Database Data Warehousing Guide 11g Release 1 (11.1).

Chapter 8 Basic Materialized Views

6) Oracle® Database Data Warehousing Guide 11g Release 1 (11.1).

Chapter 9 Advanced Materialized Views

7) The SQL Model Clause of Oracle Database 10g.

41