Top Banner
Māris Veismanis CASE rīka Altova Mission Kit izmantošana XML datu bāzes izstrādei Rīga, 2011.
64

RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Sep 06, 2018

Download

Documents

dangdat
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Māris Veismanis

CASE rīka Altova Mission Kit izmantošana XML datu bāzes izstrādei

Rīga, 2011.

Page 2: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

SatursIevads..........................................................................................................................................3

1. Datubāzes un XML.............................................................................................................4

1.1. Datu organizēšanas veidi............................................................................................4

1.2. XML glabāšanas veidi datubāzē.................................................................................4

1.3. Pielietojuma piemēri...................................................................................................5

1.4. Kas nepieciešams XML datubāzes projektēšanai.......................................................6

2. Altova MissionKit...............................................................................................................6

2.1. UModel.......................................................................................................................8

2.2. DatabaseSpy..............................................................................................................16

2.3. Pārējie komplektā ietilpstošie rīki.............................................................................24

Nobeigums................................................................................................................................25

2

Page 3: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

IEVADS

XML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi

meklējami HTML, jo bija nepieciešamība paplašināt HTML iespējas. HTML tika radīts

informācijas attēlošanai (mājas lapu attēlošana interneta pārlūkos). Taču, lai informāciju

attēlotu klienta datorā, tā vispirms ir jānosūta no servera. Iespējams, var gadīties situācijas,

kad pārsūtīto informāciju nepieciešams saglabāt, piemēram, datubāzē.

XML tika radīts kā kā datu transportēšanai piemērots formāts. Parasti vairums darbību

(vērtību piešķiršana, transformācijas) ar XML tika veiktas „middleware”. Uz datubāzi tādā

gadījumā jau tika nosūtīti no XML struktūrām izgūti dati. Taču, parādoties iespējām

datubāzēs veikt darbības ar XML, datu transformēšana, izgūšana var tikt veikta jau datubāzes

daļā.

Datu sūtīšanai starp lietojumiem un servisu orientētas arhitektūras realizācijai,

nepieciešamas tīmekļa pakalpes (web services). Tīmekļa pakalpju aprakstīšanai tiek izmantots

WSDL (XML formā rakstīts) faili. Lielākoties arī pati dat sūtīšana notiek sūtot ziņojumus, kas

atbilst SOAP standartam. SOAP ziņojumi ir XML formā rakstīti.

Att. 1 XML transporta loma

3

Page 4: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

1. DATUBĀZES UN XML

1.1. Datu organizēšanas veidi

Datubāzēs tiek glabāti dati. Datus savukārt var iedalīt pēc to strukturizācijas pakāpes –

nestrukturizēti, daļēji strukturizēti un strukturizēti dati. Nestrukturizēti dati ir, piemēram,

video faili, attēli. Strukturizēti ir tādi dati, kurus var saglabāt relāciju datubāzes tabulās un

struktūra ir tabulas lauki un saistība starp tabulām. XML dokumenti ietilpst daļēji

strukturizētu datu kopā.

Att. 2 Datu iedalījums pēc strukturizācijas veida [V. Telles bakalaura darbs]

Daļēji strukturizēti dati nozīmē, ka to struktūru nosaka shēma, taču var būt atkāpes no

tās, piemēram, dublēšanās vai iztrūkums. Šāds datu organizācijas veids piedāvā priekšrocības,

ko sniedz lielāka elastība. Protams, ir arī trūkumi, kuri izriet no tā, ka dati nav stingri

strukturizēti, piemēram, ir vairāk laika jāpatērē informācijas atlasei un transformācijai.

1.2. XML glabāšanas veidi datubāzē

Par izpētāmo DBVS tika izvēlēta Oracle 11g, jo šī DBVS ir iepazīta praktiskajos darbos

3 semestru laikā un tāpēc būtu interesanti uzzināt kādas iespējas šī DBVS sniedz XML

dokumentu apstrādē.

Ir trīs veidu pieejas, kā XML datus var saglabāt datubāzē:

1. XML dokuments tiek saglabāts kā tabulas kolonas vērtība;

2. XML dokuments tiek glabāts datubāzes tabulas kolonā vai tabulā ar speciālu

XML dokumentiem paredzētu tipu;

4

Page 5: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

3. XML dokuments tiek sadalīts un tā atsevišķās daļas saglabātas tabulas vairākās

kolonās.

Katram no augstāk minētājiem veidiem ir savas stiprās puses un pielietojumi, kur tie

visvairāk ir piemēroti un, protams, savi trūkumi.

Pirmais no minētajiem veidiem (XML dokuments tiek saglabāts atsevišķā tabulas

kolanā) ir piemērots gadījumos, kad nepieciešams saglabāt un izgūt no tabulas visu XML

dokumentu kopumā. Priekšrocība, ka šādu saglabāšanas veidu var izmantot visas Oracle

DBVS versijās, kurās tiek atbalstīti CLOB un BLOB datu tipi. Trūkums, ka no šādi

saglabātiem XML dokumentiem nevar veikt tiešus datu vaicājumus, nevar izmantot xPath

datu izgūšanas vaicājumus un pielietot XSL transformācijas.

Ja XML tiek saglabāts kolonā vai tabulā ar speciālo XML dokumentu tipu (XMLType),

ir iespējams izmantot vaicājumu valodu un ātri un efektīvi izgūt datus no XML dokumentu

struktūrām.

Pēdējais no augstāk minētājiem XML dokumentu saglabāšanas veidiem patiesībā ir

metode, kā no ienākošā XML dokumenta izgūt tā daļas un saglabāt tabulas atsevišķās

kolonās. Īpaši piemērots gadījumos, kad nepieciešams daudz izgūt datus, jo iespējams

pielietot SQL.

1.3. Pielietojuma piemēri

Jau pieminēts, ka XML ir paredzēts datu transportam un ka lielākoties darbības ar XML

notiek„middleware” daļā. Ir dažādi rīki un tehnoloģijas, kas paredzēti servisu orientētas

arhitektūras izstrādē. Viens no tādiem produktiem ir Oracle SOA Suite. Tas piedāvā izstrādes

vidi un iespējas. Izstrādātie lietojumi tiek uzlikti uz Oracle radītā WebLogic lietojumu

servera. Datu glabāšanai tiek izmantota Oracle datubāze. Viena no iespējām, ko piedāvā SOA

Suite ir sūtīto ziņojumu un visu datu transformācijas auditācija (izsekojamība, dati tiek

saglabāti datubāzē). Tā kā apmaiņa notiek ar XML ziņām, tad datubāzes kolonā tiek saglabāti

šie ziņojumi. Tika nolemts izpētīt, kā tad Oracle saglabā XML sevis radītajos produktos.

Rezultātā tika konstatēts, ka XML dokumentu saglabāšanai tiek izmantots veids, kad XML

dokuments tiek saglabāts BLOB tipa kolonā. Un pareizi vien ir, jo nekādas darbības, kur

iesaistīta datu izgūšana no XML dokumentiem nav iesaistītas. Taču ja nākamajās SOA Suite

versijās tiks piedāvātas iespējas izgūt datus no saglabātajiem XML dokuemtniem, tad

5

Page 6: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

visticamāk tiks izmantots tips XMLType. Jo tāds saglabāšanas veids ir gan piemērots datu

izgūšanai, gan pietiekami elastīgs mainīgajiem XML dokumentiem, kas tiek apstrādāti.

1.4. Kas nepieciešams XML datubāzes projektēšanai

XML datubāze ir tehnoloģiju kopa, kas sevī ietver XML datu saglabāšanas un izgūšanas

iespējas.

Iepriekšējās nodaļās tika apskatīti veidi, kā saglabāt XML dokumentus. Atbilstoši

katram saglabāšanas veidam tiek izmantoti tiem atbilstoši datu izgūšanas veidi. Ja tiek domāts

par to, kādus rīkus izmantot datubāzes projektēšnai, var secināt, ka lai saglabātu XML

dokumentu kā CLOB vai BLOB ir nepieciešams rīks, kurā var norādīt šādu datu tipu. Līdzīgi

ir ar paņēmienu, kad XML dokuments tiek sadalīts daļās un daļas saglabātas tabulas kolonās.

Izmantojot tādu paņēmienu lielākā vērība ir jāpievērš daļai, kas veic XML dokumenta

sadalīšanu. Savukārt pašas tabulas projektēšanai var izmantotu gandrīz jebkuru rīku.

Paņēmienā, kur XML dokuments tiek saglabāts, izmantojot XMLType tipu, iespējams

atbilstošajai kolonai norādīt arī XSD (XML shēmas dokuments), kurai jāatbilst.

Ņemot vērā uzskaitītos apsvērumus, par vienu no piemērotajiem rīku komplektiem tika

izvēlēts ALTOVS MissionKit. Tas sevī iekļauj rīku komplektu programmatūras projektēšanai

un izstrādei. Projektēšanas posma sākumā izmantojamie rīki būs XMLSpy, kurā izveidot XSD

un Umodel, kas ir labi izstrādāts rīks modelēšanai UML.

2. ALTOVA MISSIONKIT

Austriešu kompānijas ALTOVA radītie produkti tiek uzskatīti par pasaulē vadošajiem

rīkiem darbam ar XML. Salīdzinoši nesen ALTOVA produkcijas klāsts ir papildinājies ar

rīkiem programmatūras projektēšanai, modelēšanai un koda automātiskai ģenerēšanai (ir

iespējama integrācija ar populārākajām izstrādes vidēm – MS Visual Studio; Eclipse). Datorā

uzstādot ALTOVA MissionKit, tiek iegūts viss rīku komplekts. Taču licenzēšanas informācija

par katru no rīkiem ir jāievada atsevišķi.

6

Page 7: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 3 Instalācija

Att. 4 Instalācija

Att. 5 Īssaites uz visiem Mission Kit ietilpstošajiem rīkiem

7

Page 8: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

No iepriekš ievadā apskatītās informācijas secināms, ka izveidot XML datubāzi var ar

gandrīz jebkuru no ierastajiem rīkiem, taču atvieglot darbu varētu, ar rīkiem atbalstot XML

datu izgūšanas vaicājumu veidošanā. No industrijā pieredzējušu cilvēku puses ir atsauksmes,

ka darbam ar XML labākie ir ALTOVA veidotie rīki. Kā tika prezentācijā uzsvērts, XML

datubāzu veidošana nesākas un nebeidzas ar datubāzes struktūras izveidošanu. Ir jāveido

XML shēmas (XSD), datubāzes struktūra, datu transformācijas apraksti. ALTOVA piedāvā

produktu Altova Mission Kit. Tas sevī ietver visaptverošus rīkus programmatūras

modelēšanai:

DatabaseSpy

MapForce

SemanticWork

UModel

DiffDog

SchemaAgent

StyleVision

XMLSpy

2.1. UModel

UML ir standartizēta vispārēja pielietojuma modelēšanas valoda objektorientētas

programmatūras izstrādē. UML 2.0 ietver 14 dažādus diagrammu veidus.

Aktivitāšu diagramma

Clašu diagramma

Komunikāciju diagramma

Komponentu diagramma

Kompozītu struktūras diagramma

Uzstādīšanas diagramma

Saskarsmes diagramma

Objektu diagramma

Pakotņu diagramma

Secību diagramma

Stāvokļu mašīnas diagramma

Laika diagramma8

Page 9: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Lietojumu gadījumu diagramma

Att. 6 Kolāža ar dažādiem UML diagrammu veidiem

Datubāzes modelēšnai Umodel vidē tiks izmantota klašu diagramma. Klašu diagramma

ir kolekcija ar statiskiem elementiem, piemēram, klasēm un tipiem, ir norādīts to sastāvs un

savstarpējās saites. Umodel piedāvā diagrammu tipu, kas ir klašu diagrammas apakštips un

īpaši piemērots datubāzu projektēšanai.Taču, lai sāktu modelēt, ir jāizveido vienkārša

problēmsfēra.

Peles labās pogas klikšķis uz mapītes „Component view” logā „Model tree”. Tālāk

jāizvēlas diagramma datubāzes izveidošanai.

9

Page 10: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 7 Datubāzes diagrammas izveidošana

Labais peles klikšķis diagrammas laukā. Izvēle veidot jaunu tabulu.

Att. 8 Tabulas pievienošana

10

Page 11: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 9 Tabula pēc pievienošanas

Peles labā taustiņa klikšķis uz tabulas elementa modelī un vispirms jāizvēlas pievienot

jaunu kolonu.

Att. 10 Jaunas kolonas pievienošana

Tabulas kolonas tipu var izvēlēties logā „Properties”, tas atrodas tieši zem modeļa

komponenšu loga.

11

Page 12: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 11 Kolonas tipa izvēle

Pievienot kolonām nepieciešamos atribūtus un izveidot tabulu klasifikatoru vērtībām

Att. 12 Personas lietas tabula un iestāžu klasifikators

12

Page 13: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 13 Saites starp divām tabulām

Att. 14 Veids kā tiek pievienoti gan indeksi, gan PK un FK

Atsevišķajā ārējās atslēgas tabulā norādot kolonu, uz kuru atsaucas, piedāvā izvēlēties

tabulu, uz kuru tiek veidota ārējās atslēgas saite. Diemžēl nav ierobežojumu uz kolonas

nosaukumu.

Kad tika izveidota vienkāršā sistēma no divām tabulām, tika pārbaudīts UML standartos

aprakstītais modeļu importēšanas un eksportēšanas formāts XMI. Tika konstatēts, ka formāts

strādā – no UModel eksportēto modeli izdevās veiksmīgi importēt citā programmatūras

modelēšanas rīkā EA (Enterprise Architect). Taču tika konstatēta viena nozīmīga problēma –

XMI standarts, acīmredzot, nosaka, kā modeļi ir jāeksportē un jāimportē, taču ne visai precīzi,

kā tie ir jāinterpretē. Piemēram, UModel rīkā biju norādījis, ka tiek modelētas nevis vienkārši

klases, bet datu objekts – datubāzes tabula. Taču pēc importēšanas EA, modelī tika attēlotas

13

Page 14: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

parastas klases. Tad tika veiktas izmaiņas EA, lai modelis atbilstu datu bāzes tabulām. Pēc

tam tas vēlreiz tika eksportēts no EA un importēts UModel. Rezultāts ir redzams attēlā zemāk.

Att. 15 Pēc importa no EA

Iegūtais rezultāts ir ļoti līdzīgs tam, kas redzams EA (attēls zemāk), ir precīzi tāds pats

pēc UML notifikācijas, taču UModel rīkā vairs neatbilst datubāzes tabulu interpretācijai.

Att. 16 Attēlojums EA

14

Page 15: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 17 SQL vaicājumu ģenerēšana tabulu izveidošanai

Att. 18 Uzstādījumi EA pirms SQL ģenerēšanas

15

Page 16: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

2.2. DatabaseSpy

Nosaukums veidots pēc līdzības ar XML apstrādes programmatūru XMLSpy. Atšķirībā

no Umodel, DatabaseSpy ir pietuvināts fiziskajai realizācijai. Ar Umodel bija iespējams

veidot tabulas, kolonnas, primārās atslēgas un indeksus, kas kopumā ir komponenti, kas

atrodami visās DBVS realizācijās. Savukārt, DatabaseSpy ir saistīts ar konkrētas DBVS

iespējām un visas darbības ar izvēlētajiem komponentiem ir atbilstošas konkrētajai DBVS. To

panāk, ļaujot strādāt ar rīku tikai tad, kad ir izveidots savienojums ar konkrēto datubāzi. Par

šīs pieejas trūkumiem un priekšrocībām sīkāk tiks pastāstīts secinājumu daļā.

Att. 19 Savienojuma izveidošana

Uzmanība jāpievērš, lai uz datora jau b;utu uzinstalēti visi nepieciešamie draiveri. Tie

programmatūras komplektā nav iekļauti.

16

Page 17: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 20 Projekta logs izveidotam savienojumam

Att. 21 Rīku joslas daļa

Rīku joslas apraksts. Otrā rinda, sākot no kreisās puses: Savienojuma izveidošana; SQL

vaicājumu logs; Vizuālās projektēšanas skats; Datu salīdzināšana; Shēmu salīdzināšana.

17

Page 18: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 22 Grafiskās projektēšanas logs

Grafiskās projektēšanas logā redzamais paziņojums ļoti tieši norāda uz, manuprāt,

lielāko šī rīka problēmu – nevar projektēt datubāzi, ja nav izveidots savienojums ar konkrēto

datubāzi. Problēmas, kādas tas rada, tiks apskatītas zemāk. Vienas no tām dēļ, arī šī darba

izpildes laikā pazuda visas veiktās izmaiņas.

Att. 23 Tikko izveidotas divas jautnas tabulas

Grafiskā projektēšanas loga augšdaļā redzama rīku josla. No kreisās: Jaunas tabulas

izveidošana; Piezīmju lapiņas izveidošana projektēšanas logā.

Katra tabula ir grafiskajā attēlojumā ir sadalīta trīs daļās – kolonas, indeksi un atslēgas

(primārā, ārējā, unikalitātes). Līdz ar to attēlojums vēl aizvien ir ļoti līdzīgs tam, kāds ir EA

(Att. 16) un UModel (Att. 24). Konkrēto lauku, piemēram, tabulas kolonas nosaukumu, var

labot, veicot uz tā dubultklikšķi. Izņēmums ir tabulas datu tips, kura vērtību ir jāizvēlas

uzklikšķinot uz kolonas un tad izvēloties projekta pārskata logā.

18

Page 19: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 24 Attēls no UModel

Att. 25 Projekta skats brīdi pirms rīks kļūdas dēļ pārstāja darboties

19

Page 20: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Attēlā Att. 25 redzama neliela daļa no topoša projekta. Tagad tabulās redzamas gan

kolonas, gad primārās, gan ārējās atslēgas, kā arī saites starp tabulām. Attēls ir bāls, jo tika

uzņemts brīdī, kad rīks jau bija pārstājis darboties.

Att. 26 Piezīmju lapiņa uz projektēšanas virsmas

Att. 27 Shēmas pievienošana datubāzei

Pašalaik izvēle ir neaktīva, jo aktīvais pieslēgums ir uz MS Access datubāzi. Kā zināms,

Access neatbalsta datu pārbaudi pēc shēmas utt. Praktisku pārbaudi par XML atbalstu veikt

neizdevās (jau iepriekš minētās draiveru problēmas dēļ), tāpēc tālāk informācija tiks sniegta

no DatabaseSpy lietotāja rokasgrāmatas.

20

Page 21: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 28 Skats ar datubāzē izmantotajām shēmām

Pārslēdzot projekta pārlūku tiešsaites režīmā (skat. Att. 29), redzami jau datubāzē

izveidotie objekti. Pieminētajā attēlā ir redzamas divas XML tipa kolonas. Viena no tām attēla

izveidošanas brīdī ir iezīmēta.

Att. 29 Projekta pārlūks (on-line savienojuma režīmā)

21

Page 22: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Katru projekta pārlūkā redzamo kolonu iespējams izvērst un aplūkot sīkāk tajā

izmantotos citus objektus. Piemēram, attēlā (Att. 30) redzams, ka izvēršot kolnas objektu

saturu, iespējams redzēt arī, kāda XML shēma ir piesaistīta apskatāmajai kolonai.

Att. 30 XML tipa kolonas XML shēmas apskate

Zemāk projekta pārlūka logā (skat. Att. 31) var apskatīt visas projekta XML shēmas.

Att. 31 Visas projekta XML shēmas

22

Page 23: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Viens no iemesliem, kāpēc uzdevuma izpildei tika izvēlēti ALTOVA produkti ir tās

XML apstrādes rīks XMLSpy. Viena no DatabaseSpy priekšrocībām ir iespēja no jebkura no

ALTOVA rīkiem jebkuru shēmu nosūtīt apstrādei XMLSpy rīkā. Attēlā zemāk (Att. 32) ir

redzams, kā to izdarīt no projekta pārlūka loga.

Att. 32 Shēmas atvēršana XMLSpy rīkā

Attēlā (Att. 33) redzmas, kā tabulā tiek pievienota jauna XML tipa kolona. Oracle

DBVS gadījumā tiktu izmantotrs tips XMLTYPE. Tipu iespējams izvēlēties arī, ja

uzklikšķina uz uz kolonas un izvēli izdara projekta pārlūka logā.

Att. 33 apakšdaļā redzams logs (database change script), kurā attēloti SQL vaicājumi, ar

kuriem iespējams veikt grafiskajā projektēšanas logā attēlotas izmaiņas datubāzes struktūrā.

Šos vaicājumus iespējams no tā loga nokopēt un tālāk izmantot pēc ieskatiem, vai arī

automātiski grafiskajā projektēšanas logā veiktās izmaiņas īstenot datubāzē.

23

Page 24: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 33 Jaunas XML kolonas pievienošana

2.3. Pārējie komplektā ietilpstošie rīki

Pārējie komplektā ietilpstošie rīki ir lieliski savietojami ar jau apskatītajiem rīkiem.

Nozīmīgākie no atlikušajiem tēmas ietvaros, manuprāt, ir XMLSpay (rīks darbam ar XML

dokumentiem un XML shēmām) un MapForce (datu integrācijas rīks, tai skaitā XSLT

veidošanai).

24

Page 25: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

3. XML IZSTRĀDES RĪKU PIELIETOJUMA PIEMĒRS

SISTĒMU PROJEKTĒŠANĀ

Lai parādītu aprakstīto rīku praktisku pielietojumu, tika izvēlēta realitātei pietuvināta

problēmsfēra, tā papildināta ar niformāciju un prasībām, lai padarītu darbu vairāk aptverošu

un rastos nepieciešamība izmantot XML datubāzes iespējas. Rezultātā radīta problēma, kas

realitātē dez vai pastāv, taču kalpo par gana derīgu aprakstīto rīku izmantošanas piemēru.

Teorētiskajā aprakstā un arī praktiskās pārbaudes laikā tiks iekļauts nedaudz plašāks apraksts,

lai radītu priekštatu par izdomāto problēmsfēru. Atsevišķas problēmsfēras nianses ir

izdomātas un nav balstītas realitātē.

3.1. Ūdens skaitītāja rādījuma elektroniska reģistrācija

Maksājumu par komunālajiem pakalpojumiem viena no daļām ir maksājums par silto un

auksto ūdeni. Patērētājiem, kuriem ir uzstādīti ūdens skaitītāji, maksājuma apjoms tiek

aprēķināts pēc skaitītāja rādījuma. Reizi mēnesī ūdens skaitītāja rādījumi ir jāiesniedz namu

pārvaldē. Lielā daļā no namu pārvaldēm, tas tiek veikts, iemetot rādījumu lapiņas speciāli tam

paredzētā pastkastē namu pārvaldes norādītā vietā.

Patērētājs tiek viennozīmīgi identificēts pēc adreses, taču parasti jānorāda arī patērētāja

vārds un uzvārds. Katrs skaitītāja rādījumu nolasījums ir par noteiktu laika intervālu. Vienā

lapiņā tiek sniegta informācija gan par karstā, gan aukstāūdens skaitītāja rādījumiem.

Pašvaldība ir sociāli atbildīga un sniedz dažādus atvieglojumus trūcīgiem iedzīvotājiem.

Šo uzdevumu īstenošanai tiek uzturēta trūcīgo iedzīvotāju datubāze (patiesībā informācijas

sistēma, kuras glabātajai informācijai var piekļūt caur publicētajām tīmekļa pakalpēm), kurā ir

reģistrēti trūcīgie iedzīvotāji, to dzīvesvietas un dažādi pašvaldības sniegtie atvieglojumi.

Namu pārvaldes informācijas sistēmas daļa, kas atbild par ūdens skaitītāju lapiņu

reģistrāciju, satur tabulu, kur saglabā saņemtos ziņojumus par skaitītāja rādijumiem, tabulu,

kur saglabāta ūdens cenu par vienu m3 konkrētam rajonam vai adresei, kā arī tabula

maksājumu reģistrēšanai un uzskaitei.

3.2. Augsta līmeņa procesa apraksts

Attēlā zemāk (Skat. Att. 34) ir attēlota saistība starp dažādām informācijas sistēmām un

procesiem skaitītāja rādījumu saglabāšanas laikā.25

Page 26: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Namu pārvaldes mājas lapā notiekošais. Centrālās ūdensapgādes patērētājs namu

pārvaldes mājas lapā aizpilda skaitītāja rādījumu lapiņu un spiež pogu „Iesniegt”. Tiek

izsaukts sinhrons process, kura atbildi patērētājs ierauga dažu sekunžu laikā atvērtajā logā.

Rezultāts jāparāda sinhroni, lai patērētājs skaidri zinātu, vai rādījums ir iesniegts, vai nav.

Namu pārvlades darbplūsmu lietojumā notiekošais. Saņemot ziņojumu (tīmekļa

pakalpē „saveWaterConsumption”) tiek sākta jauna darbplūsmas instance. No patērētāja

saņemtās zīmītes tiek paņemta patērētāja adrese un izsaukta pašvaldības informācijas sistēmas

tīmekļa pakalpe „getWaterDiscount”. Atbildē no pašvaldības IS tiek saņemts atlaides apjoms

procentos. Tālāk patērētāja iesūtītā rādījumu zīmīte tiek papildināta ar no pašvaldības

informāciajs sistēmas saņemto atlaidi un izsaukta saglabāša namu pārvaldes datubāzē (tīmekļa

pakalpe „saveWaterConsumptionDB”). Atbildē no namu pārvaldes datu saglabāšanas tīmekļa

pakalpes tiek saņemts ziņojums par procesa rezultātu (veiksmīgs / neveiksmīgs). Tiek nosūtīta

atbilde uz namu pārvaldes mājas lapas formu par skaitītāja rādījumu saglabāšanas rezultātu.

BPEL Rekini

«Lane» Namu pārv aldes IS

«Lane» Pašv aldības IS«Lane» Namu pārv aldes darbplūsma«Lane» Namu pārv aldes mājaslapa

Saņemts skaitītāja rādījums

Procesa beigas - atbildes ziņojuma sūtīšana

Iegūt atlaidesapjomuReģistrēt skaitītāja rādījumu

Iesniegt

«BusinessServ ice»Pašv aldības IS

«BusinessServ ice»Saglabāt datus DB

Noformē ziņojumuno rēķinu lapiņas un

iegūtā atlaidesapjoma

Saglabāt skaitītājurādījumu datubāzē

Skaitītāja rādījuma nolasījums

Atbilde par skaitītāja rādījumureģistrēšanu (veiksmīga /neveiksmīga)

Patērētāja adrese

Atlaides apjoms (%)

Skaitītājarādījums unatlaides apjoms

Atbilde par saglabāšanasrezultātu (veiksmīgs /neveiksmīgs)

Att. 34 Skaitītāja rādījumu saglabāšanas process

26

Page 27: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Pašvaldības informācijas sistēmā notiekošais. Tiek pieņemts, ka namu pārvaldes

informācijas sistēmas (tai skaitā darbplūsmu) izstrādātāji paļaujas un pašvaldības portāla

sniegto tīmekļa pakalpes aprakstu, kurā teikts, ka izsaucot metodi „getWaterDiscount”, ieejas

ziņojumā norādot adresi, atbildes ziņojumā tiek iegūts atlaides lielums.

Namu pārvaldes informācijas sistēmā notiekošais. No namu pārvaldes darbplūsmas

lietojuma tiek izsaukta pašvaldības informācijas sistēmas tīmekļa pakalpes metode

„saveWaterConsumptionDB”. No šīs metodes, savukārt, tiek izsauktas datubāzes procedūras,

skaitītāja rādījumu saglabāšanai.

3.3. Ziņojumos izmantotās informācijas vienības

Tabula 1 Struktūra - Adrese

Lauka nosaukums Tips Obligāts

Valsts string X

Pilsēta string X

Iela string X

Māja string X

Dzīvoklis string

Tabula 2 Struktūra - Zīmīte

Lauka nosaukums Tips Obligāts

Adrese Adrese X

Datums No date X

Datums Lidz date X

Vārds string X

Uzvārds string X

Karstais ūdens integer X

Aukstais ūdens integer X

Līguma kods string X

27

Page 28: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Tabula 3 Struktūra - Atlaide

Lauka nosaukums Tips Obligāts

Atlaide integer X

Tabula 4 Struktūra - ZīmīteDB

Lauka nosaukums Tips Obligāts

Zīmīte Zīmīte X

Atlaide Atlaide

3.4. Shēmas projektēšana XMLSpy

Ieprekšējā nodaļā augstā līmenī apskatītas struktūras, kuras izmantotas ziņojumu

sūtīšanā. Nākamais solis ir izveidot XML shēmu, kurā tiks definētas aprakstītās struktūras, kā

arī tās, kas nepieciešamas fiziskai realizācijai, taču augstā līmenī nav aprakstītas. Shēmas tiks

veidotas, izmantojot gan grafisko redaktoru, gan nepieciešamības gadījumos teksta redaktoru.

Ziņojumu apmaiņai starp sistēmām (skat. Att. 34) tiek izmantotas tīmekļa pakalpes,

kuru ziņojumi atbilst SOAP standartam. Tāpēc XMLshēmā papildus ir definētas struktūras

SOAP ziņojumumu pieprasījumu un atbildes tipiem.Visi definētie tipi kopā redzami Att. 35.

28

Page 29: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 35 XML definīcijas režģa skatā

Attēlos zemāt parādītas izveidotās struktūras atsevišķi grafiskā redaktora logā. Pēc

iespējas izvēlēti attēli, kur pēc iespējas vairāk redzama struktūru atkārtota izmantošana.

Att. 36 Adrese

29

Page 30: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 37 Zīmīte

Att. 38 Atlaide

30

Page 31: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 39 Zīmīte saglaāšanai DB

Att. 40 Kļūdas struktūra

31

Page 32: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 41 Standarta atbildes bloks

Att. 42 Rādījuma saglabāšanas pieprasījuma ziņojuma tips

32

Page 33: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 43 Rādījumu saglabāšanas atildes ziņojumu tips

Att. 44 Pieprasījuma tips atlaides iegūšanai

Att. 45 Atbildes tips atlaides pieprasījumam

33

Page 34: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 46 Pieprasījuma tips zīmītes saglabāšanai DB

Att. 47 Atbildes tips zīmītes saglabāšanai DB

34

Page 35: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

3.4.1. Ģenerētā XML shēma

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs" targetNamespace="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs" elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:complexType name="Adrese"><xs:sequence>

<xs:element name="Valsts" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="Pilsete" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="Iela" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="Maja" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="Dzivoklis" type="xs:string" minOccurs="0" maxOccurs="1"/>

</xs:sequence></xs:complexType><xs:element name="Adrese" type="Skaititajs:Adrese"/><xs:complexType name="Zimite">

<xs:sequence><xs:element name="Adrese" type="Skaititajs:Adrese" minOccurs="1" maxOccurs="1"/><xs:element name="DatumsNo" type="xs:date" minOccurs="1" maxOccurs="1"/><xs:element name="DatumsLidz" type="xs:date" minOccurs="1" maxOccurs="1"/><xs:element name="Vards" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="Uzvards" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="KarstaisUdens" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="AukstaisUdens" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="LigumaKods" type="xs:string" minOccurs="1" maxOccurs="1"/><xs:element name="DatumsIesniegts" type="xs:date" minOccurs="1" maxOccurs="1"/>

</xs:sequence></xs:complexType><xs:element name="Zimite" type="Skaititajs:Zimite"/><xs:complexType name="Atlaide">

<xs:sequence><xs:element name="Atlaide" type="xs:integer" minOccurs="0" maxOccurs="1"/>

</xs:sequence></xs:complexType><xs:element name="Atlaide" type="Skaititajs:Atlaide"/><xs:complexType name="ZimiteDB">

<xs:sequence><xs:element name="Zimite" type="Skaititajs:Zimite" minOccurs="0" maxOccurs="1"/><xs:element name="Atlaide" type="Skaititajs:Atlaide" minOccurs="0" maxOccurs="1"/>

</xs:sequence></xs:complexType><xs:element name="ZimiteDB" type="Skaititajs:ZimiteDB"/><xs:simpleType name="Nozimigums">

<xs:restriction base="xs:string"><xs:enumeration value="Bridinajums"/><xs:enumeration value="Kluda"/>

</xs:restriction></xs:simpleType><xs:complexType name="ErrorStructure">

<xs:sequence><xs:element name="Kods" type="xs:string" minOccurs="0" maxOccurs="1"/><xs:element name="Apraksts" type="xs:string" minOccurs="0" maxOccurs="1"/><xs:element name="Nozimigums" type="Skaititajs:Nozimigums" minOccurs="0"

maxOccurs="1"/></xs:sequence>

</xs:complexType><xs:element name="ErrorStructure" type="Skaititajs:ErrorStructure"/><xs:complexType name="StandartResponse">

<xs:sequence><xs:element name="Success" type="xs:boolean" minOccurs="1" maxOccurs="1"/><xs:element name="Kluda" type="Skaititajs:ErrorStructure" minOccurs="0"

maxOccurs="unbounded"/></xs:sequence>

</xs:complexType><xs:element name="StandartResponse" type="Skaititajs:StandartResponse"/><xs:complexType name="SaveWaterConsumptionRequest">

<xs:sequence><xs:element name="Zimite" type="Skaititajs:Zimite" minOccurs="0" maxOccurs="1"/>

</xs:sequence></xs:complexType><xs:element name="SaveWaterConsumptionRequest" type="Skaititajs:SaveWaterConsumptionRequest"/><xs:complexType name="SaveWaterConsumptionResponse">

35

Page 36: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

<xs:sequence><xs:element name="StandartResponse" type="Skaititajs:StandartResponse" minOccurs="0"

maxOccurs="1"/></xs:sequence>

</xs:complexType><xs:element name="SaveWaterConsumptionResponse" type="Skaititajs:SaveWaterConsumptionResponse"/><xs:complexType name="GetWaterDiscountRequest">

<xs:sequence><xs:element name="Adrese" type="Skaititajs:Adrese" minOccurs="0" maxOccurs="1"/>

</xs:sequence></xs:complexType><xs:element name="GetWaterDiscountRequest" type="Skaititajs:GetWaterDiscountRequest"/><xs:complexType name="GetWaterDiscountResponse">

<xs:sequence><xs:element name="Atlaide" type="Skaititajs:Atlaide" minOccurs="0" maxOccurs="1"/><xs:element name="StandartResponse" type="Skaititajs:StandartResponse" minOccurs="0"

maxOccurs="1"/></xs:sequence>

</xs:complexType><xs:element name="GetWaterDiscountResponse" type="Skaititajs:GetWaterDiscountResponse"/><xs:complexType name="SaveWaterConsumptionDBRequest">

<xs:sequence><xs:element name="Zimite" type="Skaititajs:Zimite" minOccurs="0" maxOccurs="1"/><xs:element name="Atlaide" type="Skaititajs:Atlaide" minOccurs="0" maxOccurs="1"/>

</xs:sequence></xs:complexType><xs:element name="SaveWaterConsumptionDBRequest" type="Skaititajs:SaveWaterConsumptionDBRequest"/><xs:complexType name="SaveWaterConsumptionDBResponse">

<xs:sequence><xs:element name="StandartResponse" type="Skaititajs:StandartResponse" minOccurs="0"

maxOccurs="1"/></xs:sequence>

</xs:complexType><xs:element name="SaveWaterConsumptionDBResponse" type="Skaititajs:SaveWaterConsumptionResponse"/>

</xs:schema>

3.5. Atbilstošās datubāzes daļas projektēšana

Datubāze paredzēta namu pārvaldes informācijas sistēmas daļai, kurā tiek saglabāti

ūdens skaitītāju rādījumi (skat. Att. 34 Namu pārvaldes IS). Šī datubāzes daļa sastāvēs no trim

tabulām. Vien no izveidojamām tabulām būs tabula ar XML tipa kolonu. Šāda izvēle izdarīta,

lai demonstrētu XML saglabāšanas un vaicājumu iespējas Oracle DBVS. Pamatot šādu izvēli

var ar to, ka ūdens skaitītāja zīmītes struktūra var mainīties, daži lauki var netikt aizpildīti.

Turklāt realizāciju atvieglo, ka saglabāšanas procedūra jau saņem gatavu XML ziņojumu,

kurš bez transformācijas nepieciešamības var tikt saglabāts kolonā ar XML tipu.

Datubāzē tik paredzēta tabula, kur saglabāta cena konkrētam patērētājam par 1 m3

ūdens. Tabula ar XML tipa kolonu, kurā saglabās patērētāju reģistrētās zīmītes. Tabula, kurā

no saņemtajām zīmītēm tiks ģenerēti maksājumi.

Tabula 5 DB_ZIMITE

Lauks Tips Nosacījumi

ZIMITE_ID VARCHAR2 PK36

Page 37: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

ZIMITE XMLType NotNull

Tabula 6 DB_CENA

Lauks Tips Nosacījumi

CENA_ID VARCHAR2 PK

LIGUMA_KODS VARCHAR2 NotNull; Unique

CENA NUMBER(5,2) NotNull

Tabula 7 DB_MAKSAJUMS

Lauks Tips Nosacījumi

MAKSAJUMS_ID VARCHAR2 PK

ZIMITE_ID VARCHAR2 NotNull; FK

CENA_ID VARCHAR2 NotNull; FK

SUMMA_JAMAKSA NUMBER(7,2) NotNull

SUMMA_SAMAKSATS NUMBER(7,2) NotNull

MAKSAJUMA_DATUMS DATE NotNull

DB tabulā DB_MAKSAJUMI daudzi lauki tiek aizpildīti automātiski, taču tālāk

projektēšanas aprakstā lielāka uzmanība veltīta darbībām ar tabulu DB_ZIMITE, jo tajā tiks

parādītas darbības ar XML datiem.

3.6. Datubāzes tabulu veidošana

Darba izpildes un atskaites rakstīšanas laika diemžēl beidzās DatabaseSpy

izmēģinājuma licences termiņš. Vispārējas pamatdarības tika aplūkotas atskaites teorētiskā

apraksta daļā. Praktiskā piemēra realizācija tika turpināta, izmantojot rīku Enterprise

Architect.

37

Page 38: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 48 Projekta pārlūks tikko pēc tabulu izveidošanas

Att. 49 Izveidotās tabulas

38

Page 39: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 50 Taulas pēc ārējo saišu pievienošanas

3.6.1. Ģenerētie DDL skripti

CREATE TABLE DB_CENA

(

CENA_ID VARCHAR2(50) NOT NULL,

LIGUMA_KODS VARCHAR2(50) NOT NULL,

CENA NUMBER(5,2) NOT NULL

)

;

CREATE TABLE DB_MAKSAJUMS

(

MAKSAJUMS_ID VARCHAR2(50) NOT NULL,

ZIMITE_ID VARCHAR2(50) NOT NULL,

CENA_ID VARCHAR2(50) NOT NULL,

SUMMA_JAMAKSA NUMBER(7,2) NOT NULL,

SUMMA_SAMAKSATS NUMBER(7,2) NOT NULL,

MAKSAJUMA_DATUMS DATE NOT NULL

)

;

39

Page 40: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

CREATE TABLE DB_ZIMITE

(

ZIMITE_ID VARCHAR2(50) NOT NULL,

ZIMITE XMLTYPE NOT NULL

)

;

ALTER TABLE DB_CENA ADD CONSTRAINT PK_DB_CENA

PRIMARY KEY (CENA_ID)

;

ALTER TABLE DB_MAKSAJUMS ADD CONSTRAINT PK_DB_MAKSAJUMS

PRIMARY KEY (MAKSAJUMS_ID)

;

ALTER TABLE DB_ZIMITE ADD CONSTRAINT PK_DB_ZIMITE

PRIMARY KEY (ZIMITE_ID)

;

ALTER TABLE DB_CENA

ADD CONSTRAINT UQ_DB_CENA_LIGUMA_KODS UNIQUE (LIGUMA_KODS)

;

ALTER TABLE DB_MAKSAJUMS

ADD CONSTRAINT UQ_DB_MAKSAJUMS_CENA_ID UNIQUE (CENA_ID)

;

ALTER TABLE DB_MAKSAJUMS

ADD CONSTRAINT UQ_DB_MAKSAJUMS_ZIMITE_ID UNIQUE (ZIMITE_ID)

;

ALTER TABLE DB_CENA ADD CONSTRAINT FK_DB_CENA_DB_MAKSAJUMS

FOREIGN KEY (CENA_ID) REFERENCES DB_MAKSAJUMS (CENA_ID)

ON DELETE CASCADE

;

3.6.2. Ģenerēto tabulu apskats SQLDeveloper

Att. 51 DB_CENA

40

Page 41: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 52 DB_MAKSAJUMS

Att. 53 DB_ZIMITE

Att. 54 XML shēma

Att. 55 Pēc XML shēmas reģistrēšanas parādījušās sistēmas tabulas (parādīta daļa)

41

Page 42: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

3.7. Zīmītes saglabāšana datubāzē

Lai nodemonstrētu darbības ar XML datiem Oracle DBVS, tik izveidots vaicājums datu

saglabāšanai un vairāki vaicājumi šo datu izgūšanai. Apskatot kopējo procesu (skat. Att. 34),

redzams, ka zīmītes struktūra ceļo caur sistēmu, līdz to saglabā namu pārvaldes informācijas

sistēmas tīmekļa pakalpe. Tīmekļa pakalpe izsauc datubāzes procedūru, kuras vienīgais

parametrs ir struktūra „zīmīte”. Savukārt datubāzes procedūra, izmantojot SQL vaicājumu,

saglabā ierakstu tabulā. No augstāk aprakstītajiem procesiem tiks realizēts SQL vaicājums

zīmītes struktūras saglabāšanai. Pirms tam tiks aizpildīta tabula DB_CENA.

Att. 56 DB_CENA vērtības

Nākamajā solī rīkā XMLSpy tika radīts shēmai „CaseRikiXML.xsd” atbilstošs XML

ziņojums. Par saknes elementu tika izvēlēts mezgls „ZimiteDB”, jo tieši šis būs elments, kuru

no tīmekļa pakalpes saņemtā ziņojuma saglabās datubāzē.

42

Page 43: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 57 XMLSpy izveidota shēmai atbilstoša zīmīte

3.7.1. Ziņojums – „Zimite_1”

<?xml version="1.0" encoding="UTF-8"?>

<Skaititajs:ZimiteDB xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs C:\Users\M\Desktop\CaseRikiXML.xsd">

<Skaititajs:Zimite>

<Skaititajs:Adrese>

<Skaititajs:Valsts>Latvija</Skaititajs:Valsts>

<Skaititajs:Pilsete>Riga</Skaititajs:Pilsete>

<Skaititajs:Iela>Sporta</Skaititajs:Iela>

<Skaititajs:Maja>5</Skaititajs:Maja>

<Skaititajs:Dzivoklis>12</Skaititajs:Dzivoklis>

</Skaititajs:Adrese>

<Skaititajs:DatumsNo>2011-12-01</Skaititajs:DatumsNo>

<Skaititajs:DatumsLidz>2012-01-01</Skaititajs:DatumsLidz>

<Skaititajs:Vards>Jānis</Skaititajs:Vards>

43

Page 44: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

<Skaititajs:Uzvards>Vilks</Skaititajs:Uzvards>

<Skaititajs:KarstaisUdens>2</Skaititajs:KarstaisUdens>

<Skaititajs:AukstaisUdens>3</Skaititajs:AukstaisUdens>

<Skaititajs:LigumaKods>Ligums_1</Skaititajs:LigumaKods>

<Skaititajs:DatumsIesniegts>2011-12-29</Skaititajs:DatumsIesniegts>

</Skaititajs:Zimite>

<Skaititajs:Atlaide>

<Skaititajs:Atlaide>20</Skaititajs:Atlaide>

</Skaititajs:Atlaide>

</Skaititajs:ZimiteDB>

3.7.2. Zīmītes saglabāšanas vaicājuma izveide

INSERT INTO DB_ZIMITE

VALUES('C1', XMLType('<?xml version="1.0" encoding="UTF-8"?>

<Skaititajs:ZimiteDB xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs C:\Users\M\Desktop\CaseRikiXML.xsd">

<Skaititajs:Zimite>

<Skaititajs:Adrese>

<Skaititajs:Valsts>Latvija</Skaititajs:Valsts>

<Skaititajs:Pilsete>Riga</Skaititajs:Pilsete>

<Skaititajs:Iela>Sporta</Skaititajs:Iela>

<Skaititajs:Maja>5</Skaititajs:Maja>

<Skaititajs:Dzivoklis>12</Skaititajs:Dzivoklis>

</Skaititajs:Adrese>

<Skaititajs:DatumsNo>2011-12-01</Skaititajs:DatumsNo>

<Skaititajs:DatumsLidz>2012-01-01</Skaititajs:DatumsLidz>

<Skaititajs:Vards>Jānis</Skaititajs:Vards>

<Skaititajs:Uzvards>Vilks</Skaititajs:Uzvards>

<Skaititajs:KarstaisUdens>2</Skaititajs:KarstaisUdens>

<Skaititajs:AukstaisUdens>3</Skaititajs:AukstaisUdens>

<Skaititajs:LigumaKods>Ligums_1</Skaititajs:LigumaKods>

<Skaititajs:DatumsIesniegts>2011-12-29</Skaititajs:DatumsIesniegts>

</Skaititajs:Zimite>

<Skaititajs:Atlaide>

<Skaititajs:Atlaide>20</Skaititajs:Atlaide>

</Skaititajs:Atlaide>

</Skaititajs:ZimiteDB>

'));

Vaicājuma izpilde tika atkārtota ar citām lauka „Zīmīte” vērtībām.

44

Page 45: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 58 DB_ZIMITE aizpildes vērtības

3.8. XML datu izgūšanas vaicājumi

Tiks apskatīti divu veidu izgūšanas vaicājumi. Vienā no veidiem būs iespējams noteikt

kritēriju jebkurai dokumenta daļai, taču izgūt varēs tikai visu XML dokumentu. Otrā veidā

būs iespējams izgūt jebkuru XML dokumenta daļu. Jāņem vērā, ka zemāk redzamie vaicājumi

paredzēti tehnikas deomonstrēšanai, tāpēc to sarežģītība šoreiz ir otrajā plānā. Interesantāki

vaicājumi tiks apskatīti tālākās nodaļās.

Gan veidojot XML shēmu, gan uz šīs shēmas bāzētu XML dokumentu tika izmantota

vārdtelpa „Skaititajs”. Reālās sistēmās mēdz bieži gadīties XML dokumenti, kuriem ir

norādīta vārdtelpa. Šis faktors ir jāņem vērā, veidojot vaicājumus XML datiem. Ja nav

norādīta vārdtelpa, netiek iegūtsgaidītais rezultāts. Savukārt, ja ir norādīta vārdtelpa, bet nav

tā vēlreiz deklarēta, tiek iegūta kļūda. Tālāk dotajos piemēros tiks parādīta vārdtelpas

deklarēšana vaicājumos.

3.8.1. Visa XML dokumenta izgūšana

SELECT z.zimite.getClobval() AS ZimiteXML

FROM DB_ZIMITE z;

45

Page 46: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 59 Visu zīmīšu izgūšana

SELECT z.zimite.getClobval() AS ZimiteXML

FROM DB_ZIMITE z

WHERE

z.zimite.existsNode('/Skaititajs:ZimiteDB/Skaititajs:Zimite/Skaititajs:Adrese[Skaititajs:Valsts="Lietuva"]',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') = 1;

46

Page 47: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 60 Visas zīmītes izgūšana, nosacījums uz konkrēta mezgla vērtību

Att. 61 Redzams, ka atlase notikusi pēc valsts

3.8.2. Vaicājumu veids, kurā iespējams izgūt XML dokumenta daļu

SELECT zimite_id,

extract(zimite, '//Skaititajs:Valsts',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"').getStringVal()

"Valsts"

47

Page 48: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

FROM db_zimite

WHERE zimite IS NOT NULL;

Att. 62 Redzams, ka no XML dokumenta var izgūt atsevišķu elementu

SELECT zimite_id,

extract(zimite, '//Skaititajs:Valsts/text()',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"').getStringVal()

"Valsts"

FROM db_zimite

WHERE zimite IS NOT NULL;

Att. 63 No elementa izgūta tikai tā tekstuālā vērtība

48

Page 49: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

3.9. Vaicājumi funkcionalitātes nodrošināšanai

Tiek apskatīta maza daļa funkcionalitātes. Piemēram, no datuāzē saglabātas skaitītāja

rādījumu zīmītes sagatavot maksājmuma summu, kuru saglabāt tabulā DB_MAKSAJUMS.

Netiks apskatīts process līdz brīdim, kad zīmītes id, kurai jāaprēķina summa ir atrasta, un pēc

brīža, kad summa ir iegūta.

Pašlaik sistēma ir izveidota tā, ka aukstais un karstais ūdens maksā vienādi, precīzāk,

var norādīt tikai vienu cenu – kļūda projektēšana gaitā. Taču tiek pieņemts, ka aba veida ūdeņi

maksā vienādi un kopējā summa ir abu komponentu summa. Viens komponents (piemēram,

aukstais ūdens) tiek aprēķināts no zīmītes ņemot iztērētā ūdens daudzumu, reizinot ar līguma

numuram atbilstošu cenu no DB_CENA un atņemot piešķirto atlaidi.

Vaicājums, kurš atrod rezultātu, cik liela maksājamā summa ir katrai reģistrētajai

zīmītei:

SELECT

z.zimite_id "Zīmītes ID",

c.liguma_kods "Līguma kods",

extractvalue(z.zimite, '//Skaititajs:KarstaisUdens',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') "Karstais ūdens",

extractvalue(z.zimite, '//Skaititajs:AukstaisUdens',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') "Aukstais ūdens",

c.cena "Cena",

extractvalue(z.zimite, '//Skaititajs:Atlaide/Skaititajs:Atlaide',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') "Atlaide",

( ( extractvalue(z.zimite, '//Skaititajs:KarstaisUdens',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') +

extractvalue(z.zimite, '//Skaititajs:AukstaisUdens',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') ) *

c.cena * ( 100 - extractvalue(z.zimite, '//Skaititajs:Atlaide/Skaititajs:Atlaide',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"'))/100 ) "Kopā"

FROM db_zimite z, db_cena c

WHERE zimite IS NOT NULL and

c.liguma_kods=extractvalue(z.zimite, '//Skaititajs:LigumaKods',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"');

49

Page 50: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 64 Summa katrai zīmītei

Cik kopā jāmaksā patērētājam, kurš noslēdzis līgumu ar kodu „Ligums_1”:

SELECT

c.liguma_kods "Līguma kods",

sum (( ( extractvalue(z.zimite, '//Skaititajs:KarstaisUdens',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') +

extractvalue(z.zimite, '//Skaititajs:AukstaisUdens',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') ) *

c.cena * ( 100 - extractvalue(z.zimite, '//Skaititajs:Atlaide/Skaititajs:Atlaide',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"'))/100 ) ) "Kopā"

FROM db_zimite z, db_cena c

WHERE zimite IS NOT NULL and

c.liguma_kods=extractvalue(z.zimite, '//Skaititajs:LigumaKods',

'xmlns:Skaititajs="http://www.CaseRiki.lv/MarisVeismanis/Skaititajs"') AND

c.liguma_kods='Ligums_1'

Group by c.liguma_kods;

50

Page 51: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 65 Visi maksājumi kopā patērētājam ar "Līgums_1"

3.10. Papildus informācija

Pēc shēmas registrēšanas parādījās jaunas sistēmas tabulas (skat. Att. 55). Tai pat laikā

ir parādījušies jauni tipi, kurus piešķirt tabulu kolonām. Tā, piemēram, pēc XSD reģistrēšanas

DBVS ir iespējams izveidot tabulu, kur kolonas tips ir nevis vienkārši XMLType, bet

ZimiteDB atbilstošs tips.

51

Page 52: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes …  · Web viewXML (eXtensible Markup Language) – paplašinātā iezīmju valoda. Tās pirmsākumi meklējami HTML, jo bija nepieciešamība

Att. 66 Tabulas kolonas veidošana izmantojot automātiski ģenērēto tipu

3.11. Informācijas avoti

XPath un Oracle XML datubāzes:

http://docs.oracle.com/cd/B10500_01/appdev.920/a96620/xdb04cre.htm#1035571

Dziļāks ieskats Oracle Xpath iespejās:

http://docs.oracle.com/cd/B10500_01/appdev.920/a96620/appcxpa.htm#621642

Diskusiju foruma tēma par vārdtelpu izmantošanu:

https://forums.oracle.com/forums/thread.jspa?threadID=233300

Sarežģītāku XML datubāzu realizācijas apraksti:

http://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb05sto.htm#i1031943

52