WordPress.com
Datorzinātnes un Informācijas tehnoloģijas fakultāte
2. praktiskais darbs priekšmetā
Progresīvās Datu Bāzes
„Temporālās datu bāzes izveidošana un temporālo vaicājumu realizēšana”
Viktorija Raizina
I DMIO – 2 (ITI)
St.apl. 051RDB278
2008.gads
ANOTĀCIJA
Darbā ir aprakstīti temporālās bāzes projektēšana un realizēšana ar Oracle 10g Enterprise Edition palīdzību, tā pat arī papildus utilītu izmantošana (SQL*Plus un TOAD FOR ORACLE 9.5 PORTABLE).
Darbā ir dots datu bāze „Tenisa klubs „ATPŪTA”” piemērs un tajā ir secīgi aprakstīta datu bāzes projektēšana un realizēšana. Projektēšanas mērķis darbā ir nevis iedziļināšanās tieši izstrādes tehnikā, bet gan tikai datu bāzes darbības aptuvenais darbības definējums. Tā pat secīgi ir aprakstīti paredzamie realizēšanas posmi (laika sērijas, objekti, skati, tipi, vaicājumi, kas arī turpmākajā, realizācijas, darba daļā tika īstenoti. Tā pat nodefinētais uzdevums tika papildināts ar vēl dažiem vaicājumiem, kas nebija minēti projektēšanas daļā (klona tabulas izmantošana, unfold funkcija un funkcija round).
Vizuāli ir parādīti visi realizācijas rezultāti, kā arī ir sniegts plašs salīdzinājums un pārbaude ar darba uzdevuma grafisko analoģiju.
Darbs izstrādāts izmantojot datoru AMD Athlon 3000+, 1024MB DDR operatīvo atmiņu Windows XP Proffesional vidē.
Darba saturā ir 85 attēli, 4 tabulas, 12 nodaļas, secinājumi, saturs un literatūras avoti. Kopumā darbs ir izklāstīts 62 lappusēs.
SATURS
UZDEVUMA NOSTĀDNE 5
TELPISKĀS DATU BĀZES PROJEKTĒŠANA 6
1. TEMPORĀLO VAICĀJUMU DEFINĒŠANA DABĪGAJĀ VALODĀ 6
1.1. Tabulu un datu izvēle 6
1.2. Temporālas algebras pamatdarbības un Allena operatori 6
1.3. Temporālie vaicājumi dabiskajā valodā 8
1.3.1. 1.vaicājums 9
1.3.2. 2.vaicājums 9
1.3.3. 3.vaicājums 10
1.3.4. 4.vaicājums 10
1.3.5. 5.vaicājums 10
1.3.6. 6.vaicājums 11
2. LAIKA SĒRIJU DEFINĒŠANA 12
2.1. 1.laika sērija – TENISISTI 12
2.2. 2.laika sērija - ATBILDĪGIE 13
2.3. 3.laika sērija – PAKALPOJUMI 13
3. UZDEVUMA GRAFISKĀ ANALOĢIJA 15
3.1. 1.laika sērijas grafiskā analoģija 15
3.2. 2.laika sērijas grafiskā analoģija 16
3.3. 3.laika sērijas grafiskā analoģija 16
4. METOŽU DEFINĒJUMS 18
5. GLABĀŠANAS STRUKTŪRAS DEFINĒJUMS 19
6. IZGŪŠANAS STRUKTŪRAS DEFINĒJUMS 21
6.1. Transformācija 21
6.2. Objektu skati 22
TELPISKĀS DATU BĀZES REALIZĒŠANA 24
7. DB STRUKTŪRU UN METOŽU REALIZĒŠANA 24
7.1. Jaunas darba virsmas izveide 24
7.2. Tabulu, objektu un metožu izveide 24
7.2.1. 1.laika sērijas izveide 24
7.2.2. 2.laika sērijas izveide 26
7.2.3. 3.laika sērijas izveide 27
7.2.4. Pārbaudes 29
8. DATU IEVADE 32
8.1. Datu ievade 1.laika sērijā 32
8.2. Datu ievade 2.laika sērijā 33
8.3. Datu ievade 3.laika sērijā 34
8.4. Pārbaudes 35
9. DEFINĒTO OBJEKTU SKATU IZVEIDOŠANA 39
9.1. Definētie skati 39
9.2. Pārbaudes 39
10. DEFINĒTO VAICĀJUMU REALIZĒŠANA 42
10.1. 1.vaicājums 42
10.1.1. Pārbaude pēc grafiskās analoģijas 42
10.2. 2.vaicājums 42
10.2.1. Papildus skats 43
10.2.2. Vaicājums 43
10.2.3. Pārbaude pēc grafiskās analoģijas 43
10.3. 3.vaicājums 44
10.3.1. Papildus skats 44
10.3.2. Vaicājums 44
10.3.3. Pārbaude pēc grafiskās analoģijas 46
10.4. 4.vaicājums 46
10.4.1. Pārbaude pēc grafiskās analoģijas 47
10.5. 5.vaicājums 48
10.5.1. Papildus skats 48
10.5.2. Vaicājums 48
10.5.3. Pārbaude pēc grafiskās analoģijas 48
10.6. 6.vaicājums 49
10.6.1. Pārbaude pēc grafiskās analoģijas 49
11. CITI VAICĀJUMI 51
11.1. ROUND funkcija un vaicājums 51
11.2. KLONA tabula un vaicājums 51
11.3. UNFOLD funkcija un vaicājums 54
12. IESKATS TIMEDB PROGRAMMATŪRĀ 58
SECINĀJUMI 59
IZMANTOTĀ LITERATŪRA 62
UZDEVUMA NOSTĀDNE
o Definēt dabiskajā valodā vismaz 4 vaicājumus;
o Definēt vismaz 3 laika sērijas (balstoties uz iepriekšdefinētajiem vaicājumiem);
o Uzskicēt uzdevuma grafisko analoģiju (shēmas ar intervāliem, u.tml. darba atvieglošanai un analīzei);
o Definēt vismaz 3 sīkāko metožu loģikas;
o Definēt vismaz 3 Allena operatoru realizējošās metodes;
o Definēt datu bāzes glabāšanas struktūru;
o Definēt izgūšanas struktūru:
➢ Vismaz 3 objekta skati;
o Realizēt datu bāzes un metožu struktūru;
o Izpildīt temporālos vaicājumus (izmantojot SQL + Metodes + transformāciju tabulu);
o Izdarīt secinājumus.
TELPISKĀS DATU BĀZES PROJEKTĒŠANA
TEMPORĀLO VAICĀJUMU DEFINĒŠANA DABĪGAJĀ VALODĀ
1. Tabulu un datu izvēle
PAR PROBLēMAS VIDI SAVā DARBā IZVēLēJOS TENISA KORTU IKMēNEšA ORGANIZēšANAS UN NOMāšANAS STRUKTūRU. Šī TēMA MAN IR DIEZGAN TUVA, JO PATI ESMU SAVā LAIKā PIESTRāDāJUSI KāDā NO VALSTIJ PIEDEROšAJIEM TENISA KORTIEM UN ZINU ARī TO DARBīBAS STRUKTūRU, Kā ARī ORIENTēJOS KORTA NOMāšANAS LIETāS. PIE TAM, PATI SPēLēJOT TENISU, SPēJU ATšķIRT ARī SPēLēTāJU LīMENI. VEICOT DARBUS DB2, BIJU IZMANTOJUSI LīDZīGU PROBLēMAS VIDI (SAISTīBā AR TENISU – TENISA čEMPIONāTS), TāPēC NOLēMU ATVIEGLOT SAVU UZDEVUMU UN KāRTēJO REIZI NEDAUDZ PāRVEIDOT SAVU IEPRIEKšēJO DARBU SKICES UN IDEJAS, LAI TāS ATBILSTU DARBA UZDEVUMA NOSTāDNEI, KAS, VIENNOZīMīGI, ATVIEGLO TIEšI DARBA RADOšāKO DAļU – UZDEVUMA IZDOMāšANU.
2. Temporālas algebras pamatdarbības un Allena operatori
PIRMS SāKS VAICāJUMU DEFINēšANU, APSKATīSIM TEMPORāLAS ALGEBRAS PAMATDARBīBAS.
Temporālo algebru izmanto darbojoties ar laika intervālu lielumiem, tiek izdalītas septiņas pamatoperācijas:
1. Projekcija: specifisku tabulas kolonu atlase.
2. Atlase: specifisku tabulas rindu atlase.
3. Reizinājums: tabulu rakstu savienojums.
4. Apvienojums: laika intervālu apvienojums.
5. Starpība: tabulu rakstu starpība.
6. Atklāt (Unfold): intervāla sadalīšana punktos atbilstoši noteiktai precizitātei (granularitātei).
7. Iesaiņot (Fold): Pretēja darbība UnFold, kas vairākus laika punktus apvieno vienā intervālā, atbilstoši granularitātei.
Tagad mēģināšu sīkāk aprakstīt katru no pamatdarbībām.
1. Temporālās algebras operācija Projekcija (()
▪ Projekcija ir unāra operācija, kura izvēlas relācijas R kolonu apakškopu. Piemēram: (UZV,LAIKS(Darbinieki)
▪ Operācijas rezultāts ir relācija R´(X), kura iegūta atlasot attiecīgos atribūtus no relācijas R un izslēdzot dublējošos rakstus.
▪ Temporāla projekcija ne vienmēr dod temporālu relāciju.
2. Temporālās algebras operācija Atlase (()
▪ Temporāla atlase veic rakstu izdalīšanu pēc norādītā laika nosacījumiem. Tas dod iespēju lietot laika predikātus un līdz ar to precizēt izgūstamos datus.
▪ Temporālās algebras pieraksts ir, piemēram, sekojošs: (LAIKS = [1998.06.01, 1999.06.01)(Darbinieki).
3. Temporālās algebras operācija Reizinājums (()
▪ Reizinājums savieno visus tabulu rakstus un ar atlases palīdzību var izvēlēties vajadzīgos.
▪ Temporālajā algebrā eksistē speciāls reizinājums (konkurējošais reizinājums). Tā darbības princips ir sekojošs: izvēlas tikai tos rakstus, kuriem laika intervāli pārklājas un rezultātu veido šo intervālu pārklājumi.
4. Temporālās algebras darbība Apvienojums (()
▪ Apvienojums veido rakstus ar apvienotiem laika intervāliem.
X
Y
X ( Y
5. Temporālās algebras darbība Starpība (()
▪ Starpība dod visus pirmā operanda rakstus, kuru laika intervāli nesakrīt ar otrā operanda rakstu laika intervāliem.
X
Y
X - Y
6. Temporālās algebras operācija Unfold
▪ Ar Unfold (atklāt) operāciju var sadalīt laika intervālu:
a) laika punktos, atbilstoši dotajai granularitātei;
b) mazākos intervālos, atbilstoši nosacījumiem.
a) Intervāls
Laika granula (punkts)
b)
• Ja ir relāciju shēma R(A, T), kurā r = {(a, [t1, tn)} un doto intervālu ir nepieciešams sadalīt, tad Unfold operācija var būt definēta sekojoši: Unfold(R) = R´(A, T) un r´ = {(a, [t1, t2)), ..., (a, [tn-1, tn))} vai r´ = {(a, t1), ..., (a, tn)}, ja atribūta T vērtības ir laika punkti.
▪ Operācija Unfold virtuāli izveido tā saucamo laika sēriju, kura sastāv no visiem esošiem laika punktiem konkrētajā relācijā.
7. Temporālās algebras operācija Fold
▪ Fold (iesaiņot) operācija laika punktu kopu transformē laika intervālā, atbilstoši izvēlētai laika granularitātei.
Laika punktu kopa
Laika granula (punkts)
Intervāls
▪ Starp operācijām Fold un Unfold pastāv sakarība: Fold(Unfold(R)) = R
▪ Ar operāciju Fold, izmantojot jaunus nosacījumus, var izveidot jaunus vajadzīgus intervālus.
Darbā tiks izmantotas arī temporālās algebras darbības pie nodefinēto temporālo vaicājumu realizācijas.
Allena operatori(laika predikāti), tos pielieto dažādu laika posmu salīdzināšanai, proti pārbaudei vai interesējošie intervāli pārklājas, ir vienādi, ietilpst, atrodas pirms, saskaras utt. Visbiežāk objekta metožu veidā izmanto operatorus, ko var aplūkot 1.2.1.attēlā.
[pic] [pic]
[pic] [pic]
[pic] [pic]
[pic]
1.2.1.att. Allena operatori
Šie operatori var atgriezt divas vērtības vai nu tie izpildās(TRUE), vai arī neizpildās(FALSE).
Tabulā 1, pretīm Allena operatoriem ir paradīti attiecīgie TSQL2 operatori.
Tabula 1. Allena un Temporālie SQL2 operatori.
[pic]
3. Temporālie vaicājumi dabiskajā valodā
IR NEDAUDZ GRūTI SāKUMā DEFINēT VAICāJUMUS, JA NAV IEPRIEKš IZDOMāTA DATU BāZE, TAčU TOMēR TAS NAV NEIESPēJAMI. PROTAMS, ORIENTēJOTIES NOTEIKTAJā PROBLēMAS VIDē, IR APTUVENI SKAIDRS KO GRIBēTOS IERAUDZīT KATRā NO VAICāJUMIEM.
Paši par sevi, temporālie vaicājumi ir ļoti noderīgi informācijas vākšanai, salīdzināšanai un analizēšanai par dažādiem laika posmiem. Līdz ar to, darba gaitā vēlos aptuveni 6 vaicājumus.
1. 1.vaicājums
PIRMAJā VAICāJUMā IZVADīSIM INFORMāCIJU PAR TO, KURš IR BIJIS ATBILDīGS PAR KORTU PIRMS KāDA NOTEIKTA ATBILDīGā (šāDA INFORMāCIJA IR NEPIECIEšAMA PARASTI TAD, JA KAUT KAS IR NOTICIS TENISA KORTā, UN TIKA PAMANīTS TIKAI NāKOšā ATBILDīGā DARBINIEKA DARBA LAIKā – LīDZ AR TO, IR JāNOSKAIDRO IEPRIEKšēJAIS). ŠO VAICāJUMU IZPILDīšU AR OBJEKTA SKATA PALīDZīBU UN ARī DAžIEM ALLENA OPERATORIEM – PIRMS UN SATIEK (OPERATORI TIKS REALIZēTI METOžU VEIDā) (SKAT. 1.3.1.1.ATT).
[pic]
1.3.1.1.att. Pirmā vaicājuma definēšana
2. 2.vaicājums
OTRAJā VAICāJUMā MēģINāšU IZVADīT INFORMāCIJU PAR TENISA KORTA īRēTāJIEM, JEB SPēLēTāJIEM KāDā NOTEIKTā DIENā, JEB NOTEIKTā LAIKA PUNKTā. PAGAIDāM NEDEFINēšU KONKRēTO DIENU, JO VēL NAV NEDZ IZVEIDOTAS TABULAS, NEDZ ARī IEVADīTI DATI. DOTAIS VAICāJUMS IZMANTOS TEMPORāLāS ALGEBRAS DARBīBU ATLASE (σ) (SKAT. 1.3.2.1.ATT.).
[pic]
1.3.2.1.att. Otrā vaicājuma definēšana
3. 3.vaicājums
TREšAIS VAICāJUMS BūS DIEZGAN VIENKāRšS. TAJā ATTēLOSIM TENISA KORTU UN INVENTāRA NOMāšANAS INTENSITāTI KORTU DARBīBAS LAIKā. VAICāJUMS IZMANTOS PROJEKCIJU NO TEMPORāLāS ALGEBRAS DARBīBāM ((), TāTAD TIKS MEKLēTA INFORMāCIJA PAR TENISA KORTU īRES REIZēM (SKAT. 1.3.3.1.ATT.). Šī VAICāJUMA IZPILDEI TIKS IZVEIDOTS ARī SPECIFISKS SKATS.
[pic]
1.3.3.1.att. Trešā vaicājuma definēšana
4. 4.vaicājums
CETURTAJā VAICāJUMā MEKLēSIM INFORMāCIJU PAR TO, KāDI TENISISTA ABONEMENTA LīMEņI IR PIEREģISTRēTI KāDA KONKRēTA DARBINIEKA LAIKā, LīDZ AR TO - KāDUS ABONEMENTUS TIEšI šIS ATBILDīGAIS PAR KORTIEM IR IZRAKSTīJIS. ŠEIT TIKS IZMANTOTS PREDIKāTS IETILPST (ALLENA OPERATORS). ŠAJā VAICāJUMā IESPēJAMS BūS NEPIECIEšAMS SASKAITīT DARBINIEKA IZRAKSTīTOS ABONEMENTUS, JO TAD VARēS LABāK SALīDZINāT KURI KORTU ATBILDīGIE KāDUS UN CIK ABONEMENTUS IR IZSNIEGUšI. VAICāJUMA IZPILDEI ARī TIKS IZMANTOTS OBJEKTU SKATS (SKAT. 1.3.4.1.ATT.).
[pic]
1.3.4.1.att. Ceturtā vaicājuma definēšana
5. 5.vaicājums
PIEKTAIS VAICāJUMS IZVADīS INFORMāCIJU PAR PAKALPOJUMA SNIEGšANAS LAIKU (īRES IESPēJAS), KURš SAKRITA AR KāDA DARBINIEKA DARBīBAS LAIKU, KAMēR VIņš IR BIJIS ATBILDīGS PAR TENISA KORTIEM. ŠEIT IZMANTOSIM ALLENA OPERATORU VIENāDS, AR KURA PALīDZīBU VEIKSIM SALīDZINāšANU. PIRMS TAM BūS JāIZVEIDO ATSEVIšķS SKATS (SKAT. 1.3.5.1.ATT.).
[pic]
1.3.5.1.att. Piektā vaicājuma definēšana
6. 6.vaicājums
AR SESTā VAICāJUMA PALīDZīBU IZVADīSIM INFORMāCIJU PAR TO, VAI IR BIJIS KāDS PAKALPOJUMS, KURU UZREIZ KāDS NO TENISISTIEM IR IZMANTOJIS (IZīRēJIS), KOPš TAS IR BIJIS PIEEJAMS. ŠEIT ATKAL IZMANTOSIM LAIKA PREDIKāTU – VIENāDS SāKUMS, BET PIRMS TAM IZVEIDOSIM ATTIECīGU SKATU.
[pic]
1.3.6.1.att. Sestā vaicājuma definēšana
Tagad, kad ir definēti iespējamie vaicājumi, mēģināsim izveidot laika sērijas, balstoties uz to, lai no tiem būtu iespējams izgūt tikko definētos vaicājumus (iekļaujot laika sērijās pieprasītos intervālus).
LAIKA SĒRIJU DEFINĒŠANA
Kā jau biju minējusi, tad temporālajā datu bāzē, ko izveidosim, tiks glabāta informācija par tenisa kortu centra, pieņemsim „Atpūta”, darbību, to abonentiem, atbildīgajiem par kortiem un sniegtajiem pakalpojumiem. Lai realizētu datu bāzi, mēģināsim nodefinēt 3 laika sērijas. Datumi tiek ievietoti formātā YYYY.MM.DD. Tā pat pieņemsim, ka tenisa klubs „Atpūta” ir sācis savu darbību kopš 2008.gada 1.janvāra.
1. 1.laika sērija – TENISISTI
ŠAJā LAIKA SēRIJā GLABāSIES DATI PAR TENISA KORTU KLIENTIEM, VIņU ABONEMENTIEM UN ABONEMENTU PERIODIEM. PROTAMS, ABONEMENTS TIEK PIEšķIRTS ATKARīBā NO SPēLēTāJA PROFESIONALITāTES LīMEņA. REāLAJā DZīVē PARASTI VAIRāK MAKSā TIE, KURI IR PROFESIONāļI, SAVUKāRT IESāCēJI MAKSā MAZāK, LAI VIņI BIEžāK NāKTU. TO VISU DARBINIEKI PARASTI PAMATO AR INFLāCIJU. BET, JA CILVēKS MīL šO SPORTA VEIDU, IR APMIERINāTS AR SNIEGTO PAKALPOJUMU KVALITāTI – VIņš NāK UN TURPINA ATTīSTīT SAVAS SPēJAS.
Tabulā 2 ir apkopoti paredzamie dati pirmajai laika sērijai.
Tabula 2. 1.laika sērija.
|NR |Vārds |Uzvārds |Abonementa līmenis |Kluba biedra laika posms |
|1 |Viktorija |Raizina |Māceklis |[2008.01.16, 2008.03.24) |
| | | |Iesācējs |[2008.03.24, 2008.06.23) |
| | | |Amatieris |[2008.06.23, 2008.10.16) |
| | | |Profesionālis |[2008.10.16, now) |
|2 |Dārta |Vītola |Iesācējs |[2008.01.01, 2008.03.24) |
| | | |Amatieris |[2008.03.24, 2008.05.26) |
| | | |Profesionālis |[2008.05.26, now) |
|3 |Aleksandrs |Stepanovs |Māceklis |[2008.02.14, 2008.09.15) |
| | | |Iesācējs |[2008.09.15, now) |
|4 |Jānis |Kalējs |Māceklis |[2008.03.09, now) |
|5 |Eduards |Veldums |Iesācējs |[2008.01.14, 2008.06.24) |
| | | |Amatieris |[2008.06.24,now) |
|6 |Irīna |Pospelova |Māceklis |[2008.03.15, 2008.04.30) |
| | | |Iesācējs |[2008.04.30, 2008.08.15) |
| | | |Amatieris |[2008.08.15,now) |
|7 |Edgars |Zilberts |Māceklis |[2008.01.18, 2008.06.22) |
| | | |Iesācējs |[2008.06.22, 2008.08.27) |
| | | |Amatieris |[2008.08.27, 2008.10.28) |
| | | |Profesionālis |[2008.10.28, now) |
|8 |Ieva |Zepa |Amatieris |[2008.10.15, now) |
|9 |Marta |Krasovska |Profesionālis |[2008.04.18, now) |
|10 |Eduards |Neilands |Amatieris |[2008.02.29, 2008.10.16) |
| | | |Profesionālis |[2008.10.16, now) |
|11 |Ilze |Briede |Māceklis |[2008.04.06, 2008.07.29) |
| | | |Iesācējs |[2008.07.29, 2008.09.21) |
| | | |Amatieris |[2008.09.21, now) |
|12 |Ēriks |Gulbis |Māceklis |[2008.01.01, 2008.02.19) |
| | | |Iesācējs |[2008.02.19, 2008.05.24) |
| | | |Amatieris |[2008.05.24, 2008.09.15) |
| | | |Profesionālis |[2008.09.15, now) |
|13 |Milena |Kreice |Iesācējs |[2008.09.24, now) |
2. 2.laika sērija - ATBILDĪGIE
OTRAJā LAIKA SēRIJā TIKS GLABāTA INFORMāCIJA PAR TENISA KLUBA „ATPūTA” DARBINIEKIEM, KURI IR ATBILDīGI PAR KORTIEM UN PAKALPOJUMU IZīRēšANU. VISBIEžāK KLUBā IR VAIRāKI DARBINIEKI, TOMēR TIEK FIKSēTA INFORMāCIJA ARī PAR TIEM, KURI AGRāK IR STRāDāJUšI.
Tabulā 3 ir apkopoti paredzamie dati otrajai laika sērijai.
Tabula 3. 2.laika sērija.
|NR |Vārds |Uzvārds |Vecums |Alga |Līmenis |Darba laika posms |
|1 |Ieva |Bende |54 |360 |Vecākais atbildīgais 1 |[2008.01.01, now) |
|2 |Andris |Bondars |41 |300 |Jaunākais atbildīgais 1 |[2008.02.06, 2008.11.01) |
|3 |Alise |Skrīvere |61 |420 |Seniors 1 |[2008.02.15, now) |
|4 |Jānis |Ērms |64 |400 |Seniors 2 |[2008.01.23, 2008.06.16) |
|5 |Pēteris |Salnis |52 |370 |Vecākais atbildīgais 2 |[2008.07.12, 2008.10.13) |
|6 |Jānis |Kreilis |34 |290 |Jaunākais atbildīgais 2 |[2008.01.06, 2008.05.29) |
|7 |Madara |Nereta |39 |310 |Jaunākais atbildīgais 3 |[2008.03.01, now ) |
3. 3.laika sērija – PAKALPOJUMI
PēDēJā, TREšAJā, LAIKA SēRIJā, KURā BūS IEKļAUTI DIVU VEIDU INTERVāLI (LīDZ AR TO, TāS BūS IT Kā DIVAS LAIKA SēRIJAS VIENā), GLABāSIES INFORMāCIJA PAR PAKALPOJUMIEM, KURUS IR IESPēJAMS IZNOMāT TENISA KLUBā. PROTAMS, KA PAKALPOJUMU IR DAUDZ, UN ARī īRēTāJU IR DAUDZ, LīDZ AR TO PAKALPOJUMU NOMA IR DIEZGAN BIEžA. TOMēR šEIT IR JāņEM VēRā, KA PAKALPOJUMI IR īRēJAMI VISMAZ UZ VIENU DIENU, KAS TIEK IEKļAUTS ABONEMENTA CENā. PROTAMS, KATRU PAKALPOJUMU IR ATļAUTS MAINīT, IZVēLOTIES KāDU CITU.
Tabulā 4 ir apkopoti paredzamie dati trešajai laika sērijai.
Tabula 4. 3.laika sērija.
|NR |Pakalpojums |Stāvoklis |Piedāvājuma posms |Īres laiki |
|1 |Korts 1 |lietojams |[2008.01.01, now) |[2008.01.01, 2008.01.14) |
| | | | |[2008.02.13, 2008.03.15) |
| | | | |[2008.03.26, 2008.05.27) |
| | | | |[2008.06.04, 2008.08.20) |
| | | | |[2008.08.20, 2008.09.21) |
| | | | |[2008.09.30, now) |
|2 |Rakete Wilson |lietojamas |[2008.03.09, now) |[2008.03.20, 2008.04.30) |
| | | | |[2008.05.13, 2008.06.02) |
| | | | |[2008.06.05, 2008.07.01) |
| | | | |[2008.07.01, 2008.07.13) |
| | | | |[2008.08.01, 2008.08.29) |
| | | | |[2008.10.15, now) |
|3 |Rakete Dunlop |salauzta |[2008.02.06, 2008.11.01) |[2008.02.15, 2008.03.03) |
| | | | |[2008.03.19, 2008.03.31) |
| | | | |[2008.04.18, 2008.05.01) |
| | | | |[2008.05.30, 2008.07.06) |
| | | | |[2008.08.03, 2008.11.01) |
|4 |Bumbas |lietojamas |[2008.01.01, now) |[2008.01.05, 2008.03.06) |
| | | | |[2008.04.11, 2008.05.01) |
| | | | |[2008.05.03, 2008.05.16) |
| | | | |[2008.05.20, 2008.06.01) |
| | | | |[2008.06.03, 2008.07.19) |
| | | | |[2008.07.29, 2008.08.30) |
| | | | |[2008.09.30, 2008.10.25) |
|5 |Korts 2 |lietojams |[2008.04.01, now) |[2008.04.12, 2008.04.15) |
| | | | |[2008.04.18, 2008.05.09) |
| | | | |[2008.05.09, 2008.05.19) |
| | | | |[2008.05.25, 2008.06.18) |
| | | | |[2008.06.22, 2008.07.21) |
| | | | |[2008.07.31, 2008.09.16) |
| | | | |[2008.09.28, 2008.10.30) |
|6 |Korts 3 |slēgts |[2008.03.01, 2008.10.30) |[2008.03.01, 2008.03.13) |
| | | | |[2008.03.17, 2008.04.02) |
| | | | |[2008.04.30, 2008.05.29) |
| | | | |[2008.06.01, 2008.07.01) |
| | | | |[2008.08.27, 2008.10.16) |
| | | | |[2008.10.28, 2008.10.30) |
Tagad, kad visbeidzot ir definētas laika sērijas, var mēģināt izveidot telpiskās datu bāzes grafisko analoģiju un turpināt darbu pie datu bāzes projektēšanas.
UZDEVUMA GRAFISKĀ ANALOĢIJA
Tagad, kad gan sērijas gan vaicājumi ir definēti, varam mēģināt attēlot asis laika sērijām, katram no sērijās definētajiem intervāliem, lai būtu iespējams aplūkot ko patiešām varētu izvadīt katrs no vēlākajiem vaicājumiem.
Laika asis sastāv kopumā no 1 gada (2008), kurā pašreiz ir tikai 11 mēneši (no 1. janvāra līdz 1. novembrim) un katrā mēnesī vismaz 30 dienas. Tātad, uz laika ass ir aptuveni 330 vienības. Tas protams ir pārāk daudz, lai to varētu attēlot grafiski, tāpēc mēģināšu sniegt vismaz aptuveno shematisko analoģiju. Bet, neskatoties uz to, ar MS Excel palīdzību ir iespējams izveidot katram mēnesim atbilstošo dienu skaitu, kaut arī attēls būs diezgan saspiests.
Jāievēro tas, ka laika noslēguma posms nav iekļauts, t.i. ja datums ir norādīts līdz 1.novembrim, tad pēdējā atzīmējamā diena ir 31.oktobris.
Tātad, sāksim pēc kārtas.
4. 1.laika sērijas grafiskā analoģija
MēģINāSIM GRAFISKI ATTēLOT 1.LAIKA SēRIJā IEVADīTOS DATUS (SKAT. 3.1.1.ATT.).
[pic]
3.1.1.att. Pirmās laika sērijas grafiskā analoģija
Kā redzams, tad katra tenisista laika posms sākas kādā brīdī, bet vēl joprojām nebeidzas, tāpēc tas nav noslēgts. Tā pat arī katra līmeņa abonementa piešķiršana ir attēlota savā krāsā.
5. 2.laika sērijas grafiskā analoģija
ATTēLOSIM ARī VIENKāRšāKO, JEB 2 LAIKA SēRIJU (SKAT. 3.2.1.ATT.).
[pic]
3.2.1.att. Otrās laika sērijas grafiskā analoģija
Izveidotais attēls pilnībā atbilst sastādītajai laika sērijai. Šeit darbinieka darba laiks ir ieslēgts taisnstūros. Kā var pamanīt attēlā, tad 1,3 un 7 darbiniekam gala posms nav noslēgts, bet ilgst līdz 1.novembrim. Tas ir tādēļ, ka tie vēl joprojām strādā, bet statistika ir apkopota līdz 1 novembrim. Darbinieks 2 ir strādājis līdz 1.novembrim darbu, tādēļ viņa posms ir noslēgts.
6. 3.laika sērijas grafiskā analoģija
TREšā LAIKA SēRIJA IR VISSAREžģīTāKā, JO TAJā IR 2 DAžāDI LAIKA POSMU VEIDI (SKAT. 3.3.1.ATT.).
[pic]
3.3.1.att. Trešās laika sērijas grafiskā analoģija
Šajā laika sērijā ar lieliem taisnstūriem attēloju to laika posmu, kurā piedāvājums ir bijis pieejams. Šī laika posma vidienē ir attēloti mazāki laika posmi, kuri apzīmē katra pakalpojuma īri.
Šāda veida attēlošana ir diezgan laikietilpīga un sarežģīta. Tomēr droši varu teikt to, ka tas, ka esmu saglabājusi mērogu katrai laika sērijai, palīdzēs turpmāk vaicājumu izveidē, jo tad vienkārši varētu it kā uzlikt vienu laika sēriju otrai un redzēt informāciju, kuru būtu jāizvada katram no vaicājumiem.
Tātad, kad ir definētas laika sērijas, vaicājumi un veikta laika sēriju grafiskās analoģijas uzskicēšana, var mēģināt sākt definēt metodes, ar kurām strādāsim darba realizācijas daļā.
METOŽU DEFINĒJUMS
Objektu tipiem var izveidot metodes, kuras izmantojot, ir iespējams salīdzināt atsevišķus objekta tipa eksemplārus un veikt tamlīdzīgas darbības. Pamatā metodes ir vai nu funkcijas, vai metodes, kuras definētas objekta tipa iekšienē. Metodes iespējams izveidot dažādās programmēšanas vidēs, piemēram: PL/SQL, JAVA, Python u.tml.
Savā darbā izmantošu PL/SQL (Procedural Language / Structured Query Language). Metožu galvenes tiek nodefinētas objekta tipa veidošanas:
CREATE OR REPLACE TYPE obj AS OBJECT(
...
MEMBER FUNCTION check(param1, param2) RETURN BOOLEAN,
...
);
Šajā piemērā tiek izveidota metode CHECK, kas pēc uzbūves ir funkcija ar diviem parametriem un atgriež BOOLEAN vērtību (TRUE vai FALSE) savas darbības beigās. Metodes var būt arī procedūras, tad vienīgi FINCTION vietā izteiksmē jāieraksta PROCEDURE, un jāatceras, ka procedūrām nelieto atslēgvārdu RETURN. Var būt vairāku veidu metodes, proti bez MEMBER vēl var būt STATIC un CONSTRUCTOR. Savā darbā visas metodes veidošu kā MEMBER tipa.
Kad ir nodefinēta metodes galvene, ir nepieciešams arī nodefinēt pašu metodi. To var izdarīt, nodefinējot procedūras (funkcijas) struktūru objekta tipa ķermenī:
CREATE OR REPLACE TYPE BODY obj AS
...
MEMBER FUNCTION check(param1, param2) RETURN BOOLEAN IS
BEGIN
...
END;
...
END;
MEMBER metodi var kombinēt ar sekojošiem atslēgvārdiem MAP un ORDER (pie metodes definēšanas tie jāraksta priekšā MEMBER). Tas ir domāts tam, lai pēc tam būtu iespējams salīdzināt objektu eksemplārus. Jāatceras, ka viena objekta robežās var definēt tikai vienu MAP\ORDER MEMBER metodi, un ORDER MEMBER metodi var definēt tikai superklasei, nevis pēcteču klasēm.
Darba praktiskajā daļā ar metodēm realizēšu iepriekš aprakstītos Allena operatorus, kas dos iespēju salīdzināt un izanalizēt dažādus laika intervālus savā starpā.
Metodes būs MEMBER tipa funkcijas, kas atgriezīs skaitlisku vērtību 1 vai 0, gadījumā ja laika predikāts izpildīsies vai neizpildīsies. Tātad, izmantosim MEMBER tipa metodes, lai realizētu vaicājumus ar objektu kolonnām (objektu kolonnas, kuras saturēs datus par datumiem). Un , kā jau bija minēts iepriekš, tad metode saturēs visus iepriekš attēlotos (1.2 nodaļā) Allena operatorus (skat. 1.2.1.att.). Varu parādīt arī objektus, kuriem tiks izmantotas metodes (skat. 4.1.att.).
[pic]
4.1.att. Metožu un Allena operatoru izmantošana
GLABĀŠANAS STRUKTŪRAS DEFINĒJUMS
Pirmās laika sērijas, kurā glabājas dati par tenisistiem (identifikators, vārds, uzvārds, piešķirtais abonementa līmenis, attiecīgais abonementa laika posms), glabāšana tiks realizēta iekš tabulas ar ievietoto tabulu. Šeit tiks izveidots objekts ar datumiem kā abonementa ilguma laiks un arī abonementa līmenis, kā arī šis pats objekts tiks iekļauts iekļautajā tabulā kā TENISISTI (skat. 5.1.att.).
[pic]
5.1.att. Pirmās laika sērijas tabulas attēlošana
Otrās laika sērijas realizācijai, par tenisa kluba atbildīgajiem par kortiem, jeb darbiniekiem (identifikators, vārds, uzvārds, alga, vecums) un viņu darba termiņiem. Šos datus glabāsim objektu tabulā, kura arī iekļaus pilnīgi visu informāciju par šo laika sēriju, kura arī ir visvienkāršākā no visām (skat. 5.2.att.).
[pic]
5.2.att. Otrās laika sērijas tabulas attēlošana
Trešā laika sērija tiks glabāta vienā tabulā (it kā divas laika sērijas) – pakalpojuma pieejamības laika posms kā objektu kolona un pakalpojumu īres laiki kā iekļautā objektu tabula (skat. 5.3.att.). Šeit tiks izveidots objekts ar datumiem kā piedāvājuma laiks, kā arī šis pats objekts tiks iekļauts iekļautajā tabulā kā īres laiki katram pakalpojumam.
[pic]
5.3.att. Trešās laika sērijas tabulas attēlošana
IZGŪŠANAS STRUKTŪRAS DEFINĒJUMS
Tā kā temporālie dati tiek glabāti kā objekti, tad pie informācijas izgūšanas visizdevīgāk izmantot objektu skatus, kas pēc savas struktūras līdzīgi objektu tabulā, proti tiem ir objektu rindas, ar izteiksmes WITH OBJECT IDENTIFIER (Lauks1, Lauks2) iespējams definēt identifikators, ko izvēlas pats lietotājs, kāds tas būs, vēl arī objektu skatos var izmantot metodes, piemēram, MEMBER u.tml. Visā visumā objektu skati ir ļoti noderīgi, un arī šajā darbā to pielietošana būs redzama pie temporālo vaicājumu realizācijas.
7. Transformācija
TRANSFORMāCIJAS STRUKTūRU PIELIETOJUMS NEPIECIEšAMS DAžāDOS GADīJUMOS, PIEMēRAM, PIE OBJEKTU DATU IZVADES, LIETOTāJAM REZULTāTI NERETI LIEKAS, KA IZVADīTIE REZULTāTI IR NEPāRSKATāMI UN VIZUāLI NEIZSKATīGI, VAI ARī JA NO OBJEKTA NEPIECIEšAMS IZGūT TIKAI VIENU ATRIBūTU VAI ARī PēDīGI, JA NEPIECIEšAMS KāDU SPECIFISKU OBJEKTA ATRIBūTU IZMANTOT SALīDZINāšANAI AR CITIEM LIELUMIEM. PIEMēRAM, PIE DATIEM AR OBJEKTU KOLONU IZGūšANAS VAR PIELIETOT SEKOJOšU TRANSFORMāCIJAS METODI (SKAT. 6.1.1.ATT.).
|Tabula | |
|ID |[pic] |
|.... |... |
Tabula . Objektu kolona . Atribūts
6.1.1.att. Transformācijas metodes piemērs tabulai ar objektu kolonu
Darbojoties ar tabulu, kurā iekļauta kolekcija, nākas izmantot iebūvēto funkciju table(), kas pārveido iekļautās objektu tabulas ierakstus parastas tabulas veidā, kā rezultātā ir iespējama elementāra piekļuve jebkuram attiecīgajam objektu atribūtiem (skat. 6.1.2.att.).
|Tabula | |
|ID |[pic] |
|.... |... |
table( Tabula . Objektu kolekcija )
6.1.2.att. Transformācijas metodes piemērs tabulai ar iekļautu kolekciju
Lai piekļūtu Y vērtībai iekš iekļautās tabula vienkārši augstāk esošajā izteiksmē pierakstam klāt: . Y
Vēl ir arī citas iebūvētās transformācijas metodes, bet augstāk aprakstītās tieši arī tiks izmantotas uzdevuma praktiskajā daļā.
8. Objektu skati
OBJEKTU SKATS ļAUJ APVIENOT VIENā OBJEKTā DATUS NO ATSEVIšķāM TABULāM, TāDEJāDI VAICāJUMS, KAS IZGūST DATUS NO šī OBJEKTA SKATA, IR āTRāKS, DAUDZ REIžU VIEGLāKS UN SAPROTAMāKS NEKā DATU IZGūšANA NO VAIRāKāM TABULāM AR VIENKāRšA VAICāJUMA PALīDZīBU.
Pirmais objektu skats glabās datus par tenisa kluba tenisistu abonementu līmeņiem. No šī skata varēs ērti izmantot informāciju statistikas nolūkiem. Protams, ka šis skats, kā arī visi pārējie skati tiks vairākkārtīgi mainīti tieši pirms vaicājuma izgūšanas. Šis skats būs sarežģīts ar to, ka tajā tiks izgūti lauki gan no tabulas, gan arī no iekļautās tabulas ar iepriekš aprakstītas funkcijas TABLE() palīdzību. Kā identifikatora lauki kalpos datumu lauki NO un LĪDZ. Šis vaicājums sniedz informāciju tikai par 1.laika sēriju (skat. 6.2.1.att.). Zemāk ir dots paredzamais skata realizēšanas piemērs:
Create or replace View 2_skats of TEN_obj
With object identifier (no, lidz) as
SELECT b.limenis, b.no, b.lidz
From Tenisisti a, TABLE(a.speletajs) b;
[pic]
6.2.1.att. Skata dati no 1.laika sērijas
Otrā objekta skata realizācija būs diezgan vienkārša. Šeit mēs pamēģināsim izgūt atbildīgās personas informāciju. Savukārt, kā identifikatora lauki kalpos tieši datumu lauki NO un LĪDZ. Šis vaicājums sniedz informāciju tikai par 2.laika sēriju (skat. 6.2.2.att.). Zemāk ir dots paredzamais skata realizēšanas piemērs:
Create or replace View 2_skats of ATB_obj
With object identifier (no, lidz) as
select *
From Atbildigie;
[pic]
6.2.2.att. Skata dati no 2.laika sērijas
Trešais skats būs nedaudz līdzīgs pirmajam, bet tas gan glabās informāciju tikai par inventāra īrēšanas datiem, vieglākai statistikas vākšanai. Arī šeit kā identifikatora lauki kalpos datumu lauki NO un LĪDZ. Šis vaicājums sniedz informāciju tikai par 3.laika sēriju (skat. 6.2.3.att.). Zemāk ir dots paredzamais skata realizēšanas piemērs:
Create or replace View 3_skats of PL_obj
With object identifier (no, lidz) as
SELECT b.no, b.lidz
From Pakalpojumi a, TABLE(a.Ires_laiki) b;
[pic]
6.2.3.att. Skata dati no 3.laika sērijas
Iespējams, ka ne katrs no šiem skatiem atsevišķām laika sērijām tiks izmantots, tāpēc būs jāveido arī citi skati, tieši noteiktu vaicājumu realizēšanai.
Tagad, kas praktiski ir pabeigta temporālās datu bāzes projektēšana, varam sākt arī izveidotās struktūras realizāciju.
TELPISKĀS DATU BĀZES REALIZĒŠANA
DB STRUKTŪRU UN METOŽU REALIZĒŠANA
9. Jaunas darba virsmas izveide
STRāDāJOT PIE OTRā PRAKTISKā DARBA, NOLēMU IZVEIDOT JAUNU DARBA VIRSMU UN JAUNU LIETOTāJU, LAI, IZGūSTOT METADATUS, DATU BāZē NEATTēLOTOS IEPRIEKš IZVEIDOTāS TABULAS. TāTAD, IZVEIDOJAM LIETOTāJU „LAB2”, AR PAROLI „VIKA”, Kā ARī PIEšķIRAM LIETOTAJAM VISAS PRIVILēģIJAS (SKAT. 7.1.1.ATT.).
[pic]
7.1.1.att. Jauna lietotāja izveide
Pēc tam izveidojam jaunu darba virsmu TEMP_DB, ko ievietojam mapē D:\oracle1\product\10.2.0\TEMP_DB\temp_db.tbs. Pēc tam piešķiram izveidotajai darba videi lietotāju pēc noklusējuma (skat. 7.1.2.att.).
[pic]
7.1.2.att. Jaunas darba virsmas izveide
10. Tabulu, objektu un metožu izveide
1. 1.LAIKA SēRIJAS IZVEIDE
ŠIS IR PIRMAIS SOLIS TEMPORāLāS DATUBāZES IZVEIDOšANā.
Sākumā izveidosim objektu tipu TEN_OBJ. No veidojamā objekta tipa būs iespējams izveidot objektus, kuros varēs glabāt datus par tenisistu abonementu līmeņiem tenisa klubā, kā arī tā sākuma un beigu datumiem (skat. 7.2.1.1.att.).
[pic]
7.2.1.1.att. Objekta tipa TEN_OBJ izveide
Kā redzams no augstāk esošā attēla, tad Allena operatori ir realizēti ar objekta metodēm MEMBER function un ORDER MEMBER. Protams, varēja arī izveidot atsevišķu tipu pieņemsim datumiem, lai to varētu izmantot visur, taču nolēmu atturēties no šīs idejas un veidot katru laika sēriju atsevišķi, nejaucot secību.
Tagad aprakstīsim arī tikko nodefinētā tipa ķermeni, kurā nodefinēsim pašas metodes (skat. 7.2.1.2.att.).
[pic]
7.2.1.2.att. Objekta tipa TEN_OBJ ķermeņa izveide
Veidojamā tabulas struktūra būs tabula ar iekļautu kolekciju. Ievietojamās kolekcijas izveide redzama 7.2.1.3. attēlā.
[pic]
7.2.1.3.att. Iekļaujamās objektu kolekcijas izveidošana
Tagad izveidosim tabulu ar iekļauto kolekciju. Tabulā būs ievietoti atlikušie datu lauki, kurā glabāsies tenisista identifikators, vārds, uzvārds un arī objektu kolekcijas veidā – abonementu līmeņi tenisa klubā „Atpūta” un katra abonementa derīguma laika posms (skat. 7.2.1.4.att.).
[pic]
7.2.1.4.att. Tabulas TENISISTI ar iekļautu kolekciju izveidošana
Šobrīd pirmās laika sērijas izveide it kā ir pabeigta. Datu ievade un objektu skatu izveide būs iespējams aplūkot nākošajās nodaļās. Tātad, šobrīd var ķerties pie 2 un 3 laika sērijas.
2. 2.laika sērijas izveide
TAGAD ATKAL SāKUMā IZVEIDOSIM OBJEKTU TIPU ATB_OBJ , KURā NODEFINēSIM TENISA KLUBA ATBILDīGO PAR KORTIEM CILVēKU IDENTIFIKATORUS, VāRDUS, UZVāRDUS, ALGAS, VECUMU, AMATU UN DARBīBAS LAIKA POSMU (NO - LīDZ). ŠEIT UZREIZ VISI TABULAS LAUKI BūS IEKļAUTI TIPā (SKAT. 7.2.2.1.ATT.).
[pic]
7.2.2.1.att. Objekta tipa ATB_OBJ izveide
Arī šeit Allena operatori realizēti ar objekta metodēm ar funkciju MEMBER function.
Tagad atkal izveidosim tipa ķermeni, kurā nodefinēsim tādas pašas metodes, jo galu galā vēl līdz galam nav izlemts, kādi tieši Allena operatori būs nepieciešami, izpildot vaicājumus (skat. 7.2.2.2.att.).
[pic]
7.2.2.2.att. Objekta tipa ATB_OBJ ķermeņa izveide
Un arī izveidosim tabulu. Veidojamā tabula būs objektu tabula, jo kā jau biju minējusi iepriekš, tad tipā uzreiz tika definēti visi tabulas lauki (skat. 7.2.2.3.att.).
[pic]
7.2.2.3.att. Objektu tabulas ATBILDIGIE izveidošana
Tagad varam pāriet pie 3.laika sērijas izveidošanas.
3. 3.laika sērijas izveide
NāKAMAIS KO VEIDOSIM IR OBJEKTU TIPS, KURā TIKS GLABāTI TIKAI TEMPORāLIE DATI. ŠIS TIPS TIKS IZMANTOTS VIENā UN TAJā PAšā TABULā GAN Kā OBJEKTU KOLONA, GAN ARī Kā KOLEKCIJA. LīDZ AR TO VARēTU ARī TEIKT, KA šEIT IR VIENLAICīGI DIVAS LAIKA SēRIJAS (SKAT. 7.2.3.1.ATT.).
[pic]
7.2.3.1.att. Objekta tipa PL_OBJ izveide
Tagad definēsim atkal metodes tipa ķermenī. Izveidojamās metodes ir tādas pašas kā iepriekš (skat. 7.2.3.2.att.).
[pic]
7.2.3.2.att. Objekta tipa PL_OBJ ķermeņa izveide
Tagad atkal izveidojam ievietojamo kolekciju no objektu tipa PL_OBJ, kurā glabāsies dati par pakalpojumu īrēšanas datumiem (skat. 7.2.3.3.att.).
[pic]
7.2.3.3.att. Iekļaujamās objektu tabulas izveidošana
Un visbeidzot izveidosim arī pašu datu tabulu, kurā būs ievietota objektu kolona un arī kolekciju(abām struktūrām ir vienāds tips). Tabula sastāvēs no visiem atlikušajiem laukiem - pakalpojuma numurs, nosaukums, pašreizējais stāvoklis, pakalpojuma pieejamības laiks (kā objektu kolona) un pakalpojumu īres laiki (kā objektu kolekcija) (skat. 7.2.3.4.att.).
[pic]
7.2.3.4.att. Tabulas PAKALPOJUMI ar iekļautu kolekciju un objektu kolonnu izveidošana
Tagad, šķiet, laika sēriju izveide ir pabeigta, tāpēc varam veikt dažas nelielas pārbaudes un sākt arī datu ievadīšanu.
4. Pārbaudes
TAGAD, KAD IR IZVEIDOTAS VISAS LAIKA SēRIJAS, VARAM MēģINāT AR VAICāJUMA PALīDZīBU PāRBAUDīT TABULU ESAMīBU DATUBāZē (SKAT. 7.2.4.1.ATT.).
[pic]
7.2.4.1.att. Datu pārbaude datubāzē (1)
Kā redzams, tad šeit trūkt tabulas ATBILDĪGIE, jo tā ir objektu tabula, pati par sevi. Veiksim citu pārbaudi (skat. 7.2.4.2.att.). Izvadīsim datus par visu tabulu tipiem, attēlojot tipa nosaukumu, tipa kodu un atribūtu skaitu, izmantojot ALL_TYPES vārdnīcu.
[pic]
7.2.4.2.att. Datu pārbaude datubāzē (2)
Ir redzams kā mums ir divas kolekcijas, un trīs objekts ar dažādu skaitu atribūtiem.
Tagad attēlosim definējumu informācijas izgūšanai no ievietotajām tabulām. Lietosim SELECT vaicājumu no ALL_NESTED_TABLES. Izvadīsim ievietoto tabulu nosaukumus, ievietoto tabulu tipus, kolonnas, kurās ir ievietotas tabulas, kā arī augstākā ranga tabulas nosaukumu (skat. 7.2.4.3. att.)
[pic]
7.2.4.3.att. Datu pārbaude datubāzē (3)
Visbeidzot no visām izveidotām tabulām mēģināsim izgūt datus par tabulu nosaukumiem, tabulu tipiem un informāciju par to, vai tabula ir iekļauta vai nav (skat. 7.2.4.4.att.).
[pic]
7.2.4.4.att. Datu pārbaude datubāzē (4)
Pārbaudi varam veikt arī ar TOAD FOR ORACLE 9.5 PORTABLE (skat. 7.2.4.5.att.).
[pic]
7.2.4.5.att. Datu pārbaude datubāzē (5)
Attēlā varam redzēt, ka pirmā tabula ir objekts, nākošās divas ir ievietotas un pēdējās divas ir tabulas.
Ar tās pašas programmatūras palīdzību varam pārbaudīt katras tabulas saturu (skat. 7.2.4.6., 7.2.4.7., 7.2.4.8.att.).
[pic]
7.2.4.6.att. Datu pārbaude datubāzē (6) – objektu tabula ATBILDĪGIE
[pic]
7.2.4.7.att. Datu pārbaude datubāzē (7) – objektu tabula PAKALPOJUMI
[pic]
7.2.4.8.att. Datu pārbaude datubāzē (8) – objektu tabula TENISISTI
Tagad ir skaidri redzams, kas ir iekļaut datu bāzē, pēc veiktajām pārbaudēm. Līdz ar to, var sākt datu ievadi datu bāzē.
DATU IEVADE
Datu ievadi var veikt dažādos veidos. Šoreiz pamēģināsim to veikt pārsvarā ar INSERT funkcijas palīdzību. Protams, to varu izdarīt arī SQL*Loader, kā iepriekšējā darbā, taču šoreiz nolēmu, ka tas nebūs vajadzīgs, jo tabulu saturs pirmkārt nav tik liels, otrkārt, vairākkārtīgi kopējot pirmo izveidoto INSERT, datus varēs ievadīt pat nedaudz ātrāk.
11. Datu ievade 1.laika sērijā
DATU IEVADEI TABULāS AR IEKļAUTU OBJEKTU TABULU IR SAVAS īPATNīBAS. ŠEIT R JāNORāDA OBJEKTU KOLEKCIJAS TIPS (DATUMI) UN Tā IEKšIENē JāNORāDA KATRA RAKSTA VēRTīBAS UN TO TIPU(TEN_OBJ) (SKAT.8.1.1.ATT.).
[pic]
[pic]
[pic]
8.1.1.att. Datu ievade tabulā TENISISTI
12. Datu ievade 2.laika sērijā
INFORMāCIJAS IEVADE OBJEKTU TABULā ATšķIRAS NO IEVADES PARASTāS DATU TABULāS, JO ARī šEIT IR JāNORāDA OBJEKTA TIPA NOSAUKUMS (ATB_OBJ), UN ARī IEBūVēTāS FUNKCIJAS TO_DATE IZMANTOšANA PIE DATUMU IEVADES, KAS PāRVEIDO TEKSTA RINDU DATUMā PēC NORāDīTā FORMāTA (SKAT. 8.2.1.ATT).
[pic]
8.2.1.att. Datu ievade tabulā ATBILDIGIE
13. Datu ievade 3.laika sērijā
PēC TAM, KAD DATI JAU IR IEVADīTI IEPRIEKšēJāS LAIKA SēRIJāS, TAD šAJā DATU IEVADE PRAKTISKI NE AR KO NEATšķIRAS NO PIRMāS. TIKAI VIEN, KA OBJEKTI IR DIVI, DAžāDāS KOLONNāS (SKAT. 8.3.1.ATT.).
[pic]
[pic]
8.3.1.att. Datu ievade tabulā PAKALPOJUMI
14. Pārbaudes
LAI PāRBAUDīTU DATU ESAMīBU TABULāS, IZPILDīSIM PARASTUS VAICāJUMUS, TāDā VEIDā APLūKOJOT TABULU SATURU.
Pirmā tabula ko pārbaudīsim būs tabula TENISISTI (skat. 8.4.1.att.). Šeit mēs pārbaudīsim uzreiz arī vizuālo izskatu laika sērijai, pieprasot datus arī no objekta.
[pic]
8.4.1.att. Datu esamības pārbaude tabulā TENISISTI
Tagad pārbaudīsim ari tabulu ATBILDĪGIE, tādā pašā veidā. Taču šoreiz vaicājums nebūs sarežģīts, jo visa tabula ir objektu tabula ar vienu tipu (skat. 8.4.2.att.).
[pic]
8.4.2.att. Datu esamības pārbaude tabulā ATBILDIGIE
Un tagad varam pārbaudīt arī pēdējo laika sēriju, tā pat kā to darījām ar pirmās laika sērijas pārbaudi (skat. 8.4.3.att.).
[pic]
8.4.3.att. Datu esamības pārbaude tabulā PAKALPOJUMI
Visbeidzot, varam aplūkot, kas mums ir izveidojies ar TOAD FOR ORACLE 9.5 PORTABLE programmatūru (skat. 8.4.4., 8.4.5., 8.4.6.att.).
[pic]
8.4.4.att. Tabulas ATBILDIGIE saturs
[pic]
8.4.5.att. Tabulas PAKALPOJUMI saturs
Šeit mēs varam uzklikšķināt uz kolonnas IRE lauka DATASET un tiks attēlots palīglogs ar iekļautas tabulas datiem. Attēlā ir parādīts piemērs pirmajai rindai.
[pic]
8.4.6.att. Tabulas TENISISTI saturs
Šeit ir tā pat – uzklikšķinot uz lauka, iegūstam iekļautu tabulu tieši šim laukam ar nepieciešamo informāciju.
Tagad, kad dati ir ievadīti un pārbaudīti, varam sākt veikt dažādas operācijas ar datu bāzi – veidot skatus, vaicājumus, pārbaudīt funkciju darbību.
DEFINĒTO OBJEKTU SKATU IZVEIDOŠANA
15. Definētie skati
SāKUMā VAJADZēTU REALIZēT JAU IEPRIEKš DEFINēTOS SKATUS, JO CENTīSIMIES ARī NO TIEM REALIZēT LIELāKO DAļU NO VAICāJUMIEM. TAčU NOTEIKTI BūS NEPIECIEšAMS ARī IZVEIDOT PAPILDUS SKATUS CITIEM VAICāJUMIEM.
Tātad definētie. Kā jau bija stāstīts agrāk, tad izveidojamais objektu skats glabā datus par tenisistu abonementiem un to datumiem (skat. 9.1.1.att.).
[pic]
9.1.1.att. Skata TEN_SKATS izveidošana
Nākošais skats saturēs visu informāciju par tenisa kluba atbildīgo personālu, un kā identifikatora lauki kalpos datumu lauki NO un LIDZ (skat. 9.1.2.att.).
[pic]
9.1.2.att. Skata ATB_SKATS izveidošana
Kā pēdējais no iepriekš definētajiem skatiem ir skats, kurš satur tieši datus par pakalpojumu īres datumiem (skat. 9.1.3.att.).
[pic]
9.1.3.att. Skata PL_SKATS izveidošana
16. Pārbaudes
VAJADZēTU ARī PāRBAUDīT SKATU ESAMīBU DATU BāZē. TO MēS VARēTU IZDARīT AR VIENKāRšU VAICāJUMU (SKAT. 9.2.1.ATT.).
[pic]
9.2.1.att. Skatu esamības pārbaude datu bāzē
Būtu lietderīgi pārbaudīt arī skatu saturu ar visvienkāršākajiem vaicājumiem (skat. 9.2.2., 9.2.3., 9.2.4.att.).
[pic] [pic]
9.2.2.att. Skata TEN_SKATS saturs 9.2.3.att. Skata PL_SKATS saturs
[pic]
9.2.4.att. Skata ATB_SKATS saturs
Arī ar Toad for Oracle 9.5 Portable varam redzēt izveidotos skatus (skat. 9.2.5.att.).
[pic]
9.2.5.att. Skatu esamība datu bāzē
Tajā pašā programmatūrā var aplūkot arī katra skata saturu, bet šoreiz to nedarīsim, jo tas jau ir pārbaudīts ar SQL*Plus palīdzību.
Tagad varam mēģināt ķerties klāt arī definēto vaicājumu realizēšanai. Gadījumā, ja būs nepieciešams definēt un realizēt vēl kādu skatu, tad tas arī tiks aprakstīts.
DEFINĒTO VAICĀJUMU REALIZĒŠANA
17. 1.vaicājums
REALIZēSIM PAšU PIRMO DEFINēTO VAICāJUMU (SKAT. 10.1.1.ATT.).
[pic]
10.1.1.att. Pirmā vaicājuma realizēšana
Kā varam redzēt, tad pieprasot informāciju par to, kuri bija atbildīgie par kortiem pirms Pēteris Salna ir sācis strādāt, mums ir izvadīti 2 darbinieki. Šim vaicājumam tiek izmantots iepriekš izveidotais objektu skatu, kā arī Allena operatori(PIRMS un SATIEK), kas realizēti kā metodes.
Šāds rezultāts arī bija paredzams, izpētot uzdevuma grafisko analoģiju.
1. Pārbaude pēc grafiskās analoģijas
LAI PāRBAUDīTU VAICāJUMA PAREIZīBU, APLūKOSIM GRAFISKO ANALOģIJU 2.LAIKA SēRIJAI – ATBILDīGIE (SKAT. 10.1.1.1.ATT.).
[pic]
10.1.1.1.att. Pirmā vaicājuma pārbaude
18. 2.vaicājums
OTRā VAICāJUMA REALIZēšANAI BūS NEPIECIEšAMS PAPILDUS SKATS, TāPēC TAS IR SāKUMā JāIZVEIDO.
1. Papildus skats
PIRMā PAPILDUS SKATA SATURā BūS DATI NO TABULAS TENISISTI UN NO TāS PAšAS TABULAS IEKļAUTāS TABULAS (SKAT. 10.2.1.1.ATT.).
[pic]
10.2.1.1.att. Papildus skata izveide
2. Vaicājums
TAGAD, BALSTOTIES UZ TIKKO IZVEIDOTā SKATA, VARAM VEIDOT ARī VAICāJUMU (SKAT. 10.2.2.1.ATT.).
[pic]
10.2.2.1.att. Otrā vaicājuma realizēšana
Kā varam redzēt, tad šeit ir iegūti dati par to, kādi ir bijuši piereģistrēti abonementu līmeņi uz 2008.gada 1.aprīli. Vaicājumam tiek izmantota atlase(σLaiks=[dd.mm.yyyy](tenisisti)) no temporālās algebras darbību klāsta.
3. Pārbaude pēc grafiskās analoģijas
LAI PāRBAUDīTU VAICāJUMA PAREIZīBU, APLūKOSIM GRAFISKO ANALOģIJU 1.LAIKA SēRIJAI – TENISISTI (SKAT. 10.2.3.1.ATT.).
[pic]
10.2.3.1.att. Otrā vaicājuma pārbaude
19. 3.vaicājums
1. PAPILDUS SKATS
PIRMā PAPILDUS SKATA SATURā BūS DATI NO TABULAS TENISISTI UN NO TāS PAšAS TABULAS IEKļAUTāS TABULAS (SKAT. 10.3.1.1.ATT.).
[pic]
10.3.1.1.att. Papildus skata izveide
2. Vaicājums
TAGAD, BALSTOTIES UZ TIKKO IZVEIDOTā SKATA, VARAM VEIDOT ARī VAICāJUMU (SKAT. 10.3.2.1.ATT.).
[pic]
10.3.2.1.att. Trešā vaicājuma realizēšana
Kā varam redzēt, tad šeit ir iegūti dati par tiem laikiem, kad kāds no pakalpojumiem ir bijis īrēts. Vaicājums izmanto projekciju no temporālās algebras darbībām.
3. Pārbaude pēc grafiskās analoģijas
LAI PāRBAUDīTU VAICāJUMA PAREIZīBU, APLūKOSIM GRAFISKO ANALOģIJU 3.LAIKA SēRIJAI – PAKALPOJUMI (SKAT. 10.3.3.1.ATT.).
[pic]
10.3.3.1.att. Trešā vaicājuma pārbaude
20. 4.vaicājums
REALIZēSIM NāKOšO DEFINēTO VAICāJUMU (SKAT. 10.4.1.ATT.).
[pic]
10.4.1.att. Ceturtā vaicājuma realizēšana (1)
Šī vaicājuma mērķis bija noteikt, kādus abonementus ir reģistrējis Jānis Kreilis (izdevis un norakstījis) sava darba laikā, kamēr strādājis tenisa klubā „Atpūta”. Vaicājuma realizācijai tika izmantots laika predikāts IETILPST.
Lai, piemēram, salīdzinātu savā starpā darbinieku veiktās darbības, var izmantot iebūvēto funkciju COUNT, tādā veidā izdarot to katram un apskatoties kurš un cik daudz ir piereģistrējis abonementu (skat. 10.4.2.att.).
[pic]
10.4.2.att. Ceturtā vaicājuma realizēšana (2)
1. Pārbaude pēc grafiskās analoģijas
LAI PāRBAUDīTU VAICāJUMA PAREIZīBU, APLūKOSIM GRAFISKO ANALOģIJU 1.LAIKA SēRIJAI – TENISISTI(SKAT. 10.4.1.1.ATT.).
[pic]
10.4.1.1.att. Ceturtā vaicājuma pārbaude
21. 5.vaicājums
1. PAPILDUS SKATS
PIRMā PAPILDUS SKATA SATURā BūS DATI NO TABULAS TENISISTI UN NO TāS PAšAS TABULAS IEKļAUTāS TABULAS (SKAT. 10.5.1.1.ATT.).
[pic]
10.5.1.1.att. Papildus skata izveide
2. Vaicājums
TAGAD, BALSTOTIES UZ TIKKO IZVEIDOTā SKATA, VARAM VEIDOT ARī VAICāJUMU (SKAT. 10.5.2.1.ATT.).
[pic]
10.5.2.1.att. Piektā vaicājuma realizēšana
Šis vaicājums atrod tos pakalpojumus, kuru pieejamības periods ir vienāds ar tenisa kluba atbildīgā par kortiem Andra Bondara darba laiku. Vaicājumā tiek izmantots Allena operators VIENADS, kas veic šo divu laika posmu salīdzināšanu.
3. Pārbaude pēc grafiskās analoģijas
LAI PāRBAUDīTU VAICāJUMA PAREIZīBU, APLūKOSIM GRAFISKO ANALOģIJU 3.LAIKA SēRIJAI – PAKALPOJUMI (SKAT. 10.5.3.1.ATT.).
[pic]
10.5.3.1.att. Piektā vaicājuma pārbaude
22. 6.vaicājums
REALIZēSIM NāKOšO DEFINēTO VAICāJUMU (SKAT. 10.6.1.ATT.).
[pic]
10.6.1.att. Sestā vaicājuma realizēšana
Šis vaicājums var izmantot skatu, ko definējām piektajam vaicājumam, taču to es pamanīju nedaudz vēlāk, kad biju izveidojusi jau sesto, un veikusi vaicājuma izpildi. Tomēr šis skats ir identisks skatam pl_sk_5.
Tātad, vaicājums atrod tos pakalpojumus, kuri tikuši izīrēti uzreiz tajā pašā dienā, kopš pakalpojums ir bijis piedāvāts lietošanā. Vaicājuma realizācijai izmantots laika predikāts VIENĀDS SĀKUMS. No rezultātiem var redzēt, ja pieejamības laks un īres pirmais datums sakrīt.
1. Pārbaude pēc grafiskās analoģijas
LAI PāRBAUDīTU VAICāJUMA PAREIZīBU, APLūKOSIM GRAFISKO ANALOģIJU 3.LAIKA SēRIJAI – PAKALPOJUMI (SKAT. 10.6. 1.ATT.).
[pic]
10.6.1.att. Sestā vaicājuma pārbaude
Tagad, kad ir realizēti visi iepriekš definētie vaicājumi, varam mēģināt izpildīt arī dažus citus. Piemēram, izmantojot predikātu SATIEK un arī klona tabulu, iespējams, arī ar predikātu - PARKLAJAS.
CITI VAICĀJUMI
23. ROUND funkcija un vaicājums
PēC TAM, KAD IR PABEIGTI VISI DEFINēTIE UZDEVUMI, VēLēTOS PAMēģINāT ARī CITUS VAICāJUMUS. Kā PIRMO NO TIEM UZLēMU IZMANTOT FUNKCIJU ROUND. AR VAICāJUMU VēLēJOS NOSKAIDROT, KāDS IR TENISISTA ABONEMENTA LīMENIS UZ KONKRēTO DIENU – 03.NOVEMBRI, UN ARī CIK ILGI šIS TENISISTS IR TIEšI šī LīMEņA ABONEMENTS. ŠEIT TIEK IZMANTOTS ARī ALLENA OPERATORS, LAI DEFINēTU TO DIENU, UZ KURU SKATāS ABONEMENTU LīMEņUS. BET TAM, LAI NOSKAIDROTU TO, CIK DIENAS ABONEMENTS IR TIEšI šAJā LīMENī, TIEK IZMANTOTA PARASTA ATņEMšANAS OPERāCIJA IEKš IEBūVēTāS FUNKCIJAS ROUND (TEKOšā DIENA – ABONEMENTA IZSNIEGšANAS DIENA) (SKAT. 11.1.1.ATT.).
[pic]
11.1.1.att. Vaicājums ar funkciju ROUND un Allena operatoru
24. KLONA tabula un vaicājums
Tā PAT VēLēTOS PAMēģINāT ARī KLONA TABULAS IZMANTOšANU. TO MēģINāšU DARīT DIVOS DAžāDOS VEIDOS.
Pirmais vaicājums izveidos klona tabulu, kurā glabāsies dati par tenisistiem, kuriem ir bijis abonementa līmenis „MĀCEKLIS”, kā arī šī abonementa lietošanas posmi (skat. 11.2.1.att.).
[pic]
11.2.1.att. Vaicājums ar Klona tabulu
Izvadītos datus ir iespējams pārbaudīt arī ar uzdevuma grafiskās analoģijas palīdzību (skat. 11.2.2.att.).
[pic]
11.2.2.att. Vaicājuma ar Klona tabulu pārbaude ar grafisko analoģiju
Kā varam redzēt, tad arī pēc grafiskās analoģijas varam spriest, ka ir bijuši tieši 7 tenisisti ar šādu abonementa līmeni.
Ar otro vaicājumu, mēģināsim noskaidrot kuri tenisisti ar abonementa līmeni „MĀCEKLIS” pārklājas. Vaicājumam tiks izmantota klona tabula ar ALLENA operatoru.
Šeit ir svarīgs tieši pārklāšanās operatora definējums:
Ir periodu pārklājums [SAKUMS, BEIGAS], ja:
( 1_NO >= 2_NO un A_LIDZ >= 1_NO ) vai ( 1_NO < 2_NO un 1_LIDZ >=2_NO)
Pārklājuma periods [SAKUMS, BEIGAS]:
Ja 1_NO >= 2_NO, tad SAKUMS = 1_NO
Ja 1_NO < 2_NO, tad SAKUMS = 2_NO
Ja 1_LIDZ >= 2_LIDZ, tad BEIGAS = 2_LIDZ
Ja 1_LIDZ < 2_LIDZ, tad BEIGAS = 1_LIDZ
Tātad, mēģināsim realizēt vaicājumu (skat. 11.2.3.att.).
[pic]
11.2.3.att. Vaicājums ar Klona tabulu un ALLENA operatoru
Arī šeit pārbaudīsim rezultātus ar grafiskās analoģijas palīdzību (skat. 11.2.4.att.).
[pic]
11.2.4.att. Vaicājuma ar Klona tabulu un ALLENA operatoru pārbaude ar grafisko analoģiju
Skaidri redzams tas, kuri tenisisti atbilst vaicājumā nodefinētajām prasībām
25. UNFOLD funkcija un vaicājums
TAGAD APSKATīSIM UNFOLD FUNKCIJU, KURA NODROšINA TEMPORāLAS ALGEBRAS OPERāCIJU UNFOLD.
Temporālās algebras operācija Unfold
• Ar Unfold (atklāt) operāciju var sadalīt laika intervālu:
a) laika punktos, atbilstoši dotajai granularitātei;
b) mazākos intervālos, atbilstoši nosacījumiem.
a) Intervāls
Laika granula (punkts)
b)
• Operācija Unfold virtuāli izveido tā saucamo laika sēriju, kura sastāv no visiem esošiem laika punktiem konkrētajā relācijā.
Kā ieejas parametri funkcija saņem datu tipa PL_OBJ mainīgo – tas ir laika intervāls, kuru jāsadala. Pēc tam ir nākamais parametrs time_granule_type - tas ir laika granulas tips, piemēram, diena (day) vai nedeļa (week) un to skaits: granule_size, piemēram 1, 2, 3. Ja time_granule_type ir ‘day’ un granule_size ir 3, tad tas nozīmē to, ka intervāls tiks sadalīts laikā granulās pa trīm dienām. Izejas dati tiek glabāti tabulā my_period_table kā iepriekšizveidotā tipa PL_OBJ objekta tabula.
Sākumā mums derētu papildināt tabulu PAKALPOJUMI ar kādu ierakstu, kuram nav tik ilgs pieejamības periods, t.i., kurš tikai nesen tika piedāvāts (skat. 11.3.1.att.).
[pic]
11.3.1.att. Tabulas PAKALPOJUMI papildināšana
Tagad arī pārbaudīsim kā izskatās šis ieraksts pirms funkcijas UNFOLD pielietošanas (skat. 11.3.2.att.).
[pic]
11.3.2.att. Tabulas PAKALPOJUMI papildinātie dati
Tagad, izejot no tikko aprakstītā, varam sākt funkcijas izveidi.
Sākumā mums vajadzētu nodefinēt tabulu izejas datiem MY_PERIOD_TABLE, kura būs objektu tabula ar iepriekš izveidoto tipu PL_OBJ (skat. 11.3.3.att.).
[pic]
11.3.3.att. Izejas datu tabulas nodefinēšana
Un tagad varam mēģināt arī nodefinēt pašu UNFOLD funkciju (skat. 11.3.4.att.).
[pic]
11.3.4.att. Funkcijas UNFOLD definēšana
Tagad, kad funkcija ir nodefinēta, varam apskatīties arī to, ko mēs iegūsim, ja pielieto tikko nodefinēto funkciju (skat. 11.3.5.att.).
[pic]
11.3.5.att. Funkcijas UNFOLD darbība – pa dienām (1)
Kā varam redzēt, katrs intervāls, kurā pakalpojums ir bijis pieejams, tika sadalīts pa vienai dienai no 20.oktobra līdz 3.novembrim.
Līdzīgā veidā varam mēģināt visus piedāvātos pakalpojumus sadalīt intervālos pa pusgadiem. Šim nolūkam ir jānorāda tas, ka gribam dalīt pa mēnešiem „month” un norādām ka gribam mēnešus apvienot pa 6 vienībām (skat. 11.3.6.att.).
To pašu rezultātu iegūsim tad, ja norādīsim, ka gribam sadalīt pa nedēļām un apvienot nedēļas pa 24 ( 6 mēneši, katrā pa 4 nedēļām) (skat. 11.3.7.att.).
[pic]
11.3.6.att. Funkcijas UNFOLD darbība – pa mēnešiem pusgads (2)
[pic]
11.3.7.att. Funkcijas UNFOLD darbība – pa nedēļām pusgads (3)
Pēc attēliem ir skaidri redzams, ka ir iegūts vēlamais rezultāts.
IESKATS TIMEDB PROGRAMMATŪRĀ
1997.gadā Antreas Steiners un Mihaels Behlens izveidoja TimeBD prototipu, kurš atbalsta iespēju strādāt gan ar eksistējošiem, gan ar transakciju laikiem. Sistēma ir kā starpposms starp lietotāja interfeisu un vienu no komerciālajām datu bāzu vadības sistēmām (DBVS), kura nodrošina temporālo konstrukciju atbalstu, pārveidojot tās vienkāršajās struktūrās un otrādi. Vēlāk izstrādātāji ir mēģinājuši pozicionēt TimeDB kā komerciālo produktu, taču šajā lietā rezultātus neguva.
TimeDB atbalsta temporālo SQL versiju, ko mēdz saukt arī par ATSQL2[SBJS96a, SBJS96b, SBJS98], pārveidojot temporālos SQL definējumus, kā jau bija minēts, parastajos SQL definējumos. TimeDB, savukārt, atbalsta unikālu veidu lietojumu darbības implementēšanai ar vēsturiskiem (vai temporāliem) datiem. Izmantojot TimeDB, ir iespējams glabāt un vadīt ne tikai vienas datu bāzes definējumu (kā tas ir parasti pierastajās pieejamajās DBVS), bet vairākas datu bāzes vienlaikus. Pētījumi temporālās datu bāzes sfērā parāda to, ka kamēr parasti nav problēmu glabāt derīgus laika periodu datus komerciālajās DBVS vienā vai citā veidā, ir ļoti apgrūtinoši izpildīt vaicājumu vai veikt datu atjaunošanu (update) tādiem datiem un uzturēt tos kārtībā. Šie trūkumi ierobežojami, ja tiek izmantota DBVS. TimeDB, tomēr, nav pati par sevi DBVS, bet ir priekšvadītājs DBVS (visbiežāk Oracle). Pārveidojot temporālos SQL parastajos, TimeDB atbalsta temporālo funkcionēšanu netemporālajām relāciju DBVS. Šī sasnieguma priekšrocība ir tāda, ka eksistējoša datu bāze, kas glabājas komerciālajā DBVS un lietojumi, ar kuriem var piekļūt šiem datiem, joprojām var tikt izmantoti, kamēr jauns strādājošs lietojums ar temporāliem datiem tiek pievienots.
Pati par sevi TimeDB ir bitemporālā DBVS, bāzēta uz SQL, kura atbalsta vaicājumu valodu, datu manipulēšanas valodu, datu definēšanas valodu un ierobežojumus.
Pati pirmā TimeBD versija tika izveidota, izmantojot SICStus Prolog un tika darbam bāzēta uz SWIProlog. Savukārt jau otra versija tika bāzēta uz Java, izmantojot JDBC, kurai ir daudz vairāk priekšrocīju.
ATSQL2 ir trīs dažādu pieeju integrēšanas rezultāts, proti:
• TSQL, saskaņota temporālo vaicājumu valoda;
• ChronoLog, kas pārstāv temporālās pilnības konceptu;
• Bitemporāla ChronoSQL, kas atbalsta bitemporālo vaicājumu valodu.
Galvenais SQL atmiņas interpretētās iz ieviests sākot ar programmas 1.versiju tā, ka TimeDB var būt tikt palaists arī neizmantojot Oracle, vai kādu citu DBVS.
Pēdējā TimeDB versija – TimeDB 2.2 – ir pieejama kopš 2005.gada 21.maija. Tā darbojas uz Java platformas 1.4 un strādā ar Cloudscape 10 un Oracle 10g DBVS. Sybase joprojām tiek atbalstīts.
TimeDB 2.2 atbalsta sekojošās iespējas:
• Agregātfunkcijas;
• Group By definējumi;
• Having definējumi;
• Tabulu un kolonnu ierobežojumi;
• Dzimtais interfeis Java lietojumiem;
• Vēsturiska DB (valid time)
• Apakšvaicājumi
• Insert un Delete operācijas tabulām;
• Transakcijas (commit / rollback);
• Kā arī daudzas citas iespējas.
SECINĀJUMI
Izstrādātais darbs ir patiešām ļoti lietderīgs, jo tas sniedz reālu iespēju glabāt datu par noteiktajiem laika intervāliem. Tas ļoti noder gadījumos, kad tiek veikta kaut kāda laika lietošanas grāmatvedība. Piemēram, šāda datu bāze palīdz noskaidrot kurš ir bijis atbildīgs, kad kaut kas ir noticis, kurš tajā brīdī ir kaut ko lietojis, u.tml. Šos izveidotos laika periodus ir iespējams salīdzināt un iegūt informāciju, kura ir nepieciešama. Visu šo informāciju ir iespējams apstrādāt ar temporālās algebras darbībām vai ar Allena operatoru palīdzību (jeb laika predikātiem), kas arī veic salīdzināšanu un atgriež patiesu vai nepatiesu vērtību.
Izstrādātā darba veikšanai bija izvēlēta jau pierasta datu bāze, kura ir vairāk vai mazāk saistīta ar Tenisu, ar kuru nodarbojos jau gadiem ilgi. Šeit kā piemērs nāca tenisa kluba struktūra – atbildīgie par kortiem, tenisisti ar saviem abonementiem un dažādiem abonementu līmeņiem, kā arī pakalpojumi, kurus piedāvā tenisa klubs (kortu, rakešu, bumbu, dušas kabīnes īre). Balstoties uz izvēlētās problēmas vides tika izprojektēta uzdevuma glabāšanas struktūra. Struktūrā vija realizētas kopumā, varētu teikt ka četras laika sērijas. Bet būtībā datu bāzē bija tikai trīs tabulas – tenisisti, kurā kā laika sērija bija realizēta tenisistu abonementu izmaiņas laika posmi; atbildīgie – laika sērijas kā atbildīgo darba posms tenisa klubā; pakalpojumi – šeit gan varētu teikt ka bija divas laika sērijas: laika posms, kurā pakalpojums ir bijis pieejams jeb piedāvāts tenisa klubā un arī laika posmi, kuros konkrētais pakalpojums ir bijis iznomāts.
Līdz ar to, izveidotajā datu bāzē bija izmantotas gan temporālās algebras darbības, gan arī realizēti Allena operatori, jo izstrādātā struktūra ļāva ar tiem operēt. Šīs darbības un operatori tika galvenokārt izmantotas kā objekta metodes (member function). Sākumā, veicot definējumu, nolēmu metodēs realizēt visus iespējamos Allena operatorus, ko varētu izmantot, taču gan darba tālākajā gaitā ar vaicājumu palīdzību tika izmantoti tikai daži no tiem – pirms, satiek, pārklājas, sākums vienāds un vienāds. Temporālās algebras darbības (projekcija, atlase) bija vienkārša datu bāzes kolonnu un ierakstu atlasīšana. Būtībā Allena operatori, arī temporāla algebra, ir temporālās datu bāzes pamats un realizēt to kā member funkcijas kādiem skatiem nav izdevīgi, jo tie tiek plaši izmantoti un gadījumā, ja, piemēram, kāds cits vēlēsies izmantot tos vēl kādā skatā vai vaicājuma izpildē, tad tos viņam būs jāraksta atkal. Šīs situācijas labošanai vislietderīgāk būtu realizēt visus Allena operatorus kā funkcijas ar diviem argumentiem.
Darbā bija arī nepieciešama transformācijas struktūras realizācija, kas atvieglotu pašu datu izgūšanu un padarītu pārskatāmību vienkāršāku (tad, kad ir iekļautas tabulas un objektu kolonnas).
Bez glabāšanas struktūras, bija izprojektēti arī daži veicamie vaicājumi, kuru skaitu vēlāk nedaudz papildināju, jo bija izdevies sasniegt vēlamo operāciju un funkciju darbību (kas nebija izdevies sākumā, veicot projektēšanu). Lielu lomu darīja arī skati. Iespējams, ka man nav izdevies tos padarīt plaši pielietojamus, taču tam par iemeslu ir vairāki faktori, par kuriem runāšu nedaudz vēlāk, kad ķeršos pie problēmu iztirzāšanas.
Kopumā projektēšanas daļa bija kaut arī tā svarīgākā un laikietilpīgākā darba daļa, tomēr arī diezgan viegla. Bet, protams, varu arī droši apgalvot to, ka projektēt datu bāzi un realizēt to ir divas atsevišķas lietas. Ja projektēšanā viss šķita vienkārši un pats par sevi saprotams, tad tajā brīdī, kad kaut kas bija jārealizē – uzreiz radās kaut kādas problēmas, visbiežāk saistītas ar nepareizu prasību definēšanu. Vislabāk būtu, ja projektēšanu un plānošanu izpildītu paralēli, uzreiz pārliecinoties, ka definējums strādās un būs pareizs, vai arī lai uzreiz varētu izlabot kļūdas. Savādāk daudz reižu radās nepieciešamība vēlāk veikt pārdefinēšanu, jo izrādījās, ka, piemēram, definētie vaicājumi nu nekādi neizdodas (pat pēc vairāku stundu mēģinājumiem to izlabot un pilnveidot.
Tā pat varu droši apgalvot to, ka darba izveidē ļoti palīdzēja DB2 kursā apgūtās tēmas par metodēm un ORDB, jo nevarēju sākumā atcerēties nedz to kā pareizi definēt objektu kolonnas un vēl jo vairāk iekļautas tabulas, nedz arī pareizu metožu definēšanas sintaksi.
Tagad vēlētos pievērts uzmanību temporālajai algebrai, kas man sagādāja patiešām lielas jo lielas grūtības. Lekciju konspektos VALUE funkcijas semantika man nebija ļoti saprotama. Šajā gadījumā nonācu pie secinājuma, ka iespējams ir vainīga Oracle versija, jo lekciju konspektos, cik sapratu, ir vairāki piemēri bāzēti uz agrākām Oracle versijām. Līdz ar to Oracle visu laiku izmeta kļūdu, ka tiek pieprasīta funkcijas izpilde ar neskaidrām darbībām, vai ka funkcijai tiek padota vesela tabula vairākos gadījumos, vai vēl trakāk – izvada ka SELECT nav lietots pareizajā vietā (-Uzliek zvaigznīti pie paša pirmā select. Kur tad citur tam jābūt kā ne pašā pirmajā rindā, pašam pirmajam vārdam, izpildot vaicājumu.), ar ko Oracle neizprot ko darīt. Tomēr esmu atradusi dažus citus paņēmienus, kā veikt vaicājumus, apejot šo funkciju. Iespējams tā nebija visai pareizi pēc uzdevuma nostādnes, tomēr galvenais, kā uzskatu, ir realizēt nepieciešamo, atrodot iespēju izvairīties no kļūdām, kaut arī tas notiek nedaudz citā veidā.
Pēc tam, kad it kā biju pabeigusi uzdevuma realizāciju, vairākas reizes izmēģināju izlabot kļūdas, kas man bija radušās sākumā, līdz ar to man izdevās realizēt arī piemēru ar klona tabulas izmantošanu, iekļaujot arī tajā Allena operatoru.
Daudz laika aizņēma Unfold funkcijas izstrāde. Sākumā biju mēģinājusi izveidot arī kādu vaicājumu ar Fold funkciju, lai apvienotu kādu laika posmu, taču tas man nu nekādi tā arī neizdevās, kaut arī funkcijas realizācija maz atšķīrās no Unfold funkcijas un bija man būtībā izprotama, taču intervāli, ko izvadīja funkcijas darbība bija man neizprotami, tāpēc nolēmu izstrādāt tās vietā Fold funkcijas ķermeni un realizāciju, kas man veiksmīgi arī izdevās.
Tagad gribētu aprakstīt iespējams savu lielāko kļūdu. Par to varētu minēt to, ka nebiju nekādi saistījusi tabulas. Nezinu kāpēc biju par to pilnīgi aizmirsusi, kaut arī tas ir pats par sevi saprotams, Iespējams tas tādēļ, ka lielas mācību slodzes dēļ tieši šajā laika posmā, kad bija jāveic šis darbs, man vienkārši sākās emocionālā krīze, kad es vairs neko neatceros un nesaprotu. Iespējams tieši tādēļ man neizdevās visai veiksmīgi un sarežģītāki skati, kuros varētu apvienot vairākas tabulas kopā. Uzskatu, ka to vislabāk varētu izdarīt, piemēram, nedaudz citā problēmas vidē izveidojot tipu tieši ar datumiem, ko izmantotu vairākās tabulās. Tad varētu veikt tādus salīdzināšanas vaicājumus, kā piemēram, noskaidrot to, kas un ko ir darījuši vienlaicīgi un ar kādām iespējam. Tomēr, tā kā datu bāze bija loģiska, esmu atradusi vairākas iespējas uzdevuma nostādnes realizēšanai, tāpēc varu droši apgalvot, ka uzdevuma nostādne IR realizēta. Svarīgi taču ir tas, ka tas ir izdevies un ka man ir izdevies atrast citas iespējas gadījumos, kad kaut kas nav izdevies.
Ļoti jo ļoti palīdzēja veiksmīgi izveidotā grafiskā analoģija ar laika asīm. Tā kā katrā laika sērijā biju saglabājusi pilnīgi vienādu mērogu, tad it kā uzliekot vienu laika sēriju otrai virsū varēja redzēt tos rezultātus, kurus vajadzētu izvadīt vaicājumiem, kas arī notika. Kā pārbaudes rezultātus centos to arī atspoguļot.
Nonācu pie dīvaina secinājuma, ka par tik daudziem Oracle korporācijas darbības gadiem vēl nav izveidotas iebūvētas laika funkcijas, lai apstrādātu temporālos datus. Iespējams, tie ir bijuši agrāk, tādā gadījumā neizprotu, priekš kam ir jāsarežģī dzīve un jāizņem tie ārā no programmlīdzekļa. Temporālo datu bāzu popularitāte viennozīmīgi aug uzņēmumos, kur, kā jau minēju, ir nepieciešama kaut kāda laika reģistrācija (kaut vai uz ieejas kaut kādā uzņēmumā, kur apsargs piereģistrē kurš kādā laikā atnācis un aizgājis) un laika lielumu glabāšana. Ir taču jādefinē tik daudz specifisku funkciju, iespējams, ka pat katru reizi no jauna, kas viennozīmīgi nav tas ērtākais variants. Iespējams, ka šādām laika reģistrācijām ne tik bieži izmanto Oracle datu bāzes tieši šī iemesla dēļ. Ceru ka šīs sīkas kļūdas netiks vērtētas sūri, jo ir taču atrastas daudzas jo daudzas radušos problēmu risināšanas iespējas, kas attīsta ne tikai cilvēka domājošo un radošo pusi, bet arī pašu darbu padara interesantāku.
Kopumā darbs tomēr bija samērā laikietilpīgs, taču visas uzdevuma nostādnē definētās prasības tika veiksmīgi izpildītas, kaut arī bija nepieciešami daudzi jo daudzi resursi no interneta, kas palīdzēja atrisināt vairākas kļūdas un deva skaidrojumus par to, ka tādu vaicājumu vai funkciju ko vēlos realizēt – nav iespējams iepriekšminēto iemeslu dēļ. Darba izpildīšanas laikā bija interesanti izprast visus soļus, strādājot ar temporālo datu bāzi no pašas problēmas vides definēšanas un projektēšanas brīža, līdz pat realizēšanai, datu atlasei u, galvenais, pārbaudei pēc grafiskās analoģijas, kas laikam arī bija vispatīkamākais moments – redzēt to, ka iegūtie rezultāti izveidojas tādi paši, kādi tie bija iecerēti.
IZMANTOTĀ LITERATŪRA
Teksta materiāli
1. Prof. Eiduks, Lekciju konspekts mācību priekšmetā “Progresīvas datu bāzes”, 2008./09. m.g.
2. Temporālas datu bāzes vaicājumu valodas TSQL2 izvērtējums.
3. Heidi Gregersen, Christian S. Jensen. A Time Center Technical Report. „Temporal Entity-Relationship Models-a Survey”.
4. Oracle SQL Reference, Oracle Corporation, 2000
5. Oracle Oracle Spatial 10i User’s Guide and Reference, 2007
Internets
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
-----------------------
62
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
Related searches
- wordpress passing data between pages
- wordpress business templates
- wordpress rss feed not working
- wordpress jquery is not defined
- create wordpress blog
- wordpress roles editor
- wordpress full rss feed
- wordpress rss feed settings
- wordpress rss feed plugin
- wordpress display rss feed
- wordpress rss feed link
- wordpress rss feed to post