Sistēmu izstrādes tehnoloģija, izmantojot ORACLE CASE


Latvijas Universitāte
Fizikas un matemātikas fakultāte
Datorikas nodaļa









Sistēmu izstrādes tehnoloģija,
izmantojot ORACLE CASE





Bakalaura darbs













Autors :             Ivo Ālmanis    4Dz2  
st. apl. Nr. 921160155

Darba vadītājs :         d. z. maģ.  A.Niedrītis





Rīga, 1996



Anotācija

            Bakalaura darbā ir apskatīta sistēmu izstrādes tehnoloģija, izmantojot Oracle CASE rīkus. Oracle piedāvātā tehnoloģija spēj nodrošināt vieglāku un ātrāku sistēmu izstrādi, izmantojot grafiskos līdzekļus un ģeneratorus, kas aizvieto monotonu programmu rakstīšanu. Kā piemērs tiek aplūkota sistēma “Tirgotāju serviss”, kas veic uzņēmumu reģistrāciju kredītkaršu pieņemšanai, to apkalpošanu un vajadzīgo tabulu uzturēšanu citām kredītkaršu norēķinu sistēmām.










Abstract

            In this bachelor work is considered technology of system development using Oracle CASE tools. The technology offered by Oracle can supply easier and faster systems development using graphic tools and generators which can replace monotonous writing of the programs. As an example system "Tirgotāju serviss" (“Merchant service”) is considered which carries out registration of the merchants for acceptance of credit cards, their service and support of the necessary tables of other settlement systems.




Àķķīņàöčÿ

            Ā šàáīņå áàêàëàāšà īñģoņšåķà ņåõķīëīãčÿ šàēšàáīņêč ñčñņåģ, čñļīëüēóÿ Oracle CASE. Ļšåäëàãàåģàÿ Oracle ņåõķīëīãčÿ šàēšàáīņêč ñčñņåģ ģīæåņ īáåñļå÷čņü áīëåå ëåãêīå č áūñņšīå ñīēäàķčå ñčñņåģ, čñļīëüēóÿ ãšàōč÷åñêčå ñšåäñņāà č ãåķåšàņīšū, êīņīšūå ēàģåķÿžņ ģīķīņīķķīå ļčñàķčå ļšīãšàģģ. Êàê ļščģåš šàññģīņšåķà ñčñņåģà "Tirgotāju serviss" (“Ñåšāčñ ņīšãīāöåā“), êīņīšàÿ īñóùåñņāëÿåņ šåãčñņšàöčž ļšåäļščÿņčé äëÿ ļščåģà êšåäčņķūõ êàšņī÷åê, čõ īáñëóæčāàķčå č ļīääåšæêó ķåīáõīäčģūõ ņàáëčö äšóãčõ šàñ÷åņķūõ ñčñņåģ êšåäčņķūõ êàšņī÷åê.






Saturs
1. Ievads................................................................................................................................................................. 6
2. Oracle CASE metode.............................................................................................................................. 7
Oracle Designer/2000 ....................................................................................................................................... 9
Oracle Developer/2000.................................................................................................................................. 10
3. Sistēmas modelētājs.......................................................................................................................... 13
Entīšu, atribūtu un to savstarpējo saišu diagrammu veidotājs................................................. 13
4. Sistēmas dizainers................................................................................................................................ 16
Datu bāzes tabulu ģenerators.................................................................................................................. 16
Datu diagrammu veidotājs........................................................................................................................... 17
Moduļu datu diagrammu veidotājs......................................................................................................... 19
Moduļu struktūru diagrammu veidotājs............................................................................................. 21
Preferenču navigators.................................................................................................................................. 21
Datu glabātuves administrācijas utilīta............................................................................................. 21
5. Sistēmas ģeneratori un izstrādes rīki................................................................................ 23
Oracle formu ģenerators............................................................................................................................. 23
Oracle atskaišu ģenerators....................................................................................................................... 24
Formu dizainers................................................................................................................................................. 24
Atskaišu dizainers............................................................................................................................................ 28
Procedūru veidotājs........................................................................................................................................ 30
Formu izpildes programma........................................................................................................................... 32
6. Sistēmas “Tirgotāju serviss” uzdevums un realizācija........................................ 33
7. Sistēmas funkcionālais apraksts............................................................................................ 43
8. Nobeigums.................................................................................................................................................... 45
9. Literatūra.................................................................................................................................................. 46
Pielikums.......................................................................................................................................................... 47
Diagrammas..................................................................................................................................................... 48
Programmu teksti.................................................................................................................................... 51














1. Ievads


            Salīdzinot ar neseno pagātni, tagad ir tendence veidot lielas sistēmas, kur datu apjoms sasniedz desmitus un pat simtus megabaitus. Uz personāliem datoriem bāzētās datu bāzu vadības sistēmās, kā Fox Pro, Access un citās, palielinoties datu apjomiem, krasi samazinās darbības ātrums. Drīz tiek sasniegta robeža, kad palielināt apjomu vairs nav iespējams. Bez tam nav iespējama vienlaicīga datu lietošana vairākiem lietotājiem, t.i. vienlaicīgi vairāki lietotāji nevar ievadīt datus, tajā pašā laikā nodrošinot šo datu unikalitāti. Nolasot datus parasti visus resursus aizņem viens lietotājs, pārējiem tikmēr ir jāgaida. Šādu ierobežojumu dēļ, ar laiku sistēmas nav funkcionēt spējīgas. Tās jāveido no jauna un tāpēc ir vajadzīgas DBVS, kurām nav šādu ierobežojumu. Lielās datu bāzu vadības sistēmās (ORACLE, DB2 un citas) visas šīs problēmas ir novērstas, lielāku uzmanību pievēršot arī datu aizsardzībai  un drošumam. Oracle piedāvātā tehnoloģija sistēmu izstrādei spēj nodrošināt vieglāku un ātrāku sistēmu izstrādi, izmantojot grafiskos līdzekļus un ģeneratorus, kas aizvieto monotonu programmu rakstīšanu.
            Darbā vispirms ir aplūkota sistēmu izstrādes tehnoloģija, izmantojot Oracle CASE. Nākošajās nodaļās tiek aplūkota sistēmu izstrāde pēc iepriekš aprakstītās tehnoloģijas, t.i., trešajā nodaļā sistēmas modelēšanas rīki, ceturtajā - dizaina rīki un piektajā - sistēmas ģeneratori un formu un atskaišu izstrādes rīki. Sestajā nodaļā tiek aplūkots konkrētas sistēmas izstrādes piemērs - “Tirgotāju serviss”, kas veic uzņēmumu reģistrāciju kredītkaršu pieņemšanai un to apkalpošanu. Septītajā nodaļā tiek aplūkots sistēmas funkcionālais apraksts, kas nepieciešams, lai varētu strādāt izmantojot Oracle CASE.
            Angliskie nosaukumi ir tulkoti izmantojot LZA terminoloģijas komisijas informātikas apakškomitejas apstiprinātos angļu terminu latviskojumus. Terminiem, kuriem iepriekšminētajā vārdnīcā nebija dots tulkojums, ir doti darba autora tulkojumi, iekavās dodot orģinālnosaukumu angliski.
















          2. Oracle CASE metode


            Visbiežāk ar vārdu “sistēma” saprot vairāku datora procesu komplektu, kas apmierina kādu no funkcionālām vajadzībām. Šādu sistēmu izstrādāšana nav viegla, jo to apgrūtina straujā  tehnoloģiju attīstība, t.i., :
·      mikro-datoru straujā attīstība;
·      datoru dzīves cikls ir 2-3 gadi (tehnika vairs neatbilst prasībām);
·      programproduktu lielajā apjomā nav iespējams orientēties;
·      komunikāciju iespējas attīstās neiedomājami ātri, t.i. nav zināms vai šis     komunikāciju līdzeklis būs pietiekami labs pēc dažiem gadiem.

Vislielākās problēmas ir saistītas ar cilvēkiem :
·      cilvēki visbiežāk nezin ko viņi grib un ko tiem vajag;
·      tie lieto vienus un tos pašus jēdzienus runājot par dažādām problēmām;
·      sistēmu izstrādātāji nevar (vai negrib) ieklausīties lietotāju problēmās, un     steidzīgi izveido to ko vajag (viņuprāt).

            Jebkuras sistēmas izstrāde sastāv no vairākiem posmiem. Oracle CASE metode piedāvā šādu sistēmu izstrādes tehnoloģiju [1], kā parādīts 1. attēlā:

                                                          Stratēģija

















Uzturēšana
 

1. attēls. Sistēmu dzīves cikls
 

 
























·      Stratēģija :
           
            Veiksmīga sistēmu izstrāde atkarīga no pareizas klienta vajadzību izpratnes un realizācijas vides kādā sistēma strādās. Svarīgākais šajā posmā ir kopā ar nākamajiem lietotājiem izstrādāt modeļus, kas apmierina pasūtītāja prasības, ņemot vērā tā tehnisko un finansiālo stāvokli. Tiek izveidota entīšu un to savstarpējo saišu diagramma, kas raksturo nepieciešamās informācijas savstarpējo saistību. Jāvienojas par iespējamo sistēmas arhitektūru.

·      Analīze :                                                    

            Analīzes posmā tiek aplūkoti un pārbaudīti stratēģijas rezultāti un sīkāk aplūkotas to detaļas.  Tiek akceptēta vai noraidīta entīšu diagrammas (noraidījuma gadījumā, jāatgriežas stratēģijas posmā). Tiek izveidotas visu nepieciešamo datu vienību definīcijas (Domain), aprakstīti entīšu atribūti un to unikālie identifikātori.

·      Dizains :

            Dizaina posmā tiek aplūkoti analīzes posma rezultāti un turpināta sistēmas pilnveidošana. No entīšu un to atribūtu definīcijām tiek ģenerētas loģiskās un fiziskās datu tabulas un akceptētas vai noraidītas datu tabulu definīcijas. (noraidījuma gadījumā, jāatgriežas analīzes posmā). Tiek veidots vajadzīgo moduļu dizains (vajadzīgo datu apraksts) un papildus sagatavota lietotāja instrukcija.

·      Izstrāde :

            Šajā posmā tiek veikta programmu ģenerēšana, izstrāde un testēšana. Ja kāds no uzdevumiem neapmierina prasības, tad jāatgriežas analīzes vai dizaina posmā, pārstrādājot šo uzdevumu.

·      Lietotāja dokumentācija :

            Paralēli izstrādei ir jāveic lietotāja dokumentācijas sagatavošana.

·      Pāreja  :

            Pārejot uz jauno sistēmu jāveic lietotāju sagatavošana darbam jaunā sistēmā, jāveic visi nepieciešamie sistēmas instalācijas procesi, un veco datu konvertācija uz jaunās sistēmas datu tabulām.

·      Uzturēšana :

            Uzturēšanas posmā tiek veikta patstāvīga datu failu arhivēšana, atklāto kļūdu novēršana, sistēmas darbības efektivitātes uzlabošana.


            CASE metode var tikt izstrādāta bez datora līdzdalības, taču metodes iespējas ir daudz lielākas, ja tās daļas tiek realizētas ar dažādām datora programmām, kas paredzētas šim darbam (2. attēls).








2. attēls. CASE programmu arhitektûra.
 
 
























            Tagad aplūkosim kādi ir Oracle rīki Designer/2000 un Developer/2000, kas nodrošina sistēmu izstrādi balstoties uz iepriekš minēto tehnoloģiju.

Oracle Designer/2000 .


            Oracle Designer/2000 ir programmu pakete biznesa vajadzību analīzei, klienta/servera sistēmu projektēšanai, kas sevī ietver sistēmu analīzi, programmu nodrošinājuma izstrādāšanu un programmu koda ģenerēšanu [3],[5]. Designer/2000 nodrošina daudzlietotāju datu glabātuves (Repository) izmantošanu, kas ļauj izstrādātājam ātri un efektīvi projektēt un izstrādāt klienta/servera sistēmas, kuras var viegli labot atbilstoši izmaiņām un jaunām vajadzībām.

Designer/2000 komponentes ir :

Sistēmas modelētājs    Sistēmas modelētājs (System modeler) ietver organizācijas biznesa vajadzību detalizētu aprakstu. Tas nodrošina izstrādes vidi entīšu (Entity), funkciju un datu plūsmu attēlošanai diagrammu veidā konkrētai sistēmai.

Sistēmas dizainers       Sistēmas dizainers (System Designer) ļauj izveidot konstrukciju sistēmai, kura atbilst organizācijas darbības prasībām. Tas dod sistēmas inženieriem un konstruktoriem sistēmas konfigurācijas attīstības iespējas.

Ģeneratora produkti    Ģeneratora produkti (Forms Generator, Reports Generator un Server Generator) izmantojot datu glabātuvē ierakstītās definīcijas, veido sistēmas objektus, kuri ietver servera komponentes (datu tabulas, tabulu trigeri, programmu paketes u.t.t.) un lietojumprogrammas (ekrāna formas, atskaites, izvēlnes, procedūras u.t.t.).

Datu glabātuves
administrators             Datu glabātuves administrators (Repository Administrator) piedāvā datu glabātuves vadīšanas iespējas, ieskaitot :
·      administrācijas utilīta (Repository Administration                                                    Utility) - datu glabātuves instalēšana, pilnveidošana                                                    un uzturēšana;
·      objektu navigators (Repository Object Navigator) -                                                  grafiska datu glabātuvē esošo definīciju pārskatīšana;
·      atskaites (Repository Reports) - veido iepriekš definētas                                          atskaites par datu glabātuves objektiem.


Oracle Developer/2000.


            Developer/2000 ir programmu pakete Oracle ģeneratora produktu (formu, atskaišu) labošanai, kā arī jaunu ekrāna formu vai atskaišu veidošanai, datu bāzes procedūru veidošanai, labošanai un testēšanai.

Oracle Developer/2000 komponentes ir :

Formu dizainers          Formu dizainers (Forms Designer) ir programma ekrāna formu veidošanai, kas ļauj lietotājam apskatīt un labot datu bāžu informāciju. Formā var būt vairāk par vienu logu, tabulu raksti var tikt izvietoti vairākos logos.

Atskaišu dizainers       Atskaišu dizainers (Report Designer) ir programma atskaišu formu veidošanai, kas ļauj lietotājam viņam vēlamā dizainā apskatīt datu bāžu informāciju.

Procedūru veidotājs    Procedūru veidotājs (Procedure Builder) ir programma procedūru, funkciju rakstīšanai, kas tiek noglabātas datu bāzē, norādot lietotājus, kam būs tiesības izpildīt šīs procedūras (līdzīgi kā ar pieeju datu tabulai). Iespējams izveidot procedūru paketes (Package), kurā apvieno vairākas procedūras un funkcijas, tādējādi palielinot izpildes ātrumu un atvieglojot pārskatamību par to, kas ir noglabāts datu bāzē.





Formu izpildes
programma                  Formu izpildes programma (Forms Runtime) ir programma ar formu dizaineri izveidoto vai formu ģeneratora ģenerēto ekrāna formu izpildīšanu.

Atskaišu izpildes
programma                  Atskaišu izpildes programma (Report Runtime) nodrošina ar atskaišu  dizaineri izveidoto atskaišu izpildīšanu.

            Šo produktu sīkāks apraksts ir dots nākošajās nodaļās. 3. attēlā parādīta Oracle Designer/2000 rīku savstarpējā saistība.






































    Sistēmas modelētājs                    Sistēmas dizainers                    Sistēmas
                                                                                                                       ģenerēšana
       Entīšu un to savstarpējo                  Datu diagrammu                             Servera
     saišu diagrammu veidotājs                    veidotājs                                    ģenerators


      Entītes                                           Tabulas                                      Oracle objektu
      Atribūti                                         Kolonnas                                             definīcijas
      Saites                                             Atslēgas
     



                                                                Moduļu struktūru
                                                             diagrammu veidotājs

                                                            Moduļi
                                                            Izvēlnes
                                                                                                                           Formu
                                                                                                                        ģenerators
                                                                   Moduļu datu                         Formas       
                                                             diagrammu veidotājs                  Izvēlnes

                                                            Moduļi
                                                            Detalizētais tabulu
                                                                                    lietojums                      Atskaišu
                                                            Detalizētais kolonnu                           ģenerators
                                                                                    lietojums
                                                                                                                Atskaites    

                                                            Preferenču navigators

                                                            Ģeneratoru iestādījumi
 


                          Datu glabātuves administrēšana

Datu glabātuves objektu navigators
Matricu diagrammu veidotājs
Datu glabātuves atskaites


 



Datu glabātuves administrēšanas utilīta


3. attēls. Saistība starp Designer/2000 rīkiem.
 
 


          3. Sistēmas modelētājs


            Sistēmas izstrāde sākas ar sistēmas modelēšanu, kas sevī ietver organizācijas biznesa vajadzību detalizētu aprakstu apkopošanu. Tas nodrošina izstrādes vidi entīšu (Entity), funkciju un datu plūsmu attēlošanai diagrammu veidā konkrētai sistēmai. Šajā darbā ir apskatīts tikai entīšu un to savstarpējo saišu diagrammu veidotājs, jo kā pierādījusi prakse bez funkciju, datu plūsmu diagrammu veidotājiem var iztikt.

 

Entīšu, atribūtu un to savstarpējo saišu diagrammu veidotājs


            Sistēma, kas apstrādā informāciju nevar būt veiksmīga bez pilna informācijas apraksta par to, kas ir jāuzkrāj un jāpārvalda.
            Šis CASE rīks palīdz izveidot vajadzīgo informācijas modeli, dialoga režīmā veidojot objektu diagrammas, vienlaicīgi saglabājot objektu definīcijas datu glabātuvē (Repository), neinteresējoties par datu glabāšanas un pieejas metodēm topošajā sistēmā.
            Objektu un to savstarpējo saišu modelēšana kopā ar CASE rīkiem nodrošina efektīvu un ātru to objektu definēšanu un kontrolēšanu, kas nepieciešami informācijas uzkrāšanai.

            Jēdzieni, kas tiek lietoti izmantojot šo rīku [2] :

Entīte                          Entīte (Entity) - ir reāla vai iedomāta lieta vai lietu nozīme, par kuru nepieciešams zināt, saglabāt vai uzturēt informāciju.



 
                                                                   Cards



4. attēls. Entītes apzīmējuma piemērs.
 
 



Definēšanas noteikumi : katrai entītei jābūt identificējamai unikālā veidā (viennozīmīgi). Katra viena tipa entīte ir identificējama atsevišķi no citām šī tipa entītēm.

Atribūts                       Atribūts (Attribute) - ir jebkura detaļa, kas kalpo, lai uzskaitītu, kvalificētu, identificētu, klasificētu un izskaidrotu entīti.







                                                                  Cards


 
                                                          # card_type
                                                            card_name
                                                            proc_ccy
                                                            card_id
                                                            ...        


5. attēls. Atribûtu apzīmējuma piemērs entītē.
 
 



Atribūta nosacījumi : tam jāapraksta tikai tas objekts, kuram tas ir piesaistīts.

            Pirms atribūtu definēšanas datu glabātuvē (Repositoty) jāizveido visu nepieciešamo datu vienību definīcijas (Domain), aprakstot to īpašības. Definējot atribūtu, jāatsaucas uz datu glabātuvē definētajām datu vienību definīcijām.

Unikāls
identifikators :             Katrai entītei jābūt identificējamai unikālā veidā (viennozīmīgi). Katra viena tipa entīte ir identificējama atsevišķi no citām šī paša tipa entītēm. Unikālais identifikators var būt atribūts, atribūtu kombinācija, attiecību kombinācija vai atribūtu un attiecību kombinācija. Piemēros un diagrammu veidotājā unikālais identifikātors ir apzīmēts ar zīmi #.

Saite                            Saite (Relationship) ir asociācija sarp divām entītēm;







 


                        Acq_banks                                                          Cards






 
                     card_type                                                      # card_type
                     acq_bank                                                         card_name
                     ...                                                                     ...



6. attēls. Saites apzīmējuma piemērs.
 
 


           


 
                               A                                                                     B

                                      daudzi                                   viens
                                                 obligāta          neobligāta
                                                                                                           
                                                           
                               A                          rekursīvā saite








7. attēls. Iespējamie saišu nosacījumi.
 
 




Entīšu definēšana:
            Jebkuras jaunas entītes definēšana vai tās izmaiņa uzreiz tiek ieviesta datu glabātuvē (Repository). Diagrammu veidotājs kalpo tikai kā palīglīdzeklis materiāla labākai uztverei, to attēlojot grafiskā interpretācijā. Dzēšot kādu entīti no diagrammām tā var tikt dzēsta arī no datu glabātuves (ja vajag entīti izmest tikai no diagrammas, tad jālieto Cut funkcija, kas tās definīciju saglabā datu glabātuvē).
            Tā kā entīšu definīcijas glabājas datu glabātuvē, entīte var būt attēlota vairākās diagrammās. Mainot entītes definīciju kādā no diagrammām tā automātiski tiek mainīta arī citās diagrammās.



8. attēls. Entīšu un to savstarpējo saišu diagrammu veidotājs.
 
 
















          4. Sistēmas dizainers


            Sistēmas dizainers (System designer) ir nākošā Designer/2000 rīku grupa, kas uztur informācijas sistēmas konstrukciju [4]. Sistēmas dizainera komponentes ir koncentrētas uz datu bāzu aprakstiem, darbības noteikumiem un procedūrām, ekrāna prototipu un darba gaitas aprakstiem, kas veido klienta/servera konstrukcijas pamatu.

Lietojot sistēmas dizaineru, iespējams:

·      ar datu diagrammu veidotāja (Data Diagrammer) palīdzību konstruēt virtuālās (View) un fiziskās datu tabulu shēmas;
·      ar moduļu datu diagrammu veidotāja (Module Data Diagrammer) palīdzību veidot ekrānu un atskaišu prototipus un nodefinēt, kā dati tiks lietoti konkrētajās lietojumprogrammās;
·      ar moduļu struktūru diagrammu veidotāja (Module Structure Diagrammer) palīdzību veidot izvēļņu pielietojuma struktūras.


 

Datu bāzes tabulu ģenerators


            Kad entīšu diagramma ir pabeigta, var sākt veidot reālās datu struktūras. Lai iegūtu datu tabulu definīcijas no iepriekš definēto entīšu definīcijām ir jāizmanto šis Oracle CASE rīks. Pēc noklusēšanas tabula tiek veidota ar tādu pašu nosaukumu kā entīte, taču to var arī mainīt. Tabulas definīcija tiek ņemta no entītes definīcijas izmantojot šādas sakarības :
·      entīte ir jaunā tabula (var definēt tabulu, kas sevī iekļauj divas vai vairākas entītes);
·      entītes atribūti ir tabulas kolonnas;
·      entīšu savstarpējā saite ir tabulas ārējā atslēga (Foreign key).

            Piemēram: Ja ir definētas divas entītes Cards un Acq_banks (6. attēls), tad attiecīgi tiek izveidotas tabulas Cards un Acq_banks ar to kolonnām. Tabulai Cards tiek izveidota primārā atslēga pēc lauka card_type, bet tabulai Acq_banks  ārējā atslēga pēc lauka card_type. Tādējādi abas šīs tabulas ir saistītas pēc ārējās atslēgas.






 


                        Acq_banks                                                          Cards






 
                     card_type                                                      # card_type
                     acq_bank                                                         card_name
                     ...                                                                     ...



9. attēls. Datu bāzes tabulu ìeneratora izveidoto tabulu piemērs.
 
 


            Entīšu definēšana ir sākotnējais posms sistēmas izveidošanā, un pēc jebkuras entītes definīcijas izmaiņas, atkārtoti jāizpilda tabulu ģenerators, kas izveido jaunas tabulu definīcijas datu glabātuvē.


 

 Datu diagrammu veidotājs


            Bez pilnīga datu struktūru apskata datu bāzē, drīz vien tiktu zaudēta kontrole pār to, kas vispār ir izveidots, un kādas ir esošo tabulu struktūras. Datu diagrammu veidotājs ir grafisks rīks datu tabulu veidošanai, kas attēlo visas izveidotās datu struktūras un to savstrpējās saites. Ar to var veikt sekojošo :

·      labot tabulas, kas iegūtas ar ģeneratora palīdzību no entīšu un to savstarpējo saišu definīcijām;
·      konstruēt virtuālās (View) un fiziskas datu bāzes shēmas norādot to savstarpējās saites;
·      izveidot tabulas žurnālu (tabula, ar papildus laukiem : lietotājs, darbība, datums, labošanas vai dzēšanas iemesls), kurā tiek uzkrāta informācija par tabulas datu izmaiņām;
·      automātiski izkārtot labi pārskatāmu datu diagrammu izmantojot AutoLayout funkciju;
·      iekļaut diagrammā tabulas, kas definētas tieši datu glabātuvē (Repository);
·      izveidot vairākas diagrammas, kas ietver vienas un tās pašas tabulas;
·      veikt entīšu un to savstartpējo saišu reģenerāciju no tabulu definīcijām, izmantojot utilītu Table to Entity Retrofi;
·      piekļūt citiem diagrammu veidotājiem :
·      moduļa datu diagrammu;
·      matricu diagrammu;
·      entīšu un to savstarpējo saišu diagrammu veidotājam.

            Datu diagrammu veidotājs neatšķiras no entīšu un to savstarpējo saišu diagrammu veidotāja, izņemot to, ka pirmajā gadījumā darbība notiek ar tabulām un to primārām un ārējām atslēgām, bet otrājā ar entītēm un to savstarpējo saišu definīcijām.
            Iespējams definēt arī virtuālās datu tabulas (View), t.i. datu pieprasījums (Query) no vienas vai vairākām tabulām, ko lietotājs redzēs kā atsevišķu datu bāzes tabulu. Lai nodefinētu šādu virtuālo tabulu, jānorāda :

·      viena vai vairākas tabulas uz kurām tiek balstīta šī tabula ( tām jau jābūt definētām datu glabātuvē);
·      kolonnas, kas tiks iekļautas šajā virtuālajā tabulā;
·      nosacījumi, kas nosaka kādus datus ietver šī virtuālā tabula.



Daži nosacījumi kāpēc vajadzētu lietot virtuālās datu tabulas :

·      datu drošībai, lai aizliegtu lietotājam pieeju dažām tabulas kolonnām, vai konkrētiem rakstiem;
·      vienkāršotu datu pieprasījumus, kad tas vajadzīgs izmantojot jau definētās virtuālās tabulas, kurās jau tas ir realizēts;
·      lai slēptu fizisko tabulu reālo struktūru.

            Virtuālās tabulas trūkums ir tāds ka, ja šī tabula ir definēta apvienojot vairākas tabulas, tad to var izmantot tikai datu apskatīšanai, t.i. nevar labot, vai ievadīt jaunus rakstus (tas nav spēkā, ja virtuālā tabula izveidota no vienas fiziskās tabulas), šī iespēja tiks realizēta ORACLE 7.3 versijā.

10. attēls. Datu diagrammu veidotājs.
 
 


            Pastāv iespēja izveidot entītes no tabulu definīcijām (sk. 3. attēlu). Šo procesu veic datu diagrammu veidotājā iebūvētā procedūra entīšu definēšanai no tabulām (Table to Entity Retrofit) (10. attēls). Tātad pēc izmaiņām, kas veiktas datu tabulu definīcijās, lai šo informāciju arī atjaunotu entīšu definīcijās, ir jāizpilda iepriekš aprakstītā procedūra.
            Ar datu diagrammu veidotāju izveidoto tabulu reāli datu bāzē nav, ir tikai šo tabulu definīcijas datu glabātuvē. Lai izveidotu tabulas, jālieto SQL teksta ģenerators  (Generate SQL DDL) [10],[11]. Izpildot noģenerēto SQL tekstu vidē SQL* Plus [9], datu bāzē tiek izveidotas reālas datu tabulas, kurās var ievadīt datus.


  

Moduļu datu diagrammu veidotājs


            Kad vajadzīgās datu tabulas ir nodefinētas, var sākt veidot vajadzīgos ekrāna moduļus, kuri aprakstīs šo datu ievadi, apskati un labošanu vai atskaišu modeļus, kas ļaus apskatīt šos datus uz papīra vai failā. Katra moduļu datu diagramma (Module data diagramm) apraksta konkrētu ekrāna vai atskaites moduli, raksturojot konkrētā moduļa detalizēto datu izlietojumu (kā dati tiks attēloti, laboti un dzēsti), saites starp izmantotām tabulām un ekrānu moduļiem kā arī tabulas rakstu izvietojumu ekrāna modulī.

11. attēls. Moduļu datu diagrammu veidotājs.
 
           


            Katram modulim tiek piesaistīti tādi jēdzieni kā summārais un detalizētais datu izlietojums :


·      Summārais datu izlietojums parāda, kuras tabulas (neatkarīgi vai tā ir fiziskā vai virtuālā tabula) izmanto šis konkrētais modulis. Atškirībā no detalizētā datu izlietojuma, tas parāda tikai kopējo ainu, t.i., ja kāda tabula tiek lietota modulī vairākkārt, tad summārajā datu izlietojumā tā tik un tā tiek aprakstīta vienu reizi. Šis apraksts tiek automātiski aizpildīts veidojot moduļa detalizēto izlietojumu. Tas tiek mainīts vienmēr, kad ekrāna vai atskaites forma tiek ģenerēta.

·      Kad, veidojot formu, ir izvēlētas tabulas, kas tiks izmantotas, tad var sākt aprakstīt katra konkrētā objekta parametrus jeb aprakstīt detalizēto datu izlietojumu. Katra tabula konkrētā modulī var tikt izmantota vairāk nekā vienu reizi, tāpēc detalizētajā datu izlietojumā ir jāapraksta katra bloka (tabulas formās tiek sadalītas pa blokiem, t.i., katrs tabulas pielietojums ir viens bloks) datu izlietojums (vai dati tiks parādīti kolonnas vai rindas  veidā, cik rakstus vienlaicīgi redzēsim un cik logos tas viss tiks izvietots).

            Lietojot šo CASE rīku, iespējams ātri un viegli izveidot ekrāna vai atskaites formām nepieciešamo datu struktūru un kā redzams 3.attēlā var tikt noģenerēta ekrāna vai atskaites forma. Šo formu vajag uzlabot vizuāli. Taču reizēm vajag uzlabot programmas kodu atbilstoši sistēmas vajadzībām, jo ģenerators nespēj visu paredzēt. Ekrāna vai atskaites formu labošana tiek aplūkota vēlāk, apskatot sistēmas izstrādes rīkus (Developer/2000).

 Moduli var izveidot :
·      veidojot to no jauna;
·      pārkopējot kādu no eksistējošiem moduļiem;
·      izveidot moduli lietojot lietojumprogrammu ģenerēšanas programmu (Applications Design Wizard).

Ar moduļu datu diagrammu veidotāju iespējams veikt sekojošo :
·      izveidot un pārdefinēt moduļu definīcijas, kas tiek glabātas datu glabātuvē;
·      izveidot un labot moduļu datu izlietojumu;
·      izveidot saites starp tabulām;
·      definēt datu lauku izvietojumu ģenerētajās ekrāna un atskaišu formās;
·      ģenerēt ekrāna un atskaišu formas, kā arī veikt apgriezto ģenerēšanu no ekrāna vai atskaites formas uz moduli.

            Tā kā visa šī informācija tiek uzkrāta datu glabātuvē, tad moduļu definīcijas var izveidot un labot arī izmantojot datu glabātuves navigatoru, taču tas nav tik pārskatāmi kā izmantojot šo CASE rīku.
            Šis Oracle rīks izmanto tabulu definīcijas, kas atrodamas datu glabātuvē, tāpēc pēc datu tabulu struktūru izmaiņām, tās automātiski parādās arī moduļa lietojamo datu definīcijās. Bet, lai tās būtu redzamas arī ģenerētajās formās, atliek tikai atkārtoti izpildīt ģenerēšanas programmu.
            Papildus sistēmu izstrādei (sk. 1.attēlu), ir jāveic arī lietotāju dokumentācijas rakstīšana. Arī šo posmu sistēmu izstrādē nodrošina Oracle CASE rīki. Veidojot moduli, datu glabātuvē var aprakstīt visu, kas attiecas uz šo moduli - tā darbības iespējas, informāciju lietotājiem u.t.t. Tādējādi papildus izstrādei tiek nodrošināta arī visu sistēmas moduļu aprakstu noformēšana, t.i. tiek veidota lietotājam nepieciešamā dokumentācija.





 

 Moduļu struktūru diagrammu veidotājs


            Līdz šim tika definētas datu tabulas, moduļi, kuri ļauj veikt datu ievadi, apskati un meklēšanu, taču to visu vajag sakārtot tā, lai tie būtu vislabāk pieejami lietotājam (jāsagatavo lietotāju izvēlnes struktūra). Šim nolūkam domāts nākamais apskates objekts - moduļu struktūru diagrammu veidotājs.
Ar šī rīka palīdzību iespējams :

·      veidot moduļu hierarhiju vai labot ģeneratora uzģenerēto moduļu struktūru diagrammu, kas iegūta funkciju hierarhijas definīcijām sistēmas modelēšanas fāzē;
·      labot datu glabātuvē esošo moduļu definīcijas.


 

Preferenču navigators


            Lietojot jebkuru no ģeneratora līdzekļiem, tie vienmēr griežas pie moduļu preferencēm (Preference), jeb iestādījumiem, kurus tie izmanto ģenerācijas procesā, lai noteiktu kāds būs ģenerācijas gala rezultāts. Šo preferenču labošanai izmanto preferenču navigatoru. Katrai preferencei ir sava noklusētā vērtība, ko lieto ģeneratora produkti, ja konkrētā preference nav noteikta. Pēc moduļa izveidošanas tiek izmantotas konkrētās lietojumprogrammas preferences, jeb noklusētās vērtības.


  

Datu glabātuves administrācijas utilīta


            Jebkurš produkts ir ļoti efektīvs, ja ar to var strādāt vesela organizācija, kad lietotāji darba gaitā var izmantot objektu, ko definējuši citi lietotāji. Oracle definētie  objekti tiks definēti datu glabātuvē (Repository). Bez vadības un kontroles drīz vien nebūtu iespējams saprast kāds objekts eksistē, kāds neeksistē, kāpēc tas ticis definēts un kam ir pieeja šim objektam. Šī utilīta nodrošina visu nepieciešamo Designer/2000 datu glabātuves pilnai administrācijai [6]. Tā ietver sevī šādas komponentes :

Administrācijas
programma                  Ar administrācijas programmas palīdzību var noinstalēt un konfigurēt datu glabātuves vidi eksistējošā Oracle7 datu bāzē. Tā arī dod iespēju eksportēt datu glabātuves saturu bāzi. Iespējams definēt objektu izmantošanas tiesības. Oracle lietotājs var būt datu glabātuves lietotājs vai administrators.
Objektu navigators      Tas ļauj piekļūt datiem, kas atrodas datu glabātuvē. Pirms Designer/2000 rīku lietošanas, ir jāizveido lietojumprogrammu sistēma. Lietojot objektu navigatoru, var izveidot, labot un dzēst objektus, kas izveidoti ar kādu no CASE rīkiem, kā arī kopēt vai sadalīt datus starp lietojumprogrammu sistēmām. Navigators ļauj lietotājam veikt jebkura objekta un ar to saistītās informācijas apstrādi :
·      kāda tipa objekts tas ir (funkcija, procedūra u.t.t.);
·      ko šis objekts lieto (tabulas, loģiskās tabulas).

                                    Lietojot objektu navigatoru, iespējams izsaukt Oracle Designer/2000 rīkus, jo gandrīz visu to, ko var veikt ar šiem rīkiem, var veikt arī izmantojot objektu navigatoru. Tomēr strādāt ar grafiskajiem rīkiem, kas izstrādāti speciāli konkrētam nolūkam (piem., datu tabulu diagrammu veidošanai) ir daudz ērtāk un pārskatāmāk nekā objektu navigatorā.



12. attēls. Datu glabātuves objektu navigators.
 
 


Matricu diagrammu
veidotājs                      Ar matricu diagrammu veidotāja palīdzību var apskatīt associācijas starp datu glabātuves elementiem, kā arī, lai izveidotu jaunus vai labotu esošos datus.

Datu glabātuves
atskaites                      Datu glabātuves atskaites dod pilnu pārskatu par to, kas atrodas  datu glabātuvē.


5. Sistēmas ģeneratori un izstrādes rīki


            Oracle ģeneratora produkti (Forms Generator, Reports Generator un Server Generator) izmantojot datu glabātuvē ierakstītās definīcijas, veido pilnīgas sistēmas, kuras ietver servera puses komponentes un lietotājprogrammas (formas, atskaites, izvēlnes) [7]. Vēl šajā nodaļā tiks aplūkoti sistēmu izstrādes rīki, t.i., formu un atskaišu dizainers, kā arī aplūkotas formu un atskaišu izpildes programmas.

 

 Oracle formu ģenerators


            Oracle formu ģenerators - tā ir programma, kas ģenerē Oracle formu lietojumprogrammas (application) no moduļu definīcijām (skatīt 3. attēlu), kas atrodas datu glabātuvē :

·      ģenerētās formas bloki un lauki tiek noteikti no tā, kādas tabulas un to kolonnas ir definētas moduļa definīcijā;
·      lietotāja preferences, kas aprakstītas ar preferenču navigatora palīdzību un konkrētās paraugformas (templates), kas nosaka kā izskatīsies uzģenerētā forma;
·      formu ģenerators var ģenerēt arī izvēlņu lietojumprogrammas no to moduļiem.

            1. tabulā parādīta saistība starp jēdzieniem datu glabātuvē, lai aprakstītu definīcijas, un jēdzieniem, ko lieto Developer/2000, lai aprakstītu to, kas radīts ar ģeneratora palīdzību.

Designer/2000
Developer/2000
Piezīmes
Module
Forms application
Izpildāma formu lietojum-programma
Module Network
Menu module
Izvēlņu hierarhija, kas ļauj izpildīt citas programmas. Lai izpildītu izvēlni, tai jābūt piesaistītai, kādai no formām.
Page
Content Canvas
Apgabals logā, kurā tekošajā momentā tiek parādīti objekti.
Detailed Base table usage
Block
Mehānisms savstarpēji saistītu objektu grupēšanai.
Detailed Column usage
Item
Interfeisa objekts, kas atļauj lietotājam strādāt lietojum-programmā.
1. tabula. Designer/2000 un Developer/2000 terminu salīdzinājums.
 

            Iespējams veikt arī atgriezenisku procesu no Oracle formas uz moduli. Šo funkciju arī izpilda Oracle formu ģenerators, kas no formas noģenerē ekrāna moduli.



 

Oracle atskaišu ģenerators


            Ar Oracle atskaišu ģeneratora palīdzību iespējams ātri un kvalitatīvi izveidot jebkuras sarežģītības atskaites formu. Atskaišu ģenerators izveido .rdf tipa failu. Oracle atskaite sastāv no 3 komponentēm :
·      datu modelis;
·      datu izvietojuma (layout) modelis;
·      parametru formas.

            Datu modelis apraksta kādi dati tiks izmantoti atskaitē, to hierarhiju un savstarpējās saites. Datu izvietojuma modelis nosaka objektu pozīcijas noģenerētajā atskaišu formā. Parametru formā tiek uzrādīti visi atskaites izpildei nepieciešamie parametri,  piemēram, kur tiks izvadīta atskaite (uz ekrāna, failā, uz drukas iekārtu), faila nosaukums, kopiju skaits u.t.t.
            Atskaišu ģenerators spēj veikt arī atgriezenisku procesu no Oracle atskaites uz tās moduli. Šo funkciju izpilda Oracle atskaišu ģenerators, kas no atskaites noģenerē atskaites moduli.


Formu dizainers


            Formu dizainers ir Oracle Developer/2000 rīks, ekrāna formu veidošanai un izpildei [13]-[16]. Formu lietojumprogrammas (application) ir interaktīvas programmas, kas ļauj lietotājam ievadīt, dzēst, labot un apskatīt informāciju no datu bāzes. Oracle formas tiek ģenerētas no moduļiem, izmantojot, formu ģeneratoru. Iespējami trīs tipu moduļi :

Formas modulis           Formas modulī (Form) var tikt definēti šādi objekti : logs, kurā izvietosies pārējie objekti, teksta objekti (lauki), spiedpogas, PL\SQL kodu bloki (trigeri) u.t.t.,
                                    Formas var tikt glabātas šādos failos :
                                    .fmb - binārais formāts, neatkarīgs no platformas,
                                    .fmt - teksta versija, lieto versiju kontrolei,
                                    .fmx - izpildāmais fails, atkarīgs no platformas.

Izvēlnes modulis         Izvēlnes modulis (Menu) ir izvēļņu kopums kopā ar attiecīgiem citu programmu izsaukuma kodiem. Šie moduļi ir daļa no formu moduļiem un tāpēc tie nevar tikt izsaukti vieni paši bez formu moduļiem.
                                    Izvēlnes var tikt glabātas šādos failos :
                                    .mmb - binārais formāts, neatkarīgs no platformas,
                                    .mmt - teksta versija, lieto versiju kontrolei,
                                    .mmx - izpildāmais fails, atkarīgs no platformas.

Bibliotēkas modulis    Izmantojot bibliotēkas moduli (Library) iespējams apvienot lietotāja procedūras, funkcijas un programmu paketes vienā modulī, kas var tikt izsaukts no citu formu moduļiem.
                                    Failu formāti : .pll, .pld, .plx.


 
                                       Lietojumprogramma
                                                Izvēlnes
                     Formas
                                                                  Bibliotēkas





13. attēls. Lietojumprogrammu moduïi.
 
 


            Lai izveidotu Oracle formu izmanto trīs komponentes (14. attēls), kuras jāizpilda atbilstošajā kārtībā [15]:

Dizainers                     Formas izstrādātājs lieto formu dizaineru, lai izveidotu formas lietojumprogrammu (application). Dizainerā var definēt objektus un uzrakstīt vajadzīgo programmu kodu.

Ģenerators                   Kad forma ir gatava, lietojot ģeneratoru, tiek uzģenerēts  formas izpildāmais modulis.

Izpildes modulis          Formas lietotājs lietos šo moduli eksplutācijā, bet izstrādātājs testēšanas laikā.

         Dizainers                                   Ģenerators                                Izpildes modulis

14. attēls. Oracle formu izveidošanas komponentes.
 
 



Oracle formu lietojumprogrammas tiek veidotas no sekojošām komponentēm (15. attēls) :

Forma                          Forma ir savstarpēji saistītu bloku grupa. Katrs bloks var  attēlot tikai ar vienu datu tabulu.

Bloks                           Bloks sevī ietver interfeisa objektus. Visi objekti, vai tie ir vai nav saistīti ar datu tabulu, atrodas kādā no blokiem. Bāzes tabulas bloks satur objektus no datu tabulas (kontroles bloks satur objektus, kas nav saistīti ne ar vienu tabulu, piemēram spiedpogas). Kad lietotājs izpilda datu pieprasījumu (Query) blokā, tad katrs ieraksts attēlo attiecīgās tabulas vienu rindu.

Ieraksts                        Ieraksts blokā attēlo vienu rindu no datu tabulas. Kad lietotājs izveido, labo vai dzēš ierakstu, attiecīgā tabulas rinda automātiski tiek izveidota, labota vai dzēsta tikai tad, kad konkrētā transakcija ir saglabāta.

Objekts                        Tas ir interfeisa objekts, kas attēlo lietotājam kādas kolonnas datus no tabulas. Lielākoties formās ir tieši teksta objektu lauki, tādi kā objekta nosaukums, skaits u.t.t. Objekti var būt arī spiedpogas, izvēlnes un citi.
Objekti
 
Bloks
 
Ieraksts
 
Forma
 
                                          











15. attēls. Oracle formu komponentes.
 








 



                          Forma                                                       Cards








 


                          Bloks                         Cards                                             Prefixes










 


                        Objekts                    Type     Name     CCY     Type      Prefix     Name



16. attēls. Oracle formu komponenšu hierarhija.
 
 
            Ekistē 5 objektu pamattipi, kurus var lietot, lai parādītu vajadzīgo informāciju lietotājam [15] :

1.    visu veidu objekti (items) (teksta lauki, spiedpogas u.t.t.);
2.    brīdinājuma ziņojumi un trauksmes logi (alerts), kas brīdinās lietotāju par problēmām vai pārjautās par kādas operācijas izpildes veikšanu vai atcelšanu;
3.    redaktori (editors), kas ļauj lietotājam ievadīt garus tekstus kā piem. komentārus;
4.    vērtību saraksti (list of values / LOV), kas piedāvā lietotājam noteiktu vērtību sarakstu;
5.    logi (windows) -  kadri, kuros tiek attēloti kāda bloka objekti.

Datu saglabāšana datu tabulās :

            Kad lietotājs lieto formu, tad viņš ievada, labo vai dzēš tabulas datus, ja viņam ir tiesības veikt šīs operācijās. Kad lietotājs ielasa datus formā izmantojot, datu pieprasījumu, katrs ieraksts, kas tiks parādīts, attēlo konkrētu tabulas rindu. Kad lietotājs ievada jaunu, labo vai dzēš rakstu, tad šīs izmaiņas nonāk tabulā tikai tad, ja ir saglabāta šī transakcija. Tomēr Oracle formas nestrādā tieši ar datu tabulām, uzreiz veicot izmaiņas tabulā, tūlīt pēc tam kad tās bijušas formā, bet gan ar datu kopiju, kas tiek turēta atmiņā (Rollback segment). Tādējādi lietotājs tiek pasargāts no negadījumiem : tas var veikt izmaiņas datu kopijā un pēc tam atcelt tās, pirms transakcijas saglabāšanas, nemainot tabulas datus. Pirms lietotājs nav saglabājis datus, tie nav redzami citiem lietotājiem.
            Nolasot datus vai manipulējot ar tiem, Oracle formas to nodrošina izsaucot attiecīgas SQL komandas [11].

Problēma
Lietotāja darbība
SQL kommanda
Parādīt tirgotāju tabulu
Query -> Execute
SELECT ...
Ievadīt jaunu lietotāju
Ievadīt datus tukšajā ierakstā un saglabāt.
INSERT INTO ...
Parādīt tikai tirgotājus, kam ID sākas ar 22..
Query -> Enter
Ievadīt 22.. tirgotāja ID laukā
Query -> Execute
SELECT ...
WHERE ...
Izlabot tirgotāja ID, lai sāktos ar 33..
Izlabot ID lauku uz 33..
UPDATE ...
WHERE ...
Saglabāt veiktās izmaiņas
Action -> Save
COMMIT
Dzēst rakstu
Atrast vajadzīgo rakstu
DELETE ...
WHERE ...
Atcelt nesaglabātās izmaiņas
Action -> Clear all
Edit -> Undo
ROLLBACK
2. tabula. SQL komandas veicot datu maiòu Oracle formās.
 

            Tā kā Oracle formas ir objektu orientētas, katram no objektiem var piesaistīt trigerus (trigger) (procedūras, kas izpildās veicot kādu darbību, nospiežot spiedpogu, saglabājot rakstus, mainot tos u.t.t.), tādējādi atvieglojot programmu rakstīšanu. Ir trīs līmeņu trigeri :
1.    formu trigeri;
2.    bloku trigeri;
3.    objektu trigeri.

            Daži trigeri (WHEN-FORM-COMMIT, WHEN-NEW-FORM-INSTANCE)  izpildās tikai formu līmenī un nevar tikt izsaukti no kāda objekta. Savukārt, ja trigeri var izsaukt objekta līmenī (PRE-TEXT-ITEM, WHEN-NEW-RECORD-INSTANCE), tad to var izsaukt arī bloka vai formas līmenī. Trigeru ierobežojumi ir tikai virzienā no formas uz objektu.

Formu izmantotās izvēlnes.

            Izpildot Oracle formu, tā izmanto kādu no izvēlnēm : pēc noklusēšanas tā ir Oracle standarta izvēlne vai ar izvēlņu redaktora (Menu editor), kas ir formu dizainera sastāvdaļa, palīdzību izveidota izvēlne. Ar šī redaktora palīdzību ātri un viegli var izveidot izvēlnes. Tad katram izvēlnes objektam pievieno atbilstošo programmu, kas tiks izpildīta, aktivizējot šo objektu, un noģenerē izvēlnes izpildāmo failu. Tālāk atliek tikai vajadzīgā formā norādīt ka tiks izmantota šī izvēlne.


 

Atskaišu dizainers


            Atskaišu dizainers ir Oracle Developer/2000 rīks, kvalitatīvu atskaišu izstrādāšanai, rezultātu parādīšanai uz ekrāna, saglabāšanai failā vai izvadīšanai uz drukas iekārtas [17],[18]. Oracle atskaites tiek ģenerētas no moduļiem, izmantojot ģenerēšanas programmmu. Atskaites rezultāts var saturēt ne tikai teksta, bet arī grafisku informāciju.

Pamatiespējas :

·      izvietojuma redaktors, ar kura palīdzību var izveidot atskaites struktūru un objektu izvietojumu;
·      objektu navigators, kas ļaus viegli orientēties atskaites izmantotajos datu  objektos;
·      funkciju izmantošana aprēķiniem;
·      teksta fontu, krāsu un grafisko objektu uzturēšana;
·      atskaites iepriekšēja apskatīšana (Preview).

Lai izveidotu Oracle atskaiti ir jāveic šādi soļi :

1) jāizveido jaunās atskaites definīcija (kādi dati tur būs, to izvietojums u.t.t.);
2) jādefinē datu modelis (kādas tabulas un to lauki tiks izmantoti, to savstarpējās saites kā arī jādefinē vajadzīgo aprēķinu formulas);
3) jāizveido atskaites izkārtojums;
4) jāizveido atskaites parametru forma.

Atskaites datu modelis tiek veidots no sekojošām komponentēm(17. attēls) :
Datu pieprasījums       Datu pieprasījums (Queries) ir standarta SQL SELECT komanda, kas atlasa visu nepieciešamo informāciju no standarta datu bāzēm kā ORACLE, DB2, SQL/DS. Var izveidot neierobežotu skaitu datu pieprasījumus, kas izmanto neierobežotu skaitu tabulu, izmantojot neierobožotu skaitu datu bāžu, kas var atrasties uz neierobežota skaita mašīnām.

Grupas                         Grupas nosaka datu attēlošanas hierarhiju atskaitē. Oracle atskaites automātiski katram datu pieprasījumam izveido savu grupu, taču nav ierobežojumu arī grupu skaitā. Piemēram, ja tabulā ir dati, kas atkārtojas vairākkārt, tad var izveidot atsevišķu grupu zem konkrētā datu pieprasījuma.

Kolonnas                     Kolonnas satur datu vērtības atskaitei. Pēc noklusēšanas katra kolonna atspoguļo konkrētās datu tabulas kolonnu. Taču var izveidot arī formulu un summārās kolonnas, kas parāda attiecīgās  formulas vai summārās kolonnas vērtību katrai tabulas rindai.

Datu saites                  Datu saites nosaka datu savstarpējās saites starp datu tabulām.

Parametri                     Parametri ir mainīgie, kas ļauj mainīt atskaites rezultātu atkarībā no to vērtībām. Oracle atskaites automātiski izveido sev nepieciešamos parametrus, piem., kopiju skaits, sistēmas datums u.t.t. Taču var izveidot arī savus parametrus, un to vērtības likt aizpildīt lietotājam atskaites izpildīšanas laikā. Parametri datu modelī netiek parādīti, bet tie tiek izmantoti formulas kolonnu vērtību aprēķinos.

Datu pieprasījumi
 
Formulu kolonnas
 
Kolonnas
 
Grupas
 
                   






Datu saite
 


17. attēls. Atskaites datu modeïa komponentes.
 
 



            Pēc datu modeļa definēšanas, kas ir galvenais veidojot atskaiti (jo kvalitatīvāks datu modelis, jo vieglāk ar to veidot datu izvietojumu), var sākt veidot atskaites formas izkārtojumu.

Atskaites forma sastāv no šādām komponentēm (18.attēls) :

Atkārtojošais kadrs     Atkārtojošais kadrs parāda datu tabulas rindas, kas ir nolasītas no tabulas kā arī nosaka to atrašanās vietu atskaites formā. Tas atkārtojas tik reizes cik rindu ir nolasīts no tabulas.

Kadrs                          Kadrs ietver sevī vairākus citus objektus ( tas var būt arī atkārtojošais kadrs), tādējādi tas atvieglo objektu izvietošanas kontroli.

Lauki                           Lauki nosaka objektu (tabulu kolonnu, formulu vai summāro kolonnu) atrašanās vietu atskaitē un attribūtus (fonti, krāsa u.t.t.). Lauks kā viens no objektiem atrodas kadra vai atkārtojošā kadra iekšienē.

Kadrs
 
Atkārtojošais kadrs
 
            






Lauks
 


18. attēls. Atskaites formas komponentes.
 
 




            Vēl var izveidot atskaites parametru formu, ja tāda ir nepieciešama. Lai redzētu rezultātu, atskaite jāizpilda, izmantojot programmu Report Runtime. Lai šo atskaiti varētu izpildīt no Oracle formām tā ir jānoģenerē, rezutātā iegūstot .rep tipa failu, kuru var izsaukt no formas.


 

Procedūru veidotājs


            Oracle procedūru veidotājs ļauj vieglāk un ātrāk izveidot programmas darbībām ar datu bāzes objektiem, kas var tikt lietotas citos Developer/2000 rīkos (Oracle Forms, Oracle Reports, Oracle Graphics) [19].

Šo rīku var lietot veidojot :

PL/SQL
programmas                 Procedūras, programmu paketes, kas var tikt iekļautas Developer/2000 lietojumprogrammās [8].


Klienta PL/SQL
bibliotēkas                   Procedūras, programmu paketes, bibliotēkas, kas var tikt izmantotas dažādās Oracle lietojumprogrammās.

Servera PL/SQL
programmas                 Procedūras, programmu paketes, datu tabulu trigeri, kas tiek noglabāti Oracle7 serverī.

            Oracle procedūru veidotājs nodrošina visu nepieciešamo sekmīgai PL/SQL programmu izstrādei un skaņošanai. Tas sevī iekļauj sekojošas funkcijas :

Programmu
kodu redaktors            Programmu kodu redaktors nodrošina programmu labošanu, iekļaujot visas standarta tekstu manipulācijas iespējas, kā arī speciālas PL/SQL programmu labošanas un skaņošanas iespējas:
·      programmas koda kompilācija;
·      kompilācijas kļūdu apskate un automātiska pārvietošanās uz kļūdaino programmas teksta rindu.

Programmu
kodu skaņošana           Oracle procedūru veidotājs nodrošina programmu tekstu skaņošanu, atļaujot izpildīt programmu pa vienai rindai, pārtraukt tās izpildi u.t.t. Skaņojot iespējamas šādas funkcijas :
·      ievietot pārtraukuma punktu;
·      dinamiski tiek attēlota izpildāmā programmas rinda;
·      kad programma ir apstādināta, var apskatīt steka stāvokli, apskatīt un labot mainīgo vērtības, izsaukt citas PL/SQL procedūras.

Saglabāto programmu
labošana                      Procedūru veidotājs ļauj izveidot, labot un izpildīt programmas, kas noglabātas Oracle7 serverī [12].


            Jāpiebilst, ka programmu skaņošana, kuras savā darbībā izsauc Oracle7 serverī saglabātās programmas (Stored programm units) nestrādā korekti. Tas pats attiecas arī uz Oracle formu skaņošanu, ja kādā no procedūrām tiek izsaukta serverī saglabātā programma.


Formu izpildes programma

           
            Formu izpildes programma ir paredzēta, lai izpildītu ekrāna formas, kas ļaus apskatīt un labot datus [20]. 19. attēlā attēlota primitīva operāciju shēma, kas izpildās lietojot Oracle Runtime :









 
      1. Formas                             2. Pieslēgšanās                       3. Query pieprasījuma
      atvēršana*                               datu bāzei *                                    izpilde














 



       6. Datu                                     5. Datu                              4. Datu
     saglabāšana                               pārbaude                            labošana


 





                                                                   Datu bāze



* Pirmie divi posmi lietotājam var būt  automatizēti.
 
 
                       
19. attēls. Oracle Runtime operāciju shēma.
 
 



            Atskaišu izpildes programma strādā analoģiski, tikai nav pēdējo trīs posmu, kas saistīti ar datu labošanu un pārbaudi, kā redzams 19. attēlā [21].


            Tas arī īsumā būtu viss par Oracle rīkiem, ar kuru palīdzību var izprojektēt un izveidot datu bāzu sistēmu. Šeit netika aplūkota biznesa procesu modelēšana, kas ir pirmsākums sistēmu modelēšanā. Netika aplūkoti arī daži Oracle rīki sistēmas modelēšanas fāzē, piemēram: datu plūsmu diagrammu veidotājs, funkciju hirarhiju diagrammas un citi.











6. Sistēmas “Tirgotāju serviss” uzdevums un realizācija


            Sistēma paredzēta uzņēmumu un to filiāļu reģistrācijai, kas vēlas veikt pirkšanas-pārdošanas darījumus ar kredītkartēm. Šo uzņēmumu reģistrācija un ar tiem noslēgto līgumu uzskaite un apmaksas kontrole ir pirmais solis tam, lai uzņēmums varētu veikt darījumus ar kredītkartēm un bankas, kas izdot noteiktā veida kredītkartes, zinātu par šī uzņēmuma eksistenci, kā arī, lai visas pārējās kredītkaršu norēķinu sistēmas zinātu par šī tirdzniecības punkta eksistenci. Bez tam šajā sistēmā  ir jāievada visi apstrādes centra nepieciešamie klasifikatori, piemēram, karšu veidi, kurus  apstrādās konkrētais apstrādes centrs, dalībbankas, kas izdod vai pieņem konkrēta tipa kartes u.t.t.
            Sistēmā izmantotās izvēlnes, ievadformu komentāri ir angļu valodā, jo šī sistēma tiks lietota arī citu valstu norēķinu centros. Dažas atskaites tiek veidotas visās nepieciešamajās valodās.

Darba aprakstā tiks lietoti jēdzieni :

Kredītkarte :
            Plastikāta karte bezskaidras naudas norēķinu veikšanai. Izšķir 2 veidu kartes : Debetkartes ( Ar to var veikt maksājumus tikai par to summu, kas ir iemaksāta bankā) un Kredītkarte ( Veicot darījumu var maksāt vairāk nekā ir iemaksāts bankā). Plaši izplatījies ir jēdziens “kredītkarte” kaut gan runa, ir par plastikāta karti, kas atkarībā no tā vai banka dod kredītu ir kredītkarte vai debetkarte. Turpmāk tiks lietots vārds kredītkarte.

Identifikācijas numurs :
            Katram tirdzniecības punktam (TP) , kas tiek ieviests kredītkaršu norēķinu sistēmās tiek piešķirts viennozīmīgs 7 ciparu kods , kura pirmie 6 cipari ir kods , bet septītais cipars ir iepriekšējo sešu kontrolcipars pēc LUHN metodes.

POS Termināls :
            Iekārta ar kredītkarti veikto darījumu reģistrācijai. Terminālis pārbauda vai karte nav stopsarakstā, t.i. vai tās lietotājam nav kaut kādi parādi saitībā ar banku  (nav apmaksāts kredīts u.t.t.). Reizi dienā visi uzkrātie dati tiek nosūtīti uz apstrādes centru.

Sistēmas uzdevums ir :

·      Nodrošināt uzņēmumu un to filiāļu (tirdzniecības punktu ) reģistrāciju kredītkaršu pieņemšanai (jaunajiem TP ģenerējot identifikācijas numurus pēc LUHN metodes).
·      Nodrošināt jau esošo tirdzniecības punktu meklēšanu pēc vairākām pazīmēm (nosaukuma  fragmenta, uzņēmuma reģ. numura , identifikācijas numura, adreses).
·      Tirgotāju līgumu noslēgšana un tirgotāja ieviešana aprēķinos tikai pēc rēķinu apmaksas.
·      Karšu tabulas uzturēšana.
·      Banku un to filiāļu tabulas uzturēšana.
·      Konkrētās kartes veida dalībbanku tabulas uzturēšana.
·      Apstrādes centru tabulas uzturēšana.
·      Tirgotāju kategoriju kodu kasifikātora uzturēšana.
·      Valūtas kodu klasifikātora uzturēšana.
·      Uzturēšanas un nomas  līgumu uzskaite. (POS terminālu un citu iekārtu uzturēšanas līgumu uzskaite).
·      Uzturēšanas un nomas līgumu apmaksas rēķinu izdruka katru ceturksni, to uzskaite (ikceturkšņa automātiskā rēķinu izdruka).
·      Dažādu veidu atskaišu drukāšana pēc klienta vajadzībām u.t.t.

            Realizācija tika sākta ar entīšu un to savstarpējo saišu definēšanu, noskaidrojot kādus datus vajadzēs apstrādāt un kā tie savstarpēji ir saistīti. Diagramma dota pielikumā, taču jāpiebilst, ka tas ir galaprodukts, kas iegūts pēc vairākkārtējas pārzīmēšanas un to entīšu iekļaušanas, kas iegūtas reģenerējot tās no to datu tabulu diagrammas.
            Izmantojot iepriekš aprakstīto Oracle rīku datu tabulu ģenerēšanai, veic tabulu definīciju ģenerāciju, kas tiek ierakstīta datu glabātuvē (Repository). Reāli nevienas tabulas, kurā varētu ievadīt datus vēl nav - ir tikai to definīcijas datu glabātuvē. Lai izveidotu tabulas datu bāzē, izmanto Oracle utilītu, kas ir iekļauta datu diagrammu veidotājā. Šī utilīta veic SQL operatoru ģenerēšanu, kurus izpildot datu bāzē tiek izveidotas tabulas.
            Ja datu diagrammu zīmējot viss liekas ir kārtībā un SQL operatorus programma noģenerē, tad var rasties problēmas tieši izpildot šos SQL operatorus. Iespējams, ka SQL teksts ir nepareizs un reizēm kļūda pieļauta jau zīmējot diagrammu un tā tiek paziņota tikai šeit. Darbības gaitā ne reizi vien nācās atgriezties atpakaļ, lai pārzīmētu datu diagrammas un pārģenerētu tabulas, bet to izdarīt ir daudz vieglāk nekā Fox Pro vidē, jo uzreiz ir redzama tabulu vispārējā aina grafiskā interpretācijā, to lauki. Tagad nevajag visu šo informāciju atcerēties no galvas vai zīmēt uz papīra.
             Kad tabulas ir gatavas, var sākt veidot atbilstošos ekrāna moduļus datu ievadīšanai. 20. attēlā parādīta tirgotāju līgumu ievades formas ekrāna modelis.


20. attēls. Tirgotāju līgumu ievades ekrāna formas modelis.
 
 


            Šo moduli noģenerējot iegūst līgumu ievades formu, kuru atliek tikai nedaudz vizuāli koriģēt. Ir arī nedaudz jālabo programmas atbilstoši vajadzībām, taču visu lielāko darbu izdara formu ģenerators. Protams to visu varēja arī izdarīt bez ģeneratora palīdzības, taču tas aizņem krietni ilgāku laiku.
            Šajā situācijā varētu rasties priekšstats, ka tagad darbu varētu darīt jebkurš, taču tā nav. Piemēram, ja diagramma būtu uzzīmēta nedaudz savādāk, izmainītos arī noģenerētā forma un varbūt to vajadzētu labot tik pat ilgi, cik rakstīt to pašam (taisot dažas formas tā ir gadījies, ka rezultāts nav tas, kas bija gaidīts un cits nekas neatliek kā pārzīmēt moduli savādāk). Daudzos gadījumos diezgan lielus programmu kodus var vienkārši aizstāt  pareizi norādot objektiem to īpašības (properties) vai kādā no trigeriem izpildot kādu darbību. Tas aizņem mazāk programmu koda un ir labāk pārskatāms nekā to pašu nodrošinot ar savu programmu, mēģinot nodrošināt pareizu darbību visos gadījumos. Pastāv arī moduļu datu diagrammas reģenerācija no formas, ko izmanto gadījumos, kad ir labota formas definīcija. Lai tas pats nebūtu jādara arī moduļa datu diagrammā, veic moduļa reģenerāciju no formas.
            Bez  ekrāna formām vēl ir jāizveido arī katras ievada formas atskaite. Lielāko daļu darba var izdarīt ar ģeneratoru palīdzību. Kā piemēru aplūkosim atskaites par tehnikas uzturēšanas vai nomas maksas rēķinu izdruku. Tā kā visi dati atrodas tikai vienā tabulā, tad atskaites modelis ir ļoti vienkāršs. Vislielākās grūtības sagādā tieši  atskaites datu modeļa izveidošana, jo atskaite par tehnikas uzturēšanu ir jāpiestāda maksātājam par visiem tā klientiem kopā, ņemot vērā, ka kāds no klientiem ir noslēdzis jaunu līgumu ceturkšņa vidū un tam jāmaksā tikai par šo laika periodu. Lai to visu varētu apvienot vienā atskaitē vajadzēja izveidot diezgan sarežģītu atskaites datu modeli - sk 21. attēlu.

21. attēls. Atskaites par tehnikas uzturēšanu datu modelis.
 
 


Pats atskaites rezultāts atrodas pielikumā, darba beigās.



22. attēls. Sistēmas galvenā izvēlne.
 
 


Uzņēmumu reģistrācijas shēma :
            Ja  firmas tirdzniecības punkts nav reģistrēts datu bāzē (pastāv iespēja meklēt TP pēc visām tā pazīmēm : nosaukuma, identifikācijas numura , adreses u.t.t ), tad tas tiek izdarīts, piešķirot tam viennozīmīgu identifikācijas numuru pēc kura šajā un arī citās kredītkaršu norēķinu sistēmās tiks atpazīts šis tirdzniecības punkts. Algoritmu viennozīmīga tirdzniecības punkta identifikācijas numura izveidošanai skatīt pielikumā. Ievadot jaunu tirdzniecības punktu, kas var būt patstāvīga firma, vai kāda no esošās firmas filiālēm, jāuzrāda visi tā dati - juridiskais nosaukums, adrese, reģistrācijas numurs, kā arī kontaktpersona ar kuru sazināties neskaidrību gadījumos. Tirgotājs nevar tikt izdzēsts kamēr tam eksistē uzturēšanas vai nomas līgums vai ar to ir noslēgts līgums par konkrētas kartes pieņemšanu vai tam eksistē filiāles. Sistēmā katrai no ievadformām iespējams veikt datu izdruku failā vai uz drukas iekārtas. Atskaiti par tirdziecības punktiem skatīt darba beigās, pielikumā.


23. attēls. Tirgotāju un to filiāïu ievades forma.
 
 


            No brīža, kad TP tiek ievadīts tabulā, tas vēl nav tiesīgs veikt aprēķinus. Šim nolūkam ar tirgotāju ir jānoslēdz līgums (AGREEMENT) par konkrēta karšu veida pieņemšanu, kurā tiek uzrādīti visi konkrētās kartes pieņemšanas dati, kurus izmanto tālāk aprēķinos un kad visas formalitātes ir nokārotas, tad TP var ieviest norēķinos norādot, ka tā status, ir 0 (t.i., ka tirgotājs ir pilntiesīgs pieņemt konkrēto karti).

24. attēls. Tirgotāju līgumu ievades forma.
 



Vajadzīgo tabulu uzturēšana :

·      Karšu tabula :
     Tā ietver sevī visu to karšu sarakstu, kuras apstrādā konkrētais karšu apstrādes centrs. Katrai kartei ir jāuzrāda tās apstrādes algoritms (EC/MC, VISA, AMEX, vai DOMESTIC), parametrs vai karte tiek akceptēta un apstrādāta šajā karšu apstrādes centrā un citi. Vietējām kartēm ir jāuzrāda karšu prefiksu intervāli. Karti var dzēst tikai tad, kad dzēsti visi vietējo karšu intervāli, neeksistē neviens līgums ar tirgotāju par šīs kartes pieņemšanu, nav nevienas bankas, kas ir pieņēmējbanka šai kartei u.t.t.

·      Banku un to filiāļu tabula :
     Tā satur pilnu informāciju par bankām un to filiālēm. Ievadot jaunu banku obligāti jāievada arī vismaz viena tās filiāle. Katrai bankai ir viennozīmīgs 2 ciparu, bet tās filiālēm 3 ciparu kods. Banku var dzēst tikai tad, kad šī banka vairs nav nevienas kartes pieņēmējbanka, tai nav nevienas filiāles.

·      Pieņēmējbanku(dalībbanku) un filiāļu tabula :
     Satur informāciju par konkrētas kartes dalībbankām un to filiālēm, izdevējbankas valūtu, apstrādes reģioniem u.t.t. Banku un tās filiāles izvēlas no iepriekš minētā banku un to filiāļu saraksta. Katrai dalībbankai jānorāda tās status :
0 - dalībbanka ( starpbanku norēķinu dalībniece ), 1 - piesaistītā banka (banka, kas darbojas dalībbankas vārdā ar karšu pieņemšanu), 2 - nedalībbanka (banka, kurai tiek veikta tikai datu vākšana, bet neveic norēķinus), 3 - atsevišķa banka (banka, kurai tiek veikti aprēķini, bet kura nepiedalās dalībbanku savstarpējos norēķinos). Dalībbanku var dzēst tikai tad, kad vairs neeksistē neviens līgums ar tirgotāju, kas atsaucas uz šo banku, kamēr tai eksistē filiāles.



25. attēls. Kartes pieņēmējbanku un to filiāļu ievades forma.
 
 


·      Apstrādes centru tabula :
     Šeit tiek uzrādīti visi tie karšu apstrādes centri, kurus pazīst esošais centrs un starp kuriem notiek datu apmaiņa. Starp visiem apstrādes centriem jāatzīmē konkrētais centrs, pie kam šo pazīmi var iestādīt tikai vienam centram. Katram apstrādes centram norāda kartes ar kurām tas veic norēķinus.


26. attēls. Norēķinu centru ievades forma.
 
 


·      Tirgotāju kategoriju kodu klasifikators :
     Satur informāciju par visiem iespējamajiem tirgotāju klasifikatoriem(MCC) grupētiem pēc to darbības veida (tirdzniecība, auto īre,nekustamais īpašums u.t.t.).

·      Valūtas kodu klasifikators :
            Satur informāciju par visu valstu valūtām - to nosaukumi, sīknaudas mērvienības, saīsinājumu kodi.
           
·      Tirgotāju apkalpošana (POS termināļu un citas tehnikas uzturēšana un noma) :
            Ja norēķinu centrs veic karšu pieņemšanas tehnikas apkopi, tad ar tirgotāju tiek slēgts līgums par konkrētās karšu pieņemšanas tehnikas uzturēšanu, ja tehnika ir tirgotāja īpašums vai līgums par tehnikas nomu, ja tirgotājs nevar pats sev nopirkt šo tehniku. Šī informācija tiek uzkrāta atsevišķā tabulā. Katrs tirgotājs pats var maksāt par tehnikas apkopi, taču to viņa vietā var darīt arī kāda cita organizācija (parasti to veic augstākstāvošā organizācija vai bankas, lai piesaistītu sev vairāk klientu).


27. attēls. Tehnikas uzturēšanas un nomas līgumu ievades forma.
 
 


            Katra ceturkšņa beigās par katru TP, ar kuru ir noslēgts uzturēšanas vai nomas līgums ir jāpiestāda jauns rēķins par tehnikas uzturēšanu vai nomu par nākošo ceturksni. Rēķinu piestāda maksātājfirmai par visiem tās tirdzniecības punktiem kopā, ņemot  vērā , ka ar katru TP var būt noslēgti vairāki līgumi. Vērā tiek ņemts arī tas , ka firma varbūt nav apmaksājusi kādu no TP iepriekšējiem rēķiniem, tad maksājamā summa jāpalielina par attiecīgo ceturkšņa daļu. (Tā parasti gadās, ja iepriekšējā ceturksnī ar firmu ticis noslēgts jauns līgums par tehnikas uzturēšanu vai nomu).
            Kā jau iepriekš tika minēts jebkuras ievadformas atskaites rezultātus varat aplūkot darba beigās, pielikumā.

            Tas arī īsumā būtu viss par sistēmu “Tirgotāju serviss”. Jābiebilst, ka daudzās ievadformās ievadot datus kādā no datu tabulām ar trigeru palīdzību tiek ievadīti dati arī citās tabulās, kuras netika šeit aplūkotas, jo tās izmanto citas kredītkaršu norēķinu sistēmas.











          7. Sistēmas funkcionālais apraksts


            Runājot par Oracle CASE, vienmēr tiek uzsvērts ka šīs programmas prasa lielus resursus. Pēc korporācijas ORACLE datiem sistēmu lietotājiem minimālās prasības ir: 486DX 33Mhz ar 8Mb brīvpieejas atmiņu (RAM), taču kā rāda pieredze vajag vismaz 486DX2 50Mhz ar 12-16Mb RAM. Runājot par izstrādātājiem, ORACLE uzsver, ka minimālais būtu 486DX 33Mhz ar 16Mb RAM, taču jābiebilst, ka strādājot ar 486DX2 80Mhz ar 16 MbRAM reizēm liekas, ka vajadzētu vismaz vēl 16 Mb vairāk un vismaz Pentium 90Mhz procesoru (izstrādātājs parasti atver vairākas lietojumprogrammas un strādā te ar vienu te ar otru, tāpēc vislielākās prasības ir pret atmiņas apjomu).
            Tā kā atmiņas apjoms ne vienmēr ir pietiekams, ļoti liela nozīme ir videi, kurā tiek strādāts. Windows’95 salīdzinājumā ar Windows 3.1 nodrošina labāku atmiņas sadali starp vairākiem procesiem, t.i. vidē Windows 3.1 biežāk notiek kļūda “General protection fault in module ...”.
            Apsverot Oracle servera prasības, var tiekt, ka izstrādei pilnīgi pietiek ar Pentium 90Mhz procesoru ar 16Mb RAM strādājot ar Developer/2000, bet vismaz 32Mb RAM strādājot ar Designer/2000 programmām. Tas protams ir pietiekami izstrādes procesā, kad šo serveri noslogo tikai 6 darba stacijas, bet eksplutācijas serverim, kuru noslogo 10 un vairāk darba stacijas, vajadzēt vismaz 64 Mb RAM un Pentium 166Mhz procesoru (vai IBM RS 6000, SUN SPARC Ultra un citi).
            28. attēlā tiek piedāvāta tīkla konstrukcija, kurā strādājot tiek izstrādātas un testētas datu bāzu vadības sistēmas, tai skaitā - “Tirgotāju serviss”, izmantojot tīkla protokolu IPX/SPX ar Novell serveri un TCP/IP ar Oracle serveri. Blakus datora attēlam ir to Oracle programmu apraksts, kas lietotas strādājot ar šo datoru.





















                                    





486DX2  50Mhz
8 Mb RAM
-------------------------
Novell Netware 3.12
IPX/SPX
 

Pentium  90 Mhz
32 Mb RAM
------------------------
SCO UNIX 3.2
TCP/IP
 
 






Designer/2000
Developer/2000
 
Designer/2000
Developer/2000

 
                                   





486 DX2  80 Mhz
16 Mb RAM
---------------------
Windows 95
IPX/SPX    TCP/IP
 

486 DX4 100 Mhz
16 Mb RAM
--------------------
Windows 95
IPX/SPX    TCP/IP
 

 






Designer/2000
Developer/2000
 
Designer/2000
 
                                 





486 DX4  100 Mhz
16 Mb RAM
---------------------
Windows 3.1
IPX/SPX    TCP/IP
 

486 DX2  80 Mhz
16 Mb RAM
--------------------
Windows 3.1
IPX/SPX    TCP/IP
 

 





                    
           
Designer/2000
Discoverer/2000
Oracle Runtime
 
Designer/2000
Discoverer/2000
Oracle Runtime
 
                        








486 DX4  100 Mhz
16 Mb RAM
--------------------
Windows 3.1
IPX/SPX    TCP/IP
 

486 DX2 50 Mhz
16 Mb RAM
--------------------
Windows 3.1
IPX/SPX    TCP/IP
 


28. attēls. Izmantotā tīkla konstrukcija strādājot ar Oracle CASE.
 
 





          8. Nobeigums


            Tā kā Oracle CASE tehnoloģija sistēmu izstrādē ir ļoti jauna, tad vēl nav pieejami literatūras materiāli, par šo metodi latviešu valodā. Visa Oracle CASE dokumentācija ir tikai angļu valodā, kas rada problēmas tiem, kas to labi nepārvalda. Bez tam šīs grāmatas raksta nevis tie, kas rada šīs programmas, bet citi. Rakstot šo darbu, es atklāju daudz ko jaunu, kas lasot grāmatas bija palaists garām, jo apgūstamās informācijas apjoms ir ļoti liels, un lai to apgūtu vajadzīgs liels laika periods. Es domāju, ka ikvienam, kas sāk darbu ar Oracle CASE, noderētu šāds Oracle CASE rīku apraksts.
            Oracle CASE dod citu skatu uz sistēmu projektēšanu un izstrādi, jo izmantojot visus šos Oracle CASE rīkus sistēmas projektēšana ir ļoti pārskatāma un vienkārša,  to izstrādi atvieglo arī sistēmu ģeneratori. Ļoti daudz dod tieši Oracle ģeneratori, kas atvieglo darbu, ģenerējot vajadzīgos programmu tekstus visos izstrādes posmos. Bez tam jebkurā  izstrādes posmā veikto var reģenerēt atpakaļ uz iepriekšējo posmu, piemēram, reģenerēt entītes no tabulu definīcijām.
            Bez šaubām DBVS Oracle7 ir ļoti progresīva un tai ir daudz perspektīvu, salīdzinot ar tādām sistēmām kā Fox Pro un Access, kuras nav piemērotas datu bāzēm ar lieliem datu apjomiem. Tā kā tagad sistēmu datu apjomi sasniedz vairākus desmitus un pat simtus megabaitus, tad drīzumā arī pie mums DBVS Oracle7 ieņems vadošo lomu datu bāzu vadības sistēmās.
            Darbā nav aplūkoti daži sistēmas modelēšanas rīki (Datu plūsmu diagrammu veidotājs, funkciju hierahijas diagrammu veidotājs). Tie vēl nav labi izpētīti un bez šiem rīkiem modelējot sistēmu var arī iztikt. Cerams, ka turpmākajā nākotnē būs iespēja sīkāk izpētīt arī šos rīkus un papildināt šo darbu tajā iekļaujot arī šo rīku aprakstu.






















          9. Literatūra


1.    Richard Barker   CASE* METHOD. Tasks and Deliverables                                                                                                                         // ORACLE 1992
2.    Richard Barker   CASE* METHOD. Entity Relationship Modelling                                                                                                              // ORACLE 1995
3.    Oracle Designer/2000   Product Overview                        // ORACLE 1995
4.    Oracle Designer/2000   A Guide to System Design          // ORACLE 1995
5.    Oracle Designer/2000   Tutorial                                         // ORACLE 1995
6.    Oracle Designer/2000   A Guide to Repository Administration
                                                                                    // ORACLE 1995
7.    Oracle Designer/2000   A Guide to Developer/2000 Generation                                                                                                                     // ORACLE 1995
8.    PL/SQL User’s Guide and Reference ver 2.0                   // ORACLE 1992
9.    SQL*Plus User’s Guide and Reference ver 3.0                // ORACLE 1992
10.ORACLE7 Server  SQL Language Quick Reference       // ORACLE 1992
11. ORACLE7 Server SQL Language Reference Manual     // ORACLE 1992
12. ORACLE7 Server  Messages and Codes Manual            // ORACLE 1992
13. Oracle Developer/2000 Forms 4.5 Getting Started Manual                                                                                                                            // ORACLE 1994
14. Oracle Developer/2000 Forms 4.5 Reference Manual vol. 1 / vol. 2                                                                                                               // ORACLE 1994
15. Oracle Developer/2000 Forms 4.5 Developer’s Guide Manual                                                                                                                       // ORACLE 1994
16. Oracle Developer/2000 Forms 4.5 Advanced Techniques Manual                                                                                                                 // ORACLE 1994
17. Oracle Developer/2000 Reports 2.5 Building Reports Manual                                                                                                                       // ORACLE 1995
18. Oracle Developer/2000 Reports 2.5 Reports Reference Manual                                                                                                                     // ORACLE 1995
19. Oracle Developer/2000 Procedure Builder 1.5                 // ORACLE 1994
20. Oracle Developer/2000 Forms 4.5 Runtime Manual        // ORACLE 1995
21. Oracle Developer/2000 Reports 2.5 Runtime Manual      // ORACLE 1995



































Pielikums













































Diagrammas













































































1. diagramma. Entīšu, atribūtu un to savstarpējo saišu diagramma.
















































2. diagramma. Datu tabulu diagramma.




















Programmu teksti



























--------------  Tirgotāju un to filiāļu unikalitātes pārbaude tirgotāju ievades formā
--------------  SRV_MRC.fmb

/*  CHECK_CONSTRAINT_VIO */
FUNCTION CGTE$CHECK_CONSTRAINT_VIO(
   P_SERVER_ERR IN NUMBER        /* Server error message */
  ,P_SERVER_MSG IN VARCHAR2)     /* Server error number  */
RETURN BOOLEAN IS
/* Check and report Primary/Unique Key, Check Constraint and User */
/* Defined Constraint violations                                  */
  constraint_name VARCHAR2(61);  /* Violated constraint */
BEGIN
  /* Check if the error code is one we are interested in */
  IF ( NOT (P_SERVER_ERR IN  (1, 2290) OR
           (P_SERVER_ERR >= 20000 AND P_SERVER_ERR <= 20999) ) )
  THEN
    RETURN( FALSE );
  END IF;

  /* Deal with user defined errors */
  IF (P_SERVER_ERR >= 20000 AND P_SERVER_ERR <= 20999) THEN
    message('Error: '||CGTE$STRIP_FIRST_ERROR(P_SERVER_MSG));
    RETURN( TRUE );
  END IF;

  /* Deal with Primary/Unique Key and Check Constraint violations */
  constraint_name := CGTE$STRIP_CONSTRAINT(P_SERVER_MSG);
  IF (P_SERVER_ERR = 1) THEN
    IF (constraint_name = 'PMRC_FK') THEN
      message('Error: Row exists already with same Merchant.');
    ELSIF (constraint_name = 'MDEP_FK') THEN
      message('Error: Row exists already with same Department.');
    ELSE
      message(P_SERVER_MSG);
    END IF;
  ELSIF (P_SERVER_ERR = 2290) THEN
    message(P_SERVER_MSG);
  END IF;
  RETURN( TRUE );
END;









----------------  Loģiskās tabulas AGR_DEP ON_ERROR trigeris tirgotāju
----------------  līgumu ievades formā SRV_AGR2.fmb
/* BLK_LEVEL_ERROR_TRAP */
/* Trap errors returning from the server and report in a user */
/*   friendly manner                                          */
BEGIN
  DECLARE
    err_code        CONSTANT NUMBER         := ERROR_CODE;
    err_type        CONSTANT VARCHAR2(3)    := ERROR_TYPE;
    server_err               NUMBER         := abs(DBMS_ERROR_CODE);
    server_msg               VARCHAR2(2000) := DBMS_ERROR_TEXT;
    constraint_name          VARCHAR2(61);
  BEGIN
    IF (err_type = 'FRM' AND   
        err_code IN (40506, 40508, 40509, 40510) ) THEN

      /* Remove recursive errors from the top of the stack */
      WHILE (server_err = 604) LOOP
        CGTE$POP_ERROR_STACK(server_err, server_msg);
      END LOOP;

      /* Check and report the generic constraint violations */
      IF ( CGTE$CHECK_CONSTRAINT_VIO(server_err, server_msg) ) THEN
        RAISE FORM_TRIGGER_FAILURE;
      END IF;

      /* Check and report the constraint violations specific to this
         block */
      constraint_name := CGTE$STRIP_CONSTRAINT(server_msg);

      /* FK - Parent key not found */
      IF (server_err = 2291) THEN
        message(server_msg);
        RAISE FORM_TRIGGER_FAILURE;
      END IF;

      /* FK - Child record found */
      IF (server_err = 2292) THEN
        IF (err_code = 40510) THEN
          message(server_msg);
        ELSIF (err_code = 40509) THEN
          message(server_msg);
        END IF;
        RAISE FORM_TRIGGER_FAILURE;
      END IF;
    END IF;

    IF (err_type = 'FRM' AND   
        err_code IN (41105, 41106) ) THEN
      IF (err_code = 41105) THEN
      message('Error: Query of this table must be in context of Agreements');
      RAISE FORM_TRIGGER_FAILURE;
    ELSIF (err_code = 41106) THEN
      message('Error: Insert of this table must be in context of Agreements');
      RAISE FORM_TRIGGER_FAILURE;
      END IF;
    END IF;

    /* If error not found, issue default message */
    message(err_type||'-'||to_char(err_code)||': '||ERROR_TEXT);
    RAISE FORM_TRIGGER_FAILURE;

  END;
END;


































----- This procedure implements the toolbar functionality. The logic reads
----- the pressed button name and then calls the appropriate function. If
----- you want to change the toolbar then make sure the if statement below
----- has one entry for each button.

PROCEDURE TOOLBAR_ACTIONS IS
    button_name varchar2(61);
    button      varchar2(31);
BEGIN
      del_timer('bubble_delay');
      show_window(get_view_property(get_item_property(
            name_in('SYSTEM.CURSOR_ITEM'), item_canvas), window_name));
      button_name := name_in('SYSTEM.TRIGGER_ITEM');
      button      := substr(button_name, instr(button_name, '.')+1);
      if    (button = 'SAVE')                  then do_key('COMMIT_FORM');
      elsif (button = 'PRINT')                then
                                                run_product(REPORTS,'TREA_REP',SYNCHRONOUS,RUNTIME,FILESYSTEM,NULL,NULL);
      elsif (button = 'CLEAR_FORM')             then do_key('CLEAR_FORM');
      elsif (button = 'QUERY_FIND')  then
        if (name_in('SYSTEM.MODE') != 'ENTER-QUERY') then do_key('ENTER_QUERY');
        else do_key('EXECUTE_QUERY');
        end if;
      elsif (button = 'INSERT_RECORD')  then do_key('CREATE_RECORD');
      elsif (button = 'DELETE_RECORD')  then do_key('DELETE_RECORD');
      elsif (button = 'CLEAR_RECORD')   then do_key('CLEAR_RECORD');
      elsif (button = 'LIST')           then do_key('LIST_VALUES');
      elsif (button = 'EDIT')                  then do_key('EDIT_FIELD');
      elsif (button = 'HELP')           then do_key('HELP');
      end if;
END;
















----------  PRE-INSERT triggeris tehnikas uzturēšanas un nomas līgumu ievades
---------- formas TREATIES tabulas blokam.

DECLARE
            gads      VarChar2(4);
            new_gads VarChar2(4);
            men      VarChar2(2);
            new_men  VarChar2(2);

BEGIN
            gads := TO_CHAR(SYSDATE,'YYYY');
            men  := TO_CHAR(SYSDATE,'MM');
           
            new_gads := gads;
            IF men IN('01','02','03') Then
                        new_men := '04';
              elsif men IN('04','05','06') Then
                        new_men := '07';
              elsif men IN('07','08','09') Then
                        new_men := '10';
              elsif men IN('10','11','12') Then
                        new_men := '01';
                        new_gads := TO_CHAR(TO_NUMBER(gads) + 1);
            END IF;

            :TREATIES.must_pay := TO_DATE('01'||new_men||new_gads,'DDMMYYYY');

            -- must_pay > has_paid
            IF :TREATIES.has_paid > :TREATIES.must_pay then
                        Raise FORM_TRIGGER_FAILURE;
            END IF;
END;
















------  Vērtību sarakstu piesaistīto rakstu grupu definīcijas dalībbanku ievades formā
------  SRV_ABNK.fmb.

-- banka

SELECT banks.bank,banks.bank_name
FROM banks
WHERE bank not in
            (SELECT acq_bank
            FROM acq_banks
            WHERE card_type = :crd.card_type)




-- bankas filiāle

SELECT branches.branch,branches.branch_name
FROM branches
WHERE bank=:abnk.acq_bank and
                branch not in
                        (SELECT acq_branch
                         FROM acq_branches
                        WHERE bank = :abnk.acq_bank and
                                       card_type = :crd.card_type)




-- Augstākstāvošā banka

SELECT banks.bank, banks.bank_name
FROM banks,acq_banks
WHERE banks.bank=acq_banks.acq_bank and
               acq_banks.card_type = :crd.card_type and
               acq_banks.member in('0','3') and
               acq_banks.acq_bank <> :abnk.acq_bank












REM  Tabulu, virtuālo tabulu, triggeru, konstraintu definēšana
REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.8.0.0 on 21-MAY-96
REM
REM For application SETPROJ version 1 database SET
REM
SET SCAN OFF

SPOOL tabul.lst

REM TABLE CREATION
start  tabul.tab

REM CONSTRAINT CREATION
start tabul.con

REM VIEW CREATION
start tabul.vw

REM TRIGGER CREATION
start tabul.trg

REM
REM  End of command file
REM
SPOOL OFF




REM   Tabul.tab
REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.8.0.0 on 21-MAY-96
REM
REM For application SETPROJ version 1 database SET
REM
REM TABLE
REM      BANKS
REM      CARDS
REM      CENTRS
REM      MERCHANTS

REM
PROMPT
PROMPT Creating Table BANKS
CREATE TABLE banks(
 bank                            VARCHAR2(2)                NOT NULL,
 bank_name                       VARCHAR2(27)               NOT NULL
)
PCTFREE  10
PCTUSED  80
TABLESPACE APP_D
;

COMMENT ON TABLE banks
    IS 'Pilnais banku saraksts';

COMMENT ON COLUMN banks.bank
    IS 'Bank code';

COMMENT ON COLUMN banks.bank_name
    IS 'Bank name';

REM
PROMPT
PROMPT Creating Table CARDS
CREATE TABLE cards(
 card_type                       VARCHAR2(2)                NOT NULL,
 card_name                       VARCHAR2(27)               NOT NULL,
 algorithm                       VARCHAR2(1)                NOT NULL
            CHECK ( algorithm IN ( '1' , '2' , '3' , '4' )  ),
 proc_ccy                        VARCHAR2(3)                NOT NULL,
 proc_exp                        VARCHAR2(1)                NOT NULL,
 detail                          VARCHAR2(1)                NULL,
 path                            VARCHAR2(64)               NULL,
 card_id                         VARCHAR2(8)                NOT NULL,
 status                          VARCHAR2(1)               DEFAULT 'T'  NOT NULL
            CHECK ( status IN ( 'T' , 'F' )  )
)
PCTFREE  10
PCTUSED  80
TABLESPACE APP_D
STORAGE  (
  INITIAL   4
  NEXT   2
  )
;

COMMENT ON TABLE cards
    IS 'Card type table';

COMMENT ON COLUMN cards.card_type
    IS 'Card type';

COMMENT ON COLUMN cards.card_name
    IS 'Card name';
COMMENT ON COLUMN cards.algorithm
    IS 'Processing algorithm (1 - DOMESTIC, 2 - ECMC, 3 - VISA)';

COMMENT ON COLUMN cards.proc_ccy
    IS 'Processing centre currency';

COMMENT ON COLUMN cards.proc_exp
    IS 'Processing currency exp';

COMMENT ON COLUMN cards.detail
    IS 'Detail (F - no,T - yes)';

COMMENT ON COLUMN cards.path
    IS 'Interface module file exchange directory';

COMMENT ON COLUMN cards.card_id
    IS 'Card type identification (GLOBUS, EC/MC, VISA)';

COMMENT ON COLUMN cards.status
    IS 'Status';

REM
PROMPT
PROMPT Creating Table CENTRS
CREATE TABLE centrs(
 proc_centre                     VARCHAR2(2)                NOT NULL,
 name                            VARCHAR2(27)               NOT NULL,
 path                            VARCHAR2(64)               NULL,
 mark                            VARCHAR2(1)               DEFAULT 'F'  NULL,
 crypt_flag                      CHAR(1)                    NOT NULL
)
TABLESPACE APP_D
STORAGE  (
  INITIAL   4
  NEXT   2
  )
;

COMMENT ON TABLE centrs
    IS 'Apstrādes centru tabula';

COMMENT ON COLUMN centrs.proc_centre
    IS 'Processing centre code';

COMMENT ON COLUMN centrs.name
    IS 'Procesing centre name';

COMMENT ON COLUMN centrs.path
    IS 'Processing centre file exchange directory';
COMMENT ON COLUMN centrs.mark
    IS 'Own processing centre mark (T)';

REM
PROMPT
PROMPT Creating Table MERCHANTS
CREATE TABLE merchants(
 merchant                        VARCHAR2(15)               NOT NULL,
 parent                          VARCHAR2(15)               NOT NULL,
 abrv_name                       VARCHAR2(27)               NOT NULL,
 fax                             VARCHAR2(11)               NULL,
 full_name                       VARCHAR2(78)               NULL,
 cntry                           VARCHAR2(3)                NOT NULL,
 city                            VARCHAR2(15)               NOT NULL,
 reg_nr                          VARCHAR2(11)               NULL,
 street                          VARCHAR2(30)               NULL,
 post_ind                        VARCHAR2(6)                NULL,
 phone                           VARCHAR2(11)               NULL,
 cont_person                     VARCHAR2(30)               NULL,
 mcc                             VARCHAR2(4)                NULL
)
PCTFREE  10
PCTUSED  80
TABLESPACE APP_D
;

COMMENT ON TABLE merchants
    IS 'Pilns tirgotāju un filiāļu saraksts';

COMMENT ON COLUMN merchants.merchant
    IS 'Merchant code';

COMMENT ON COLUMN merchants.parent
    IS 'Parent merchant code';

COMMENT ON COLUMN merchants.abrv_name
    IS 'Merchant"s short name';

COMMENT ON COLUMN merchants.fax
    IS 'Fax #';

COMMENT ON COLUMN merchants.full_name
    IS 'Merchant legal name';

COMMENT ON COLUMN merchants.cntry
    IS 'Country code (char.)';

COMMENT ON COLUMN merchants.city
    IS 'Address: city';
COMMENT ON COLUMN merchants.reg_nr
    IS 'Registration number';

COMMENT ON COLUMN merchants.street
    IS 'Address: street';

COMMENT ON COLUMN merchants.post_ind
    IS 'Address:index';

COMMENT ON COLUMN merchants.phone
    IS 'Phone';

COMMENT ON COLUMN merchants.cont_person
    IS 'Contact person';




REM  Tabul.con
REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.8.0.0 on 21-MAY-96
REM
REM For application SETPROJ version 1 database SET
REM
REM CONSTRAINT

PROMPT Adding PRIMARY Constraint To BANKS Table

ALTER TABLE BANKS ADD (
      CONSTRAINT BANK_PK
      PRIMARY KEY (BANK)
USING INDEX
PCTFREE  10
TABLESPACE APP_X
)
/

PROMPT Adding PRIMARY Constraint To CARDS Table

ALTER TABLE CARDS ADD (
      CONSTRAINT CARD_PK
      PRIMARY KEY (CARD_TYPE)
USING INDEX
PCTFREE  10
TABLESPACE APP_X
STORAGE  (
  INITIAL   4
  NEXT   2
  )
)
/

PROMPT Adding PRIMARY Constraint To CENTRS Table

ALTER TABLE CENTRS ADD (
      CONSTRAINT CNTR_PK
      PRIMARY KEY (PROC_CENTRE)
USING INDEX
TABLESPACE APP_X
STORAGE  (
  INITIAL   4
  NEXT   2
  )
)
/

PROMPT Adding PRIMARY Constraint To MERCHANTS Table

ALTER TABLE MERCHANTS ADD (
      CONSTRAINT MERC_PK
      PRIMARY KEY (MERCHANT)
USING INDEX
PCTFREE  10
TABLESPACE APP_X
)
/

PROMPT Adding UNIQUE Constraint To CENTRS Table

ALTER TABLE CENTRS ADD (
      CONSTRAINT UN_MARK
      UNIQUE     (MARK)
USING INDEX
TABLESPACE APP_X
)
/



REM  Tabulas MERCHANTS 2 loģisko tabulu izveidošana
REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.8.0.0 on 21-MAY-96
REM
REM For application SETPROJ version 1 database SET
REM
REM VIEW
REM      MRC_DEP
REM      MRC_PAR

REM
REM  MRC_DEP
REM
REM  Tirgotāja filiāļu saraksts
REM
PROMPT
PROMPT Creating View MRC_DEP
CREATE OR REPLACE VIEW mrc_dep
(
     department
    ,abrv_name
    ,full_name
    ,cntry
    ,city
    ,street
    ,post_ind
    ,cont_person
    ,phone
    ,fax
    ,merchant
    ,mcc
)
AS SELECT
     MRC.MERCHANT                                     
    ,MRC.ABRV_NAME                                    
    ,MRC.FULL_NAME                                    
    ,MRC.CNTRY                                        
    ,MRC.CITY                                          
    ,MRC.STREET                                       
    ,MRC.POST_IND                                     
    ,MRC.CONT_PERSON                                  
    ,MRC.PHONE                                         
    ,MRC.FAX                                          
    ,MRC.PARENT                                       
    ,MRC.MCC                                          
FROM
    merchants  mrc
 WHERE mrc.merchant <> mrc.parent
;

COMMENT ON TABLE mrc_dep
    IS 'Tirgotāja filiāļu saraksts';

REM
REM  MRC_PAR
REM
REM  Līgumslēdzēji tirgotāji
REM
PROMPT
PROMPT Creating View MRC_PAR
CREATE OR REPLACE VIEW mrc_par
(
     merchant
    ,abrv_name
    ,full_name
    ,cntry
    ,city
    ,street
    ,post_ind
    ,cont_person
    ,phone
    ,fax
    ,parent
    ,reg_nr
    ,mcc
)
AS SELECT
     MRC.MERCHANT                                     
    ,MRC.ABRV_NAME                                    
    ,MRC.FULL_NAME                                    
    ,MRC.CNTRY                                         
    ,MRC.CITY                                         
    ,MRC.STREET                                       
    ,MRC.POST_IND                                     
    ,MRC.CONT_PERSON                                  
    ,MRC.PHONE                                        
    ,MRC.FAX                                          
    ,MRC.PARENT                                       
    ,MRC.REG_NR                                       
    ,MRC.MCC                                           
FROM
    merchants  mrc
 WHERE mrc.merchant = mrc.parent
;

COMMENT ON TABLE mrc_par
    IS 'Līgumslēdzēji tirgotāji';
REM  Triggeris tabulai MERCHANTS, BEFORE INSERT
REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.8.0.0 on 21-MAY-96
REM
REM For application SETPROJ version 1 database SET
REM
REM TRIGGER
REM      CHECK_CODE

REM
REM     Retrofitted
REM
PROMPT
PROMPT Creating Trigger CHECK_CODE
CREATE OR REPLACE TRIGGER check_code
BEFORE INSERT
ON MERCHANTS
FOR EACH ROW
DECLARE
char7 CHAR;
BEGIN
   -- MERCHANT
   WHILE LENGTH(:new.merchant)<6 loop
          :new.merchant:=:new.merchant || '0';
   END loop;
   
   IF LENGTH(:new.merchant) = 6 then
             char7:=SIST.LUHN_CODE(:new.merchant);
             :new.merchant:=:new.merchant || char7;
      ELSE
             char7:=SIST.LUHN_CODE(SubStr(:new.merchant,1,6));
             IF char7 != SubStr(:new.merchant,7,1) then
                      :new.merchant:=SubStr(:new.merchant,1,6) || char7;
             END IF;
   END IF;

   -- PARENT
   IF LENGTH(:new.parent)=7 then
                -- Department parent
               char7:=SIST.LUHN_CODE(SubStr(:new.parent,1,6));
               IF char7 != SubStr(:new.parent,7,1) then
                          :new.parent:=SubStr(:new.parent,1,6) || char7;
                     END IF;
        ELSE
               -- Merchant = Parent
               :new.parent:=:new.merchant;
    END IF;
END;  /
FUNCTION LUHN_CODE (str IN CHAR) return CHAR;
summa    INTEGER;
   strings  VARCHAR2(255);
   gar      INTEGER;
   svars    INTEGER;
   cipars   INTEGER;
BEGIN
  summa:=0;
  strings:=str;
  strings:=LTrim(strings);
  strings:=RTrim(strings);
  gar:=LENGTH(strings);
  IF MOD(gar,2)=0 then
       svars:=1;
    ELSE
       svars:=2;
  END IF;
  FOR i IN 1..gar loop
        cipars:=TO_NUMBER(SubStr(strings,i,1));
        cipars:=cipars*svars;
        IF cipars>9 then
           summa:=summa+1;
           summa:=summa+MOD(cipars,10);
          ELSE
           summa:=summa+cipars;
        END IF;
        IF svars=2 then
            svars:=1;
          ELSE
            svars:=2;
        END IF;
 END loop;
 cipars:=10-MOD(summa,10);
 IF cipars=10 then
    cipars:=0;
 END IF;
 Return TO_CHAR(cipars);
END luhn_code;








































Atskaites




























Nav komentāru:

Ierakstīt komentāru