66
Rīgas Tehniskā universitāte Datorzinātnes un Informācijas Tehnoloģiju fakultāte Lietišķo datorsistēmu institūts 2. praktiskais darbs priekšmetā „Lielu datu bāzu tehnoloģija” „Relāciju-objektu datu bāzes informācijas objekti” Izstrādāja: Maija Znotiņa DB III 1. gr St. apl. 041RDB126 1

Rīgas Tehniskā universitāte - Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Embed Size (px)

Citation preview

Page 1: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Rīgas Tehniskā universitāte

Datorzinātnes un Informācijas Tehnoloģiju fakultāte

Lietišķo datorsistēmu institūts

2. praktiskais darbs priekšmetā„Lielu datu bāzu tehnoloģija”

„Relāciju-objektu datu bāzes informācijas objekti”

Izstrādāja: Maija ZnotiņaDB III 1. gr

St. apl. 041RDB126

Rīga2006

1

Page 2: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

IEVADS

Šī praktiskā darba uzdevums ir iepazīties ar relāciju- objektu datu bāzes

informācijas objektiem. Veicot darbu, jāizveido šādas struktūras:

1) Objektu tabula

a. Izveidot;

b. Ievadīt datus

c. Izgūt metadatus

d. Izveidot pamatvaicājumus (visi tabulas dati, ats4evišķu objektu

dati, atsevišķu objekta komponenšu dati)

2) Tabula ar objektu kolonnu

(Tie paši 4 punkti)

3) Tabula ar iekļautu tabulu

(Tie paši 4 punkti)

4) Objekta skata izveidošana

(a, c, d)

5) Objektu saites izveidošana

a. 1:1

b. 1:N

6) Objektu SQL vaicājumi(10)

2

Page 3: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Saturs

IEVADS....................................................................................................................................................2

1 OBJEKTS..............................................................................................................................................5

2. OBJEKTU TABULA...........................................................................................................................6

2.1. OBJEKTU TABULAS SHĒMA.............................................................................................................62.2.OBJEKTA TIPA DEFINĒŠANA.............................................................................................................62.3. OBJEKTU TABULAS IZVEIDOŠANA..................................................................................................72.4. DATU IEVADĪŠANA OBJEKTU TABULĀ............................................................................................82.5. OBJEKTU TABULAS METADATU IZGŪŠANA.....................................................................................92.6. OBJEKTU TABULAS PAMATVAICĀJUMI.........................................................................................10

3. TABULA AR OBJEKTU KOLONNU............................................................................................13

3.1. TABULAS AR OBJEKTU KOLONNU SHĒMA.....................................................................................133.2. TABULAS AR OBJEKTA KOLONNU IZVEIDOŠANA..........................................................................133.3.DATU IEVADE TABULĀ AR OBJEKTU KOLONNU.............................................................................143.4. METADATU IZGŪŠANA..................................................................................................................153.5. PAMATVAICĀJUMI TABULAI AR OBJEKTA KOLONNU....................................................................16

4.TABULA AR IEKĻAUTU TABULU...............................................................................................19

4.1. TABULAS AR IEKĻAUTU TABULU SHĒMA......................................................................................194.2. TABULAS AR IEKĻAUTU TABULU IZVEIDOŠANA...........................................................................194.3. DATU IEVADĪŠANA TABULĀ AR IEKĻAUTU TABULU.....................................................................204.4. METADATU IZVADE TABULAI AR IEKĻAUTU TABULU..................................................................214.5. PAMATVAICĀJUMI TABULAI AR IEKĻAUTU TABULU.....................................................................21

5. OBJEKTA SKATS............................................................................................................................24

5.1. OBJEKTA SKATA VEIDOŠANA........................................................................................................245.2. METADATU IZVADE PAR OBJEKTA SKATU....................................................................................265.3. OBJEKTA SKATA PAMATVAICĀJUMI.............................................................................................26

6.OBJEKTU SAIŠU VEIDOŠANA......................................................................................................28

6.1. OBJEKTU SAITES 1:1 SHĒMA.........................................................................................................286.2. OBJEKTU SAITES 1:1 IZVEIDOŠANA..............................................................................................28

6.1.1.Tipa izveidošana objektam ar atsauci uz citu objektu...........................................................286.2.2. Datu ievade objekta tabulā ar atsauci uz citu objektu.........................................................296.2.3. Saites 1:1 izsaukums............................................................................................................30

6.3. SAITES 1:N VEIDOŠANA................................................................................................................316.3.1 Saites 1:N shēma...................................................................................................................316.3.2. Saites 1:N realizācijai vajadzīgo tipu un tabulu veidošana.................................................326.3.3. Saites 1:N īstenošana...........................................................................................................346.3.4. Saites 1:N izsaukums............................................................................................................36

7. OBJEKTA SQL VAICĀJUMI.........................................................................................................38

7.1. TABULAS SHĒMA..........................................................................................................................387.2. SUBMULTISET OF....................................................................................................................397.3.MEMBER OF...............................................................................................................................407.4. IS A SET......................................................................................................................................407.5. CARDINALITY..........................................................................................................................417.6. MULTISET EXCEPTION...........................................................................................................427.7. MULTISET INTERSECT...........................................................................................................427.8. MULTISET UNION....................................................................................................................437.9. POWERMULTISET....................................................................................................................447.10. POWERMULTYSET_BY_CARDINALITY...........................................................................447.11. CURSOR....................................................................................................................................457.12. CAST.........................................................................................................................................46

SECINĀJUMI........................................................................................................................................48

3

Page 4: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

4

Page 5: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

1 Objekts

Ar jēdzienu „Objekts” tiek apzīmēts gan atsevišķu sastāvdaļu vienotību, gan

arī datu un to apstrādes metožu vienotību- tātad objekts var saturēt gan datus(šos

datus sauc arī par stāvokli, kas ir vērtību kopa, ko tas satur- vērtības attēlo realitātes

īpašības, iekļaujot faktus par saitēm ar citām realitātēm), gan arī metodes, kas

atspoguļo objekta „uzvedību”. Katram objektam ir apraksts- objekta tipa definējums,

kurā tiek noteikts, cik un kādi dati un metodes glabāsies tajā. Objektu, kurš atbilst

kādam noteiktam objekta tipam sauc par objekta instanci jeb eksemplāru. Objektam

ir savs nosaukums un unikāls identifikators.

5

Page 6: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

2. Objektu Tabula

Objektu tabula ir tabula, kura sastāv tikai no vienas kolonnas, kurā tiek glabāti

viena tipa objekti. Lai izveidotu šādu tabulu, vispirms nepieciešams nodefinēt tipu

šim objektam, kura instances tiks glabātas iecerētajā tabulā.

2.1. Objektu tabulas shēmaSavā darbā, lai realizētu Objektu tabulas struktūras izveidi, izvēlējos veidot

objektu „Filma_1”, kurš satur 5 komponentes- F_ID- filmas identifikatoru, F_Nos-

filmas nosaukumu, F_Gads- filmas uzņemšanas gadu, F_Zanrs- filmas žanru, kā arī

komponenti F_Rez, kura ir ar tipu Cilvēks, kas ir objekta tips, kurš paredz glabāt 2

komponentes- cilvēka vārdu- Vards un uzvārdu-Uzvards.

Aprakstīto objektu tabulu uzzīmēju shematiski:

1.Attēls. Objektu tabulas „Filmas” struktūra

Attēlā redzams, ka tabula, kurā tiks glabāts „Filma_1” tipa objekts tiks saukta

„Filmas”.

2.2.Objekta tipa definēšanaLai nodefinētu objektu tipa specifikāciju izmanto izteiksmi CREATE TYPE.

To lieto gadījumos, ja objektam ir tikai dati vai ja ir arī metodes. Ja ir tikai dati, tad

definējums ir līdzīgs tabulas struktūras definējumam.

Lai izveidotu objekta tipu „Cilveks”, rakstīju šādu vaicājumu:

Vaicājums: CREATE TYPE Cilveks AS OBJECT(Vards Varchar2(15),Uzvards Varchar2(15));

6

Page 7: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma mērķis: Tiek izveidots objekta tips, kurš paredz, ka objektā

„Cilveks” tiks glabātas 2 komponentes- cilvēka vārds un uzvārds, katram no tiem

paredzot līdz 15 vienībām garu rakstu zīmju virkni.

Vaicājuma izpildes rezultāts:

2. Attēls. Tipa „Cilveks” veidošana

Kā redzams attēlā tips ar nosaukumu „Cilveks” ticis veiksmīgi izveidots.

Tālāk jāveido tips „Filma_1”, kurš kā vienu no komponentēm saturēs arī tipa

„Cilveks” objektu.

Vaicājums: CREATE TYPE Filma_1 AS OBJECT(F_ID Number,F_Nos Varchar2(70),F_Gads Number(4),F_Zanrs Varchar2(30),F_Rez Cilveks);

Vaicājuma izpildes rezultāts:

3. Attēls. Tipa „Filma_1” izveidošana.

Arī šis tips ticis veiksmīgi izveidots.

2.3. Objektu tabulas izveidošanaObjektu tabulu no jau izveidota objekta tipa iegūt nav sarežģīti, nepieciešama

tikai viena rindiņa:

Vaicājums: Create Table Filmas Of Filma_1;

7

Page 8: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Šeit tiek veidota tabula ar nosaukumu „Filmas”, kurā būs tikai viena kolonna,

kurā glabāsies „Filma_1” tipa objekti.

Vaicājuma izpildes rezultāts:

4. Attēls. Objektu tabulas veidošana.

2.4. Datu ievadīšana Objektu tabulāTāpat kā Relāciju datu bāzu tabulās, datus objektu tabulās iespējams ievadīt

gan pa vienam rakstam, gan arī pa rakstu kopām, ja tiek lietota PL/SQL procedūra.

Lai ievadītu datus Objektu tabulā, jāraksta līdzīgs vaicājums, kā RDB gadījumā:

Vaicājums: INSERT INTO Filmas VALUES(Filma_1(1, 'Kaimiņu meitene',2005, 'drāma', Cilveks('Garry','Brother')))

Lai ievadītu vērtības objektu tabulā lietoju konstruktoru „Filma_1”, kas veido

šī tipa objektu no norādītajiem datiem. Tā kā manis izveidotais objekts satur vienu

komponenti, kas arī savukārt ir objekts, tad bija nepieciešams izmantot vēl vienu

konstruktoru, kurš veido „Cilveks” tipa objektu.

Vaicājuma izpildes rezultāts:

5. Attēls. Datu ievade objektu tabulā.

Kā redzams, datu ievade izveidotajā objektu tabulā notikusi veiksmīgi.

Tā kā tālāk darbā būs nepieciešami vairāki ieraksti, tad pārējos ievadīju

izmantojot PL/SQL procedūru. Ievades vaicājums un tā izpildes rezultāti parādīti 6.

attēlā.

8

Page 9: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

6. Attēls. Datu ievade objektu tabulā izmantojot PL/SQL procedūru

2.5. Objektu tabulas metadatu izgūšanaLai izgūtu metadatus par objektu tabulu, griezos pie skata ALL_SOURCE. No

šī iebūvētā skata izvēlējos attēlot tādus atribūtus kā Name- objekta vārdu, Type- tipu

un Text- objekta tipa definējumu.

Vaicājums: SELECT NAME, TYPE, TEXT FROM ALL_SOURCE WHERE NAME IN ('FILMA_1', 'CILVEKS')

Vaicājuma izpildes rezultāts:

7. Attēls. Objekta tipa definējuma metadati.

Šajā attēlā redzams, manis jau iepriekš aprakstītie objektu tipu definējumi. Kā

redzams, tad ir 2 tipi- „Filma_1” ar 5 atribūtiem un „Cilveks”- ar 2, kā tas arī bija

sagaidāms.

9

Page 10: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

2.6. Objektu tabulas pamatvaicājumiA. Visas tabulas dati

Lai izgūtu no objektu tabulas visus tabulas datus, jārīkojas līdzīgi kā Relāciju

datu bāzes tabulas gadījumā. Ja objekts satur vēl kādu objektu kā kādu no

komponentēm, tad vaicājums kļūst nedaudz sarežģītāks:

Vaicājums: SELECT F.F_ID AS Numurs, F.F_Nos AS Filma, F.F_Gads AS Gads,F.F_Zanrs AS Zanrs, F.F_Rez.Vards AS Vards, F.F_Rez.Uzvards AS UzvardsFROM Filmas F

Lai varētu izgūt iekļautā objekta komponentes atsevišķi, nevis kā vienas

kolonnas datus, nepieciešams izmantot punkta notāciju. Šajā gadījumā tabulai Filmas

izmantoju sinonīmu F, lai piekļūtu kādai iekšējā objekta komponentei, vispirms

jānorāda tabulas vārds, vai tā sinonīms(F), tad komponentes nosaukums, kura satur

iekšējo objektu(F_Rez) un tikai tad pašu iekšējā objekta vajadzīgās komponentes

nosaukumu(Vards). Ja iekšējā objekta sastāvā ir vēl kāds objekts, tad šis ceļš, lai

nokļūtu līdz atsevišķām komponentēm ,protams, kļūst vēl garāks.

Vaicājuma izpildes rezultāts:

8. Attēls. Visu datu izgūšana no objektu tabulas

Kā redzams attēlā, tad veiksmīgi tikuši izgūti visi 7 tabulā „Filmas” ievietotie

ieraksti, turklāt režisora vārds un uzvārds attēloti kā atsevišķas komponentes, nevis kā

10

Page 11: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

viens objekts ar tipu cilvēks, kā tas būtu bijis, ja es būtu izmantojusi nevis punkta

notāciju, bet gan vaicājumā vienkārši ierakstījusi: SELECT F_ID AS Numurs, F_Nos AS Filma, F_Gads AS Gads,F_Zanrs AS Zanrs, F_Rez AS RezisorsFROM Filmas

Arī šādā veidā iegūtā informācija būtu patiesa, bet filmas režisora vārds un

uzvārds būtu attēloti kā viena objekta sastāvdaļas, turklāt būtu vēl arī norādīts objekta

tips: „Cilvēks”. Tas redzams 9. attēlā.

9.Attēls. Datu izgūšana no objektu tabulas.

B. Atsevišķu tabulas datu izgūšana

Lai izgūtu no objektu tabulas nevis visus tabulā ievadītos datus, bet gan

atlasītu tikai noteiktus objektus, nepieciešams norādīt kādu pazīmi, pēc kuras notiks

atlase. Princips tāds pats kā Relāciju datu bāzē- jānorāda kāda komponente vai

vairākas atribūtes un jānorāda arī kādā veidā pēc tām notiks atlase.

Vaicājums: SELECT F.F_ID AS Numurs, F.F_Nos AS Filma, F.F_Gads AS Gads,F.F_Zanrs AS Zanrs, F.F_Rez.Vards AS Vārds,F.F_REZ.Uzvards AS UzvārdsFROM Filmas FWHERE F.F_ID IN('1', '3', '5');

Šajā vaicājumā es realizēju tādu objektu atlasi, kuru F_ID komponentes

vērtības ir 1, 3 vai 5. Vaicājuma rezultātā tiks izvadīti visi dati, kas par šiem

objektiem glabājas tabulā.

11

Page 12: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma izpildes rezultāts:

10. Attēls. Atsevišķu objektu datu atlase no objektu tabulas.

C. Atsevišķu objekta komponenšu dati.

Lai iegūtu atsevišķu objekta komponenšu datus, vaicājums ir līdzīgs kā abi

iepriekš izpildītie, tikai SELECT rindā tiek norādītas nevis visas objekta

komponentes, bet gan tikai tās, kuru datus vēlas izgūt.

Vaicājums: SELECT F.F_ID AS NUMURS, F.F_NOS AS FILMAFROM FILMAS FWHERE F.F_GADS=2005

Šajā gadījumā atlasīju ierakstus, kuri attiecas uz 2005 gadā uzņemtām filmām

un izvadīju par šīm filmām šādu informāciju: filmas identifikācijas numuru F.F_ID,

kuram izvadot tiks piekārtots kolonnas nosaukums „Numurs” un filmas nosaukumu

F.F_Nos, kurš tiks izvadīts zem kolonnas nosaukuma „Filma”.

Vaicājuma izpildes rezultāts:

11. Attēls. Atsevišķu objektu komponenšu datu izvade no objektu tabulas.

12

Page 13: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

3. Tabula ar objektu kolonnu

Tabula ar objektu kolonnu ir tabula, kuras viena vai vairākas kolonnas satur

objektus. Arī lai izveidotu šādu struktūru nepieciešams vispirms nodefinēt tipu

objektam, kurš tiks glabāts kādā no tabulas kolonnām.

3.1. Tabulas ar objektu kolonnu shēmaEs savā darbā izvēlējos kā šāda tipa struktūru izveidot tabulu „Aktieri”, kura

saturētu informāciju par aktieriem- tabulā tiks glabāts aktiera identifikācijas numurs-

Akt_ID, aktiera vārds un uzvārds, kas glabāsies tabulā kā objekta ar tipu „Cilvēks”

komponentes kolonnā ar nosaukumu „Akt”. Vēl tabulā iekļauta informācija par

aktiera dzimumu- „Dzimums”, valsti, kurā dzīvo aktieris- „Valsts”, aktiera

dzimšanas gadu- „Dz_Gads”, un kontekttālruni – „Tel”.

12. Attēls. Tabulas ar objekta kolonnu shēma

3.2. Tabulas ar objekta kolonnu izveidošanaKomanda, kas jālieto, lai izveidotu šo struktūru daudz neatšķiras no parastas

tabulas izveidošanā lietotās komandas, tikai vienam no laukiem kā datu tips jānorāda

jau iepriekš izveidotais objekta tips „Cilveks”.

Vaicājums: CREATE TABLE Aktieri (Akt_ID Number, Akt Cilveks,Dzimums Varchar2(1),Valsts Varchar2(20),Dz_Gads Number(4,0),Tel Varchar(7))

13

Page 14: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Kā redzams, tabula veidota pēc manis jau aprakstītās shēmas, katram laukam

piekārtojot atbilstošu datu tipu.

Vaicājuma izpildes rezultāts:

13. Attēls. Tabulas ar objektu kolonnu izveidošana.

3.3.Datu ievade tabulā ar objektu kolonnuLai ievadītu datus šādā tabulā jālieto INSERT komanda, kuras vienīgā

atšķirība no parastas tabulas datu ievades komandas ir tā, ka kolonnā, kuras tips ir

objekta tips, ievadot datus, jānorāda konstruktors- šajā gadījumā „Cilveks”.

Vaicājums: INSERT INTO AKTIERI VALUES(1, Cilveks('Brad', 'Pitt'), 'v', 'ASV', 1965, '7615230');

Lai ievadītu tabulā vienu rindiņu, izmantoju augšā minēto komandu. Kā

redzams, datu ievade visās kolonnās notiek kā parasti, atšķirīga ir tikai datu ievade

laukā „Akt”, kur tiek izmantots konstruktors „Cilveks” un iekavās aiz tā norādīts,

kādus datus jāievada tā komponentēs „Vards” un „Uzvards”- šajā gadījumā tās ir

simbolu virknes vērtības ‘Brad’ un ‘Pitt’. Lai ievadītu tabulā vairākus ierakstus

uzreiz izmantoju PL/SQL procedūru, kas redzama 14. Attēlā.

Vaicājuma izpildes rezultāts:

14

Page 15: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

14. Attēls. Datu ievadīšana tabulā ar objektu kolonnu.

3.4. Metadatu izgūšana Lai pārliecinātos, par to, kāda ir manis izveidotās tabulas ar objekta kolonnu

uzbūve, jāizgūst metadati par šo tabulu.

Vaicājuma teksts: SELECT NAME, TYPE, TEXT FROM ALL_SOURCE WHERE NAME='CILVEKS';

Tā kā tabulā ar objekta kolonnu kādas no kolonnām datu tips ir objekts, tad

šajā gadījumā vispirms izvadu datus par tipu „cilvēks”, jo šis tips definēts kolonnā

„AKT” glabājamiem datiem. No iebūvētā skata „ALL_SOURCE” tiks izgūts tipa

nosaukums, tips, un definējuma teksts.

Vaicājuma izpildes rezultāts:

15. Attēls. Tipa „Cilveks” metadati

15

Page 16: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Tā kā pārējie tabulas dati tiek glabāti tāpat kā Relāciju datu bāzu tabulās, tad

šo kolonnu datu tipi nav objektu tipi, tikai vienas(manā gadījumā, vispār var būts arī

vairākas objektu kolonnas) datiem ir objekta tips. Lai par to pārliecinātos izgūsim

metadatus par šo tabulu.

Vaicājuma teksts: SELECT Table_Name, Column_Name, Data_Type, Data_LengthFROM ALL_TAB_COLUMNSWHERE Table_Name='AKTIERI'

No iebūvētā skata „ALL_TAB_COLUMNS” tiks izvadīts tabulas vārds,

kolonnas vārds, datu tips un datu garums baitos.

Vaicājuma izpildes rezultāts:

16. Attēls. Tabulas ar objekta kolonnu metadati

Kā jau tas bija paredzams tiek izvadīti dati par 6 kolonnām, interesanti, ka

objekta kolonnas garums baitos ir viens- tātad šajā kolonnā glabājas tikai norāde uz

objektu ar tipu „cilvēks”, kurš atbilst attiecīgajam rakstam.

3.5. Pamatvaicājumi tabulai ar objekta kolonnu Visas tabulas datu izgūšana.

Lai izvadītu visas tabulas datus, jārīkojas līdzīgi, kā izgūstot datus no relāciju

datu bāzes- atšķiras tikai kolonnas „Akt” datu izgūšana, jo šajā kolonnā glabājas

objekta tipa dati. Ja vaicājums tiks uzrakstīts neizmantojot punkta notāciju, tad katra

kolonnā „Akt”ievietotā objekta dati tiks izvadīti kā vienots veselums ar atbilstošu

datu tipu „Cilveks”, bet ir iespējams panākt, lai dati tiktu izvadīti tā pat kā pārējo

kolonnu dati, ja tiek izmantota punkta notācija.

16

Page 17: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma tekts: SELECT A.Akt_ID AS Nr, A.Akt.Vards AS Vārds,A.Akt.Uzvards AS Uzvārds, A.Dzimums,Valsts, A.Dz_Gads AS Gads,A.Tel AS telefonsFROM Aktieri A

Vaicājuma izpildes rezultāts:

17.Attēls. Visi dati no tabulas „Aktieri”

Atsevišķu objektu datu izgūšana.

Lai izgūtu atsevišķu objektu datus, nepieciešams norādīt atlases kritēriju, pēc

kāda tiks atlasīti objekti, pārējais neatšķiras no atsevišķu rakstu izgūšanas relāciju

datu bāzes tabulā.

Vaicājuma teksts: SELECT A.Akt_ID AS Nr, A.Akt.Vards AS Vārds,A.Akt.Uzvards AS UzvārdsFROM Aktieri A Where A.Dzimums='s';

Šajā gadījumā tiks izgūti tie raksti, kuros glabājas informācija par sievietēm

aktrisēm. Lai piekļūtu objekta komponenšu datiem, izmantota punkta notācija. Par

katru no aktrisēm tiks izvadīta šāda informācija: aktrises identifikators „A.Akt_ID”,

vārds „A.Akt.Vards AS Vārds” un uzvārds „A.Akt.Uzvards AS Uzvārds”.

17

Page 18: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma izpildes rezultāts:

18.Attēls. Atsevišķu objektu datu izgūšana

Atsevišķu objektu komponenšu dati.

Lai piekļūtu atsevišķu komponenšu datiem, nepieciešams izmantot punkta

notāciju.

Vaicājuma teksts: SELECT A.Akt_ID AS Nr,A.Akt.Uzvards AS UzvārdsFROM Aktieri A Where A.Dz_Gads>1970;

Ar šī vaicājuma palīdzību tiek atlasīti tie aktieri, kuri dzimuši pēc 1970. gada,

izvadīts šo aktieru identifikators „A.Akt_ID” un uzvārds, kas ir objekta „cilveks”

komponente.

Vaicājuma izpildes rezultāts:

19. Attēls. Atsevišķu objekta komponenšu datu izgūšana.

18

Page 19: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

4.Tabula ar iekļautu tabulu

Tabulas ar iekļautu tabulu būtība ir tāda, ka tās viena vai vairākas kolonnas

glabā datus, kuru tips ir objektu kolekcija- tas ir nedefinēts skaits viena tips objektu-

kolonnā pretī vienam ierakstam var atrasties vairāk nekā viens šī tipa objekts.

4.1. Tabulas ar iekļautu tabulu shēmaSavā darbā izvēlējos, ka šāda tipa tabulu veidošu datiem par kinoteātri-

kolonnā ar objektu kolekcija tipu tiks glabāti dati par kinoteātra darbiniekiem. Šiem

datiem būs objekta tips cilvēks- tātad par katru darbinieku tiks glabāts tā vārds un

uzvārds. Aprakstītā struktūra redzama 20. attēlā.

20.Attēls. Tabulas ar iekļautu tabulu shēma.

Par kinoteātriem šajā tabulā tiks glabāta šāda informācija: kinoteātra

identifikators „K_ID”, kinoteātra nosaukums- „K_Nos”, kinoteātra adrese „K_Adr”

un darbinieku saraksts „Darbinieki” kā objektu ar tipu „Cilveks” kolekcija.

4.2. Tabulas ar iekļautu tabulu izveidošanaLai izveidotu šādu tabulu vispirms nepieciešams nodefinēt objektu kolekcijā

glabāto objektu tipu. Tā kā tas jau ir izdarīts iepriekš, tad darbības nav jāatkārto.

Nākošais solis- jānodefinē kolekcijas tipu kā tabulu no objekta tipiem.

Vaicājuma teksts: CREATE TYPE Darbinieka_tips AS TABLE OF Cilveks;

Vaicājuma izpildes rezultāts:

21. Attēls. Objektu kolekcijas tipa definēšana.

19

Page 20: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Kad izveidots kolekcijas tips var ķerties klāt pie tabulas struktūras definējuma.

Vaicājuma teksts: CREATE TABLE KINOTEATRIS(K_ID Number,K_Nos Varchar2(25),K_Adr Varchar2(20),Darbinieki Darbinieka_tips)NESTED TABLE Darbinieki STORE AS Ievietota_Tabula;

Ar šo vaicājumu tiek izveidota tabula, kurā ir 4 kolonnas. Par to, kāda

informācija tiks glabāta katrā no šiem laukiem, rakstīts sadaļā, kur runāju par šādas

tabulas shēmu. Vaicājuma beigās jāiekļauj rinda, kurā jānorāda, ar kādu nosaukumu

tiks glabāta tabula, kura saturēs iekļautās tabulas datus- jānorāda, kolonnas

nosaukums, kurā tiek glabāta objektu kolekcija- manā gadījumā tā ir tabula

„Darbinieki”, tad aiz atslēgas vārdiem STORE AS jānorāda jaunās tabulas vārds-

manā gadījumā „Ievietota_Tabula”.

Vaicājuma izpildes rezultāts:

22. Attēls. Tabulas ar iekļautu tabulu izveidošana.

4.3. Datu ievadīšana tabulā ar iekļautu tabulu Ievadot datus tabulā ar iekļautu tabulu jāizmanto kolekcijas un kolekcijas

objektu konstruktori. Lai ievadītu vairākus objektus kolekcijā, kolekcijas konstruktoru

lieto vienreiz, bet objektu konstruktorus tik reizes, cik objektu nepieciešams ievadīt.

Vaicājuma teksts: INSERT INTO Kinoteatris VALUES(1, 'Balle', 'Liepāja',Darbinieka_Tips(Cilveks('Gatis', 'Priede'),Cilveks('Kristaps', 'Grava')));

Ar šī vaicājuma palīdzību tiek ievadīts tabulā ieraksts, kura kolonnā ar

nosaukumu „Darbinieks” tiks ievadīti 2 objekti ( ar tipu „Cilveks”)- 2 darbiniekiem

atbilstoša informācija. Šeit parādīts tikai viena ieraksta ievades vaicājums, lai ievadītu

vairākus uzreiz, jālieto PL/SQL procedūra līdzīgi jau iepriekš pielietotajām.

20

Page 21: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma izpildes rezultāts:

23. Attēls. Datu ievade tabulā ar iekļautu tabulu.

4.4. Metadatu izvade tabulai ar iekļautu tabuluMetadatu izvade šādai struktūrai daudz neatšķiras no metadatu izgūšanas

citām struktūrām, ko apskatīju jau agrāk.

Vaicājuma teksts: SELECT NAME, TYPE, TEXT FROM ALL_SOURCE WHERE (NAME='DARBINIEKA_TIPS')OR(NAME='CILVEKS');

Šajā gadījumā no iebūvētā skata „ALL_SOURCE” tiks izgūti dati par tipa

nosaukumu, tipu un definējuma tekstu. Informācija tiks izvadīta par tipiem ar

nosaukumu „Darbinieka_Tips” un „Cilveks”.

Vaicājuma izpildes rezultāts.

24. Attēls. Metadatu izgūšana par Tabulu ar iekļautu tabulu.

Ar vaicājuma palīdzību izvadītā informācija pierāda, ka Tips „Cilveks” sastāv

no 2 komponentēm, kas atbilst cilvēka vārdam un uzvārdam, un Tips

„Darbinieks_tips” ir tipa „cilveks” objektu kolekcija- kā jau minēju iepriekš.

4.5. Pamatvaicājumi tabulai ar iekļautu tabuluVisu tabulas datu izgūšana.

Lai izgūtu datus no šādas datu glabāšanas struktūras, nepieciešams izmantot

nedaudz sarežģītāku vaicājumu:

21

Page 22: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma teksts: SELECT A.K_ID AS NR, A.K_NOS AS NOSAUKUMS,A.K_ADR AS ADRESE, C.Vards AS VĀRDS, C.UZVARDS AS UZVĀRDSFROM KINOTEATRIS A, TABLE(A.Darbinieki) C;

Ar šī vaicājuma palīdzību no tabulas „Kinoteatris” tiks izvadīti dati par katra

kinoteātra identifikatoru, nosaukumu, adresi un darbiniekiem, kuri šajā kinoteātrī

strādā, turklāt Darbinieki tiks izvadīti nevis kā objekti, bet gan ar punkta notācijas

palīdzību panākts, ka darbinieka vārds un uzvārds tiks izvadīti atsevišķās kolonnās.

Tas panākts atsevišķi griežoties pie iekļautās tabulas FROM rindā un piešķirot tai

atsevišķu sinonīmu, kaut arī pēc būtības tā ir tabulas „Kinoteatris” daļa.

Vaicājuma izpildes rezultāts:

25. Attēls. Visi dati no tabulas ar iekļautu tabulu - „Kinoteatris”.

Atsevišķu objektu datu atlasīšana notiek pēc līdzīga principa, tikai šajā

gadījumā jānorāda, pēc kādiem kritērijiem tiks atlasīts, kuru objektu datus izvadīt un

kuru nē.

22

Page 23: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

26. Attēls. Datu izgūšana par daļu objektu no tabulas ar iekļautu tabulu.

Ar šo vaicājumu no tabulas „Kinoteātris” tiek izvadīta tikai tā informācija,

kura atbilst darbiniekiem ar uzvārdiem Priede, Briedis, Egle, Līce.

Atsevišķu objekta komponenšu datu izgūšana.

Lai izgūtu tikai atsevišķu komponenšu datus, jāvēršas pie iekļautās tabulas un

ar punkta notāciju jānorāda, kurus datus nepieciešams atlasīt un par kuriem objektiem.

Vaicājuma teksts: SELECT C.UZVARDS AS UZVĀRDSFROM KINOTEATRIS A, TABLE(A.Darbinieki) CWHERE A.K_Nos='Balle'

Ar šī vaicājuma palīdzību tiek atlasīti kinoteātrī „Balle” strādājošo darbinieku

uzvārdi.

Vaicājuma izpildes rezultāts:

27. Attēls. Atsevišķu objekta komponenšu datu izgūšana no tabulas ar

iekļautu tabulu.

23

Page 24: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

5. Objekta skats

DBVS Oracle ir iespēja veidot objektu abstrakciju uz relāciju datiem

izmantojot objektu skatus (object views).Objekta skats ir virtuāla struktūra, kas pati

datus nesatur, bet tas ir veids ērtai piekļuvei datiem. Objektu skatam ir sekojošas

īpašības, līdzīgas objektu tabulai:

1)Objektu skats satur objektus rindas; kolonnas sakrīt ar objekta tipa augstāka

līmeņa atribūtiem.

2)Katram objektam ir ar to saistīts identifikators. Identifikators netiek ģenerēts

ar sistēmu, bet tiek specificēts ar lietotāju. Parasti, kā identifikatoru izmanto pamat

tabulas primāro atslēgu. Tas tiek specificēts izmantojot WITH OBJECT OID, kad

veido skatu.

3)Objektu skati ir atjaunojami. Skatus , kas ir neatjaunojami pēc mantošanas,

atjauno INSTEAD-OF trigeri. Kad objekta skats ir atjaunots (vai iekļauts, vai

nodzēsts no tabulas), labāk nekā pilnībā modificēt jebkuru pamat tabulu, sistēma

vienkārši izpilda INSTEAD-OF trigeru specificētu šim skatam. Lietotājs var

iekapsulēt (encapsulate) vajadzīgu atjaunošanas semantiku trigera ķermenī.

5.1. Objekta skata veidošanaLai izveidotu objekta skatu vispirms jānodefinē objekta skata tipu. Skata tips

tiek definēts kā objekts ar attiecīgām komponentēm. Savā darbā veidoju objekta skatu

tabulai „Filmas”. Skatā, atšķirībā no tabulas dati par režisoru tiks glabāti nevis kā

objekts, bet gan kā atsevišķas kolonnas.

Vaicājuma teksts: CREATE TYPE F_Skata_tips AS OBJECT(NR Number,Filma Varchar2(70),Gads Number,Zanrs Varchar2(30),Vards Varchar2(15),Uzvards Varchar2(15))

Lauku datu tipi paliek tie paši, kas tabulā „Filmas”, mainās tikai tas, kā tiks

atspoguļotas objekta „Cilveks” komponentes.

Vaicājuma izpildes rezultāts:

24

Page 25: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

28. Attēls. Objekta skata tipa definēšana.

Kad izveidots objekta skata tips, var ķerties klāt pie paša skata veidošanas.

Veidojot objekta skatu jānorāda objekta skata nosaukums, datu tips, kā arī ar

SELECT vaicājumu jānorāda dati, kuri tiks atspoguļoti objekta skatā, atbilstošā secībā

atlasot tos no tabulas vai tabulām, uz kuras(-ām) skats veidots.

Vaicājuma teksts:CREATE VIEW Filmas_skats OF F_Skata_Tips WITH OBJECT OID DEFAULT AS SELECT F.F_ID AS NR, F.F_NOS AS FILMA, F.F_GADS AS GADS, F.F_ZANRS AS ZANRS, F.F_REZ.Vards AS VĀRDS, F.F_REZ.Uzvards AS UZVARDS FROM Filmas F;

Vēršanās pie tabulas laukiem un objektu komponentēm notiek kā parasti

darbojoties ar objektu relāciju datu bāzu struktūrām.

Vaicājuma izpildes rezultāts:

29.Attēls. Objektu skata veidošana

Šādu objekta skatu lietot dažādai datu atlasei ir ērtāk, nekā lietot tabulu

„Filmas” uz kuras tas bāzēts, jo tā komponentes ir ar vienkāršiem datu tipiem, nevis

objekta tipa.

25

Page 26: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

5.2. Metadatu izvade par objekta skatuLai izvadītu metadatus par objekta skatu iespējams griezties pie ORACLE

iebūvētā skata „ALL_VIEWS”.

Vaicājuma teksts: SELECT VIEW_NAME, TEXT, VIEW_TYPEFROM ALL_VIEWSWHERE VIEW_NAME='FILMAS_SKATS';

Šajā vaicājumā pieprasīts izvadīt informāciju par objekta skata nosaukumu,

definējuma tekstu(vaicājums ar kuru tiek norādīti skatā atspoguļojamie dati) un skata

tipu. Kā jau tika sagaidīts skata tips ir manis iepriekš izveidotais tips F_Skata_tips.

Vaicājuma izpildes rezultāts:

30. Attēls. Objekta skata metadatu izvade.

5.3. Objekta skata pamatvaicājumiTāpat kā tabulai(-ām), uz kuras(-ām) balstīts skats, arī skatam iespējams

veidot datu atlases vaicājumus. Tikai šajā gadījumā vēršanās pie laukiem ir

vienkāršāka, jo nav jāzina, no kādas tabulas tie nāk, kā arī manā gadījumā tabulā

„Filmas” tika glabāta objekta tipa kolonnas vērtība, taču tagad katra šī objekta

komponente tiks atspoguļota atsevišķā skata kolonnā, kas krietni vien atvieglo

griešanos pie šiem datiem.

Vaicājuma teksts:

SELECT NR, Filma, Gads, Zanrs , Vards,Uzvards

FROM Filmas_Skats

Ar šo vaicājumu tiks atlasīti visi objekta skata „Filmas_Skats” skati.

Vaicājuma izpildes rezultāts:

26

Page 27: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

31. Attēls. Visu datu izvade no objekta skata „Filmas_Skats”.

Tā kā manā gadījumā skatā tiek atspoguļoti tikai vienkāršu tipu nevis objekta

tipu dati, tad vēršanās pie tiem notiek gluži tāpat kā relāciju datu bāzes gadījumā.

Vaicājuma teksts: SELECT NR, Filma, Gads, Zanrs , Vards,UzvardsFROM Filmas_SkatsWHERE Filma IN('Alberts', 'Celle')

Tā kā objektu dati tiek atspoguļoti sadalīti pa komponentēm kā atsevišķu

kolonnu dati, tad, lai atlasītu dažu objektu visus datus, jānorāda atlases kritērijs un

visas tās kolonnas, kurās skatā tiek atspoguļotas objekta komponentes.

Vaicājuma izpildes rezultāts:

32. Attēls. Dažu objektu visu datu atlase no objekta skata.

27

Page 28: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

6.Objektu saišu veidošana

Saites starp objektiem tiek veidotas, izmantojot objektu atsauces- kāda no

viena objekta komponentēm tiek nodefinēta kā atsauce (REF) uz cita tipa objektu.

Būtībā šajā laukā tiek glabāts tā objekta identifikators, uz kuru atsaucas konkrētais

objekts. Objekta atsauce (REF) ir loģiskais rādītājs uz rindas objektu, tas ir ORACLE

iebūvēts datu tips, kas nodrošina sasaisti starp objektiem. Lai sekotu šiem rādītājiem,

var izmantot punkta notāciju.

6.1. Objektu saites 1:1 shēmaSavā darbā šāda tipa saiti izlēmu veidot starp jau esošo tabulu „Filmas” un

jaunveidojamu tabulu „Ien_izd”, kas atspoguļo kopējos konkrētu filmu ienākumus un

izdevumus- katrai no filmām tabulā „Filmas” var būt tikai viens atbilstošs ieraksts

tabulā „Ien_Izd”. Saite starp šiem objektiem tiks nodrošināta ar lauka Fil palīdzību

tabulā „Ien_Izd”, kurā tiks glabāta REF tipa komponente.

33. Attēls. Saites 1:1 shēma.

6.2. Objektu saites 1:1 izveidošanaLai izveidotu saiti 1:1, kāda tā uzzīmēta shēmā, vispirms nepieciešams

izveidot tabulu „Ien_Izd”, savukārt, lai izveidotu to ir nepieciešams atbilstošais

objekta tips „Ien_Izd_Tips”.

6.1.1.Tipa izveidošana objektam ar atsauci uz citu objektu

Vaicājuma teksts: CREATE TYPE Ien_Izd_Tips AS OBJECT(B_ID NUmber,Izd Number(8,2),Ien Number(8,2),Fil REF Filma_1);

28

Page 29: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Kā jau minēju, tips „Ien_Izd_Tips” sastāvš no 4 komponentēm- skaitliska

tipa komponentēm „B_ID”- ieraksta numurs, „Izd”- izdevumu summa, „Ien”-

ienākumu summa, un vienas komponentes (Fil) ar tipu REF, kas veido saiti ar

Filma_1 tipa objektu.

Vaicājuma izpildes rezultāts:

34. Attēls. Tipa veidošana objektam ar atsauci uz citu objektu.

No šī tipa tālāk jāizveido tabulu, kurā tad arī tiks glabāti šāda tipa objekti, šeit

jānorāda, kādās robežās atradīsies atsauces komponentes vērtības- šajā gadījumā tās

būs atbilstošas tabulas „Filmas” objektu identifikatoru vērtībām.

35. Attēls. Tabulas „Ien_Izd” veidošana.

6.2.2. Datu ievade objekta tabulā ar atsauci uz citu objektu

Ir 2 varianti, kā šo datu ievadīšanu var veikt:

1) izgūt no tabulas Filmas objektu identifikatorus un tad, kopā ar citām objekta

komponenšu vērtībām ievadīt tabulā „Ien_Izd”;

2) ievadīt ierakstus tabulā „Ien_Izd” atstājot pēdējās komponentes vietu

tukšu(ievadot, jānorāda vērtība NULL) un pēc tam, izgūstot objektu

identifikatoru vērtības no tabulas „Filmas” un ievietojot tās tabulā „Ien_Izd”.

Es šoreiz izvēlējos otro variantu.

Vaicājuma teksts: INSERT INTO IEN_IZD VALUES(1, 3209.00, 20080.00, NULL);

Tā kā pārējie 2 šajā tabulā ievietotie raksti ir līdzīgi, tad to ievadīšanas

vaicājumus nerādīšu.

Nākamajā solī jāiegūst tabulas „Filmas” objektu identifikatoru vērtības un

jāieraksta tās tabulas „Ien_Izd” laukā „Fil”.

29

Page 30: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma teksts: DECLAREatsauce REF FILMA_1;BEGINSELECT REF(F) INTO atsauceFROM FILMAS FWHERE F.F_ID = 1;UPDATE IEN_IZD ISET I.Fil = atsauceWHERE I.B_ID =1;END;

Ar šī vaicājuma palīdzību tikusi izveidota saite starp tabulas „Filmas” objektu

ar „F_ID” lauka vērtību 1 un tabulas „Ien_Izd” objekts ar „B_ID” lauka vērtību 1.

Vaicājuma izpildes rezultāts:

36. Attēls. Saites 1:1 starp objektiem veidošana.

Tā kā saites veidošana starp pērējiem abu tabulu objektiem ir līdzīga, tad to

neatspoguļošu.

6.2.3. Saites 1:1 izsaukums

Lai pārbaudītu saites 1:1 darbību, izsauksim to ar komandas DEREF

palīdzību- DEREF ir komanda, kas atgriež piesaistīto objektu.

Vaicājuma teksts: SELECT I.B_ID AS NR, I.Izd AS Izdevumi,I.Ien AS Ienemumi, DEREF(I.Fil)FROM Ien_Izd I

30

Page 31: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Ar šī vaicājuma palīdzību tiek atlasīti: izdevuma / ienākuma ieraksta numurs,

Ienākumu un izdevumu summa un attiecīgais ieraksts tabulā „Filmas”, uz kuru šis

ieņēmumu / izdevumu ieraksts attiecas.

Vaicājuma izpildes rezultāts:

37. Attēls. Saites 1:1 izsaukums.

6.3. Saites 1:N veidošanaSaites 1:N Struktūra ir daudz sarežģītāka nekā 1:1, jo šeit jāizmanto

palīgtabula, lai nodrošinātu objektu saites.

6.3.1 Saites 1:N shēma

38.Attēls. Saites 1:N realizācijas shēma

31

Page 32: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Šajā attēlā objekti, to nosaukumi, objektu komponentes un nosaukumi,

tabulas, kurās glabājas objekti un saites starp objektiem, kas attēlotas ar „biezu”

melnu bultu.

Kā redzams, tad lai realizētu šo saiti, izvēlējos izveidot tabulu Seansi, kurā tiks

glabāta informācija par filmu demonstrēšanas seansiem. Katrā seansā tiek piedāvāta

iespēja noskatīties vairākas filmas, jo tās tiek rādītas vairākās kinoteātra zālēs

vienlaicīgi, tāpēc katram seansam no tabulas „Seansi” var atbilst un atbilst vairāki

objekti no tabulas „Filmas”.

6.3.2. Saites 1:N realizācijai vajadzīgo tipu un tabulu veidošana

Tā kā tabula „Filmas” jau ir izveidota, tad to atkārtoti no jauna nav jādefinē.

Nākamais solis ir saites palīgtabulai „Filmu_Seansi” vajadzīgo tipu definēšana.

Sākumā tiek nodefinēts tips ar nosaukumu „saite_tips”, kas satur 2

komponentes- atsauci uz objektiem ar tipi „Filma_1” un saites identifikatoru. CREATE TYPE Saite_tips AS OBJECT(S_ID NUMBER,S_Filma REF Filma_1)

39. Attēls. Tipa „Satie_Tips” definēšana.

Tālāk jādefinē tips „Saite_Tab_Tips”, kurš ir objektu „Saite_Tips” kolekcija,

jo katram seansam varēs atbilst vairākas filmas. CREATE TYPE Saite_tab_tips AS TABLE OF Saite_tips

40. Attēls. Tipa „Saite_Tab_Tips”definēšana.

Nākošais solis ir Saites palīgtabulas objekta tipa definējums, šis tips satur

identifikatora komponenti un komponenti ar nosaukumu „Fil_Se”, kas ir objektu

kolekcija ar tipu „Saite_Tab_Tips”. Saite 1:N tiek nodrošināta tādā veidā, ka tabulas

„Seansi” objekti atsaucas uz kādu noteiktu tabulas „Filmu_Seansi” objektu, kas

32

Page 33: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

savukārt satur kolekciju ar tādiem objektiem, kur katrs no tiem atsaucas uz kādu no

tabulas „Filmas” objektiem.

Vaicājuma teksts: CREATE TYPE Filmas_seansi_tips AS OBJECT(F_NUM NUMBER,Fil_Se Saite_tab_tips)

Vaicājuma izpildes rezultāts:

41. Attēls. Saites palīgtabulas objekta tipa izveidošana.

Jāizveido tabula ar tikko izveidotā tipa objektiem: CREATE TABLE Filmu_Seansi OF Filmas_seansi_tipsNESTED TABLE Fil_Se STORE AS F_Seansi

Pēc būtības šī ir tabula ar iekļautu tabulu, tāpēc arī vaicājumā, ar kura

palīdzību tabula tiek izveidota, jānorāda, kur iekļautā tabula tiks glabāta.

Tā kā vēl nav nodefinēta arī tabula „Seansi”, tad tas tiks izdarīts tagad: CREATE TYPE Seansa_tips AS OBJECT(S_NUM Number,S_Gads Number(4.0),S_Men Number(2.0),S_Diena Number(2.0),F_Saite REF Filmas_seansi_tips)

Kā redzams, tad šai tabulai būs 5 komponentes, pirmā no tiem- identifikators,

tad trīs komponentes, kas attiecas uz seansa demonstrēšanas datumu- attiecīgi gads,

mēnesis un diena un pēdējā komponente „F_Saite”, kas nodrošina sasaisti ar saites

palīgtabulu „Filmu_Seansi”.

33

Page 34: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

42. Attēls tipa „Seansa_Tips”izveidošana

Tiek izveidota tabula objektiem ar tipu „Seansa_Tips” un nosaukta „Seansi”. CREATE TABLE SEANSI OF Seansa_tips

6.3.3. Saites 1:N īstenošana

Lai sasaistītu tabulu „Filmas” ar saites palīgtabulu, uzrakstīju šādu vaicājumu: DECLAREf1 REF Filma_1; f2 REF Filma_1; f3 REF Filma_1;f4 REF Filma_1; f5 REF Filma_1;BEGIN SELECT REF(A) INTO f1 FROM Filmas A WHERE A.F_ID=1;SELECT REF(A) INTO f2 FROM Filmas A WHERE A.F_ID=2;SELECT REF(A) INTO f3 FROM Filmas A WHERE A.F_ID=3;SELECT REF(A) INTO f4 FROM Filmas A WHERE A.F_ID=4;SELECT REF(A) INTO f5 FROM Filmas A WHERE A.F_ID=5;INSERT INTO Filmu_seansi VALUES(Filmas_Seansi_tips(1, Saite_tab_tips(Saite_tips(1, f1),Saite_tips(2, f5), Saite_tips(3, f2))));INSERT INTO Filmu_seansi VALUES(Filmas_Seansi_tips(2, Saite_tab_tips(Saite_tips(4, f4),Saite_tips(5, f3))));END;

Ar šī vaicājuma palīdzību tiek izveidoti 2 objekta tipa „Filmas_Seansi_tips”

tipa objekti, katram no tiem piesaistot dažus objekta tipa „Filma_1” objektus. Savā

darbā izveidoju vēl trīs objektus tabulā „Filmu_Seansi”, bet šo vaicājumu neievietošu

šeit tekstā, jo tas ir ļoti līdzīgs jau parādītajam.

Vaicājuma izpildes rezultāts:

34

Page 35: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

43. Attēls. Saites veidošana starp tabulu „Filmas” un saites palīgtabulu.

Nākamais solis ir vērtību ievietošana tabulā „Seansi”. Tam izmantoju šādu

vaicājumu: BEGININSERT INTO SEANSI VALUES (Seansa_tips(1,2005,12,3,NULL));INSERT INTO SEANSI VALUES (Seansa_tips(2,2005,12,19,NULL));INSERT INTO SEANSI VALUES (Seansa_tips(3,2006,1,12,NULL));INSERT INTO SEANSI VALUES (Seansa_tips(4,2006,3,1,NULL));INSERT INTO SEANSI VALUES (Seansa_tips(5,2006,7,23,NULL));END;

Katram Seansam tabulā „Seansi” atbilst viens no saites palīgtabulas

objektiem, tālāk jānodrošina šī sasaiste, lai varētu līdz galam pabeigt saites 1:N

izveidi.

Vaicājuma teksts: DECLAREv1 REF Filmas_Seansi_tips;v2 REF Filmas_Seansi_tips;v3 REF Filmas_Seansi_tips;v4 REF Filmas_Seansi_tips;v5 REF Filmas_Seansi_tips;BEGINSELECT REF(A) INTO V1 FROM Filmu_seansi A where A.F_Num=1;SELECT REF(A) INTO V2 FROM Filmu_seansi A where A.F_Num=2;SELECT REF(A) INTO V3 FROM Filmu_seansi A where A.F_Num=3;

35

Page 36: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

SELECT REF(A) INTO V3 FROM Filmu_seansi A where A.F_Num=4; SELECT REF(A) INTO V3 FROM Filmu_seansi A where A.F_Num=5; UPDATE SEANSI S SET S.F_Saite=v1 WHERE S.S_Num=1;UPDATE SEANSI S SET S.F_Saite=v2 WHERE S.S_Num=2;UPDATE SEANSI S SET S.F_Saite=v3 WHERE S.S_Num=3;UPDATE SEANSI S SET S.F_Saite=v4 WHERE S.S_Num=4;UPDATE SEANSI S SET S.F_Saite=v5 WHERE S.S_Num=5;END;

Vaicājuma izpildes gaitā tiek nodefinēti REF tipa mainīgie v1, v2, v3, v4 un

v5, kuros tiek ielasītas saites palīgtabulas objektu identifikatoru vērtības, kuras pēc

tam tiek ierakstītas objektu ar tipu „Seansa_tips” komponentē ar nosaukumu

„F_Saite”.

Vaicājuma izpildes rezultāts:

44. Attēls. Saites nodrošināšana starp tabulu „Seansi” un saites 1:N

palīgtabulu.

6.3.4. Saites 1:N izsaukums

Lai pārbaudītu kā darbojas saite 1:N izveidoju šādu vaicājumu: SELECT C.S_Num, C.Filma.F_ID AS F_ID,C.Filma.F_Nos AS Filma,C.S_ID, C.S_Gads AS Gads,

36

Page 37: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

C.S_Men AS Menesis, C.S_Diena AS DienaFROM (SELECT DEREF(F.S_Filma)AS Filma, DEREF(A.F_Saite) AS Saite, A.S_Num,A.S_Gads, A.S_Men, A.S_Diena, F.S_ID AS S_ID,F.S_Filma AS S_FilmaFROM Filmu_Seansi S, TABLE(S.Fil_Se) F, Seansi A, Filmas BWHERE (A.F_Saite=REF(S))AND (F.S_Filma=REF(B))) CWHERE C.S_Num IN (1,2)

Ar šī vaicājuma palīdzību sākumā tiek izveidota izlase C, kas satur seansa

objekta visas komponentes, tam atbilstošā saites palīgtabulas objekta komponentes un

visu tam atbilstošo objektu „Filma_1” visas komponentes. Lai nodrošinātu, ka

netiks izvadīts Dekarta reizinājums, izmantoju šādu izteiksmi:

(A.F_Saite=REF(S))AND (F.S_Filma=REF(B)). Tabulas „Seansi” objekta

komponentē „F_Saite” glabājas saites palīgtabulas atbilstošā objekta objekta

identifikators, tātad šīs komponentes vērtībai jāsakrīt ar iegūto saites tabulas objekta

identifikatoru- tikai tad tiks atlasīti un kā viens raksts izvadīti pareizi viens otram

atbilstoši tabulu „Seansi” un „Filmu_Saites” objekti. Šim nosacījumam, protams,

jāizpildās vienlaicīgi ar nosacījumu, ka saites palīgtabulas atsauces laukā ierakstītajai

objekta identifikatora vērtībai jāsakrīt ar funkcijas REF iegūto „Filma_1” tipa objekta

identifikatoru.

Šī iegūtā izlase, kas ietver tikai atbilstošus objektus, tiek apzīmēta ar sinonīmu

C un tālāk tiek rakstīts vaicājums, lai no šīs izlases izvadītu tikai vajadzīgos datus, jo,

piemēram, saites palīgtabulas objektu komponenšu vērtībām šeit vairs nav nozīmes,

svarīgi ir tikai seansi un tiem atbilstošās filmas.

Vaicājuma izpildes rezultātā tiek atlasīts Seansa numurs(C.S_Num), filmas

identifikators(C.Filma.F_ID), Filmas nosaukums(C.Filma.F_Nos), seansa

demonstrēšanas gads(C.S_Gads), mēnesis(C.S_Men) un diena(C.S_Diena).

Vēl, lai nebūtu tik daudz izvadītas informācijas uz ekrāna, izvēlējos izvadīt

tikai pirmajam un otrajam seansam atbilstošās filmas.

Vaicājuma izpildes rezultāts.

37

Page 38: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

45. Attēls. Saites 1:N darbības pārbaude.

38

Page 39: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

7. Objekta SQL vaicājumi

Lai varētu izmēģināt Objekta SQL vaicājumus, man vispirms bija

nepieciešams izveidot tabulu, kurā būtu 2 iekļautās tabulas.

7.1. Tabulas shēma

46. Attēls. Tabulas ar 2 iekļautām tabulām(„ABiedr”) shēma.

Izveidotā tabula satur informāciju par arodbiedrībām un to biedriem- gan

režisoriem, gan aktieriem. Kā redzams no shēmas, tad šajā tabulā tiks izmantots jau

iepriekš definēts objekta tips „Cilveks”. Tabulā būs 2 iekļautās tabulas, kuras katra

saturēs kolekciju ar „cilvēks” tipa objektiem- viena no šīm kolekcijām atspoguļos

režisorus, kuri ir arodbiedrības biedri, bet otra-aktierus. Vēl bez šīm, objektā „Arodb”

glabāsies arī komponentes ar arodbiedrības identifikatoru un nosaukumu.

Šīs tabulas izveidošana notiek ar šāda vaicājuma palīdzību: CREATE TYPE ARODB AS OBJECT(A_ID Number,A_Nos Varchar2(15),Rez Cilveki,Akt Cilveki)

Lai varētu ar šo struktūru darboties, tajā jāievada datus. Datu ievadei

izmantots šāds vaicājums: BEGININSERT INTO ABIEDR VALUES(Arodb(1, 'Golden lion', Cilveki(Cilveks('Garry','Brother'), Cilveks('Sam', 'Wrigley'), Cilveks('Ron', 'Veeslay')), Cilveki(Cilveks('Brad', 'Pitt'), Cilveks('Angeline', 'Jollie'), Cilveks('Tifanie', 'Tiesen'), Cilveks('Torie', 'Spelling'))));

39

Page 40: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

INSERT INTO ABIEDR VALUES(Arodb(2, 'ARA', Cilveki(Cilveks('Kevin','Farline'), Cilveks('Don', 'Garcia')), Cilveki(Cilveks('Jenniffer', 'Aniston'), Cilveks('Haidi', 'Clum'), Cilveks('Kevin', 'Farline'), Cilveks('Don', 'Garcia'))));INSERT INTO ABIEDR VALUES(Arodb(3, 'HOLAR', Cilveki(Cilveks('Hank','Morris'), Cilveks('Arthur', 'King'), Cilveks('Fredie', 'Cappoti')), Cilveki(Cilveks('Hank', 'Morris'), Cilveks('Katie', 'Cruz'), Cilveks('Penelope', 'Cruz'), Cilveks('Arthur', 'King'),Cilveks('Leonardo','Green'))));INSERT INTO ABIEDR VALUES(Arodb(4, 'ACTMEM', Cilveki(Cilveks('Robbie','Huricane')), Cilveki(Cilveks('Ben', 'Afleck'), Cilveks('James', 'McRay'))));END;

7.2. SUBMULTISET OFŠis nosacījums testē, vai iekļautā tabula ir kādas citas iekļautas tabulas

apakškopa. Šis operators atgriež boolean tipa vērtību ar vērtību „TRUE”, ja pirmā

norādītā iekļautā tabula ir otrās norādītās iekļautās tabulas apakškopa.

Lai pārbaudītu šo operatoru, izmantoju šādu vaicājumu: SELECT A.A_ID, A.A_NosFROM ABiedr AWHERE A.Rez SUBMULTISET OF A.Akt

Vaicājuma izpildes rezultātā tiks atlasīti un izvadīti tikai to arodbiedrību

identifikatori un nosaukumi, kurās visi biedri, kuri ir režisori ir reģistrējušies arī kā

aktieri.

Vaicājuma izpildes rezultāts:

47. Attēls.Operatora SUBMULTISET OF lietojuma piemērs.

40

Page 41: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

7.3.MEMBER OFŠis operators atgriež vērtību „TRUE”, ja norādītais elements ir iekļautās

tabulas sastāvā. Ja nav, vai arī iekļautā tabula ir tukša, tad tiek atgriezta vērtība

„NULL”.

Lai pārbaudītu šī operatora darbību lietoju šādu vaicājumu: SELECT A.A_ID, A.A_NosFROM ABiedr AWHERE (Cilveks('Hank', 'Morris') MEMBER OF Rez) OR(Cilveks('Hank', 'Morris') MEMBER OF Akt)

Ar šī vaicājuma palīdzību tiek atrasts tās arodbiedrības identifikators un

nosaukums, kurā cilvēks ar vārdu un uzvārdu Hank Morriss ir vai nu piereģistrēts kā

aktieris, vai kā režisors.

Vaicājuma izpildes rezultāts:

48. Attēls. Oparetora MEMBER OF lietojuma piemērs.

7.4. IS A SETŠis operators pārbauda, vai norādītā iekļautā tabula sastāv no unikāliem

elementiem.

Lai pārbaudītu šo operatoru, izmantoju šādu vaicājumu: SELECT A.A_ID, A.A_Nos, A.RezFROM ABiedr AWHERE A.Rez IS A SET

Ar šī vaicājuma palīdzību tiek izvadīti arodbiedrības identifikatori, nosaukumi

un režisori, kuri šajās arodbiedrībās ir kā biedri, tām arodbiedrībām, kuru biedri

režisori nav reģistrējušies kādā citā arodbiedrībā kā režisori. Tā kā pieņēmu, ka viens

režisore nevar būt biedrs vairākās arodbiedrībās, tad šajā gadījumā tiks atgriezti visu

arodbiedrību identifikatori, nosaukumi un tajās reģistrēto režisoru vārdi. Šādu

vaicājumu var izmantot, ja režisoram ir atļauts būt tikai vienā arodbiedrībā.

41

Page 42: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma izpildes rezultāts:

49. Attēls. Operatora IS SET OF lietojuma piemērs.

7.5. CARDINALITYCARDINALITY ir funkcija, kura atgriež skaitlisku vērtību, kas atbilst

iekļautās tabulas elementu skaitam.

Lai pārbaudītu šī operatora darbību, izmantoju šādu vaicājumu: SELECT A.A_ID AS Nr, A.A_Nos AS Arodbiedriba,CARDINALITY (A.Rez) AS Rezisori, CARDINALITY(A.Akt) AS AktieriFROM ABiedr A

Ar šī vaicājuma palīdzību tiks izvadīts, cik katrā arodbiedrībā ir biedru

režisoru, bet cik- aktieru.Vaicājuma izpildes rezultāts:

50.Attēls. Funkcijas CARDINALITY lietojuma piemērs

42

Page 43: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

7.6. MULTISET EXCEPTIONŠī operatora argumenti ir 2 iekļautas tabulas. Tas atgriež iekļauto tabulu, kuras

elementi ir pirmajā iekļautajā tabulā, bet nav otrajā.

Lai pārbaudītu šī operatora darbību, izmantoju šādu vaicājumu: SELECT A.A_NOS, A.Rez MULTISET EXCEPT A.AktFROM ABiedr A

Ar šī vaicājuma palīdzību tiek atlasīti tie režisori, kuri ir piereģistrējušies tikai

kā režisori. Vaicājuma izpildes rezultāts:

51. Attēls MULTISECT EXCEPT lietojuma piemērs.

7.7. MULTISET INTERSECT

Šī operatora argumenti ir 2 iekļautas tabulas. Tas atgriež iekļauto tabulu, kuras

elementi ir gan pirmajā iekļautajā tabulā, gan otrajā.

Lai pārbaudītu šī operatora darbību, izmantoju šādu vaicājumu: SELECT A.A_ID, A.A_NOS, A.Akt MULTISET INTERSECT A.RezFROM ABiedr A

Vaicājums atlasa tos arodbiedrības biedrus, kuri ir gan piereģistrējušies kā

aktieri, gan kā režisori.

Vaicājuma izpildes rezultāts:

43

Page 44: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

52. Attēls. MULTISET INTERSECT lietojuma piemērs.

7.8. MULTISET UNIONŠī operatora argumenti ir 2 iekļautas tabulas. Tas atgriež iekļauto tabulu, kuras

elementi ir abu iekļauto tabulu elementi.

Lai pārbaudītu šī operatora darbību, izmantoju šādu vaicājumu:SELECT A.A_ID, A.A_Nos,A.Rez MULTISET UNION A.Akt AS BiedriFROM ABiedr AWHERE A.A_NOS IN('HOLAR','ACTMEM')

Ar šo vaicājumu tiek iegūti visi arodbiedrību „HOLAR” un „ACTMEM”

biedri, nešķirojot, vai tie reģistrējušies kā režisori, vai kā aktieri. Šajā gadījumā, ja

biedrs ir gan aktieris, gan režisors, tad tas tiek izvadīts 2 reizes.

Vaicājuma izpildes rezultāts:

53. Attēls. MULTISET UNION lietojuma piemērs.

44

Page 45: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

7.9. POWERMULTISETŠī funkcija atgriež visas iespējamās apakškopas no dotās kolekcijas.

Lai pārbaudītu šī operatora darbību, izmantoju šādu vaicājumu:SELECT *FROM TABLE (POWERMULTISET(Cilveki(Cilveks('George', 'Noble'), Cilveks('Craig', 'Davis'),Cilveks('Tracey', 'Monk'))))

Vaicājuma izpildes rezultāts:

54. Attēls. POWERMULTISET lietojuma piemērs.

7.10. POWERMULTYSET_BY_CARDINALITYŠī funkcija atgriež nevis visas iespējamās apakškopas no dotās kolekcijas, bet

gan tikai tās, kuru elementu skaits sakrīt ar uzdoto kardinalitāti.

Lai pārbaudītu šī operatora darbību, izmantoju šādu vaicājumu:SELECT *FROM TABLE (POWERMULTISET_BY_CARDINALITY(Cilveki(Cilveks('George', 'Noble'), Cilveks('Craig', 'Davis'),Cilveks('Tracey', 'Monk'), Cilveks('Diane', 'Lane')),3))

Tiek veidotas visas iespējamās kombinācijas pa 3 no 4 uzdotiem „Cilveks”tipa

elementiem.

Vaicājuma izpildes rezultāts:

45

Page 46: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

55. Attēls. POWERMULTISET_BY_CARDINALITY lietojuma piemērs.

7.11. CURSORFunkcija CURSOR atgriež iekļautu kursoru, kurš var tikt kā REF CURSOR

tipa mainīgais iekļauts funkcijas argumentos.

Lai pārbaudītu šī operatora darbību, izmantoju šādu vaicājumu:SELECT A.A_ID, CURSOR(SELECT * FROM TABLE(A.Rez)) AS KURSORS_1,CURSOR(SELECT * FROM TABLE(A.Akt)) AS KURSORS_2FROM ABiedr A;

Vaicājuma izpildes rezultāta fragments:

56. Attēls. CURSOR funkcijas lietojuma piemērs.

46

Page 47: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

7.12. CASTŠī funkcija konvertē datus ar iebūvēto datu tipu vai kolekcijas tipa vērtībām,

citos iebūvētos datu tipos vai kolekcijas tipa vērtībās. No

Uz

BINARY_FLOAT,

BINARY_DOUBL

E

CHAR,

VARCHAR

2

NUMBE

R

DATE,

TIMESTAM

P,

INTERVAL

RA

W

ROWID,

UROWI

D

NCHAR,

NVARCHAR

2

BINARY_FLOAT,

BINARY_DOUBL

E

X X X - - - X

CHAR,

VARCHAR2X X X X X X -

NUMBER X X X - - - X

DATE,

TIMESTAMP,

INTERVAL

- X - X - - -

RAW - X - - X - -

ROWID,

UROWID- X - - - X -

NCHAR,

NVARCHAR2X - X X X X X

57. Attēls. Iebūvēto tipu pārveidošanas iespējas.

Lai pārbaudītu šī operatora darbību, izlēmu visus arodbiedrību nosaukumus un

to identifikatorus kā arodbiedrības objekta komponentes ierakstīt atsevišķā tabulā. Lai

to izdarītu vispirms jāizveido objekta „A_B” tips. Vaicājuma teksts: CREATE Type A_B AS OBJECT(ID NUMBER,Nos Varchar2(15))

Nākamajā solī no tipa „A_B” objektiem jāizveido kolekcija: CREATE TYPE A_B_TABLE AS TABLE OF A_B

Tagad ir izdarīti visi sagatavošanās darbi, lai varētu veikt tipu pārveidošanu- 2

atsevišķas objekta ABIEDR komponentes kļūst par jaunu objektu ar tipu „A_B”. SELECT CAST(MULTISET(SELECT A.A_ID, A.A_NosFROM ABiedr A) AS A_B_TABLE)FROM DUAL

Tabula DUAL ir iebūvēta ORACLE tabula, kurai ir tikai viena kolonna un

viena rinda un šajā vienā laukā vērtība ir x, kas nosaka, ka CAST rezultāts tiek

atgriezts tikai 1 reizi.

47

Page 48: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Vaicājuma izpildes rezultāts:

58. Attēls. CAST lietojuma piemērs.

48

Page 49: Rīgas Tehniskā universitāte -    Web viewTipa „Satie_Tips” definēšana. Tālāk jādefinē tips

Secinājumi

Šī darba mērķis ir gūt ieskatu Relāciju-Objektu datu bāzu informācijas

objektos un darbībās ar tiem. Tā kā ar šādu- objektorientētu pieeju- datu bāzēs

saskāros pirmo reizi, tad atsevišķos punktos, tādos kā saišu veidošana, tas man likās

grūtāk nekā darboties Relāciju Datu bāzēs.

Visgrūtāk man izrādījās izveidot objektu saiti 1:N. Šij saitei ir visai sarežģīta

loģika, kuru spēju izprast tikai tad, kad biju soli pa solim izskatījusi citu piemēru un

uzzīmējusi shēmu saitei. Ne tikai šajā gadījumā, bet arī citos- piemēram, veidojot

tabulu ar iekļautu tabulu man daudz palīdzēja tieši shēmu zīmēšana, jo ir grūti paturēt

prātā, kā saucas kurš tips, kura kolonna vai tabula un kā tas viss saistās kopā.

Jāpadomā bija arī par iekļauto tabulu veidošanu- kur tieši tiek glabāti dati un kā tiem

piekļūt.

Arī pie saites 1:1 bija jāpiedomā pamatīgāk, kamēr sapratu, kā tieši šī saite

realizējas ar objektu atsauču palīdzību, kā tiek izmantoti operatori REF UN DEREF

un kādas ir to atgrieztās vērtības.

Daudzas datu izgūšanas darbības ir līdzīgas datu izgūšanai no relāciju datu

bāzu tabulām , tāpēc nebija nekāds jaunums un īpašas grūtības nesagādāja, vienīgi

bija jāpielieto punkta notācija vietās, kur jāizgūst atsevišķu objekta komponenšu dati.

Šajā darbā man gadījās arī tādas neuzmanības kļūdas kā nepareiza iebūvētā

tipa lietošana kolonnai (bija vajadzīgs skaitliskas vērtības tips, bet biju piešķīrusi

simbolu virknes tipu), šo kļūdu pamanīju tikai tad, kad biju ķērusies pie datu

ievadīšanas, bet tā kā šī kļūda tika pieļauta tipā, uz kura bāzes izveidoju tabulu, kurai

piesaistīju arī citu objektu, tad kļūdas labošana izvērtās visai sarežģīta.

Vairāk bija jāpiedomā pie Objekta SQL vaicājumiem, jo ar tādiem līdz šim

nebiju saskārusies un, piemēram, ar tipu pārveidotāja funkciju CAST man bija

grūtības izdomāt, tieši kur lai savā datu bāzē to pielietoju.

Ņemot vērā, ka darbā bija jāveido salīdzinoši daudzveidīgas struktūras, tad

datu bāze sanāca tāda kā samocīta, jo reāli, manuprāt, parasti tik mazā datu bāzē tāda

struktūru daudzveidība netiek veidota.

Kopumā man patīk darbošanās ar objektiem, jo man liekas loģiski, ka

informācija par vienu objektu arī tiek glabāta kopā- kā viena objekta komponentes,

grūtāk kļūst tad, kad objekta komponentes vairs nav vienkārši iebūvētu datu tipu

mainīgie, bet gan ar objekta vai objekta kolekcijas tipu.

49