uzdevums - web viewrĪgas tehniskĀ universitĀte. datorzinātnes un informācijas tehnoloģijas...

43
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Informācijas tehnoloģijas institūts 1. praktiskais darbs mācību priekšmetā “Lielu datu bāzu tehnoloģija (Relāciju-objektu DB datu struktūras) Izstrādāja: Kristaps Babrovskis III DB2, 121RDB737

Upload: phunghanh

Post on 06-Feb-2018

233 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

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

Informācijas tehnoloģijas institūts

1. praktiskais darbsmācību priekšmetā

“Lielu datu bāzu tehnoloģija ”

(Relāciju-objektu DB datu struktūras)

Izstrādāja: Kristaps Babrovskis

III DB2, 121RDB737

2014./15. māc. gads

Page 2: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Saturs

1. Uzdevums.................................................................................................3

2. Objektu tabulas veidošana......................................................................4

3. Tabulas ar objektu kolonu izveidošana..................................................8

4. Tabulas ar objektu kolekciju izveidošana............................................11

5. Tabulas ar heterogēniem objektiem izveide.........................................14

6. Objektu skata veidošana........................................................................18

7. Tabula ar objektu atsauci (REF) 1:N...................................................24

8. Funkciju un operatoru izmantošana....................................................29

8.1. Operators SUBMULTISET [OF],................................................................30

8.2. Operators MEMBER [OF]..........................................................................31

8.3. Operators IS A SET.....................................................................................32

8.4. Funkcija CARDINALITY().........................................................................32

8.5. Operators MULTISET EXCEPT.................................................................33

8.6. Operators MULTISET INTERSECT...........................................................33

8.7. Operators MULTISET UNION....................................................................34

8.8. Funkcija POWERMULTISET()...................................................................35

8.9. Funkcija POWERMULTISET_BY_CARDINALITY()..............................35

8.10. Funkcija SET()..........................................................................................36

Secinājumi.......................................................................................................37

Literatūra.........................................................................................................38

2

Page 3: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

1. Uzdevums1. praktiskais darbs (relāciju-objektu DB datu struktūras)

Relāciju-objektu datu bāzes datu glabāšanas struktūru izveidošana un datu izgūšana (darbs obligāts).

Kursa “Lielās datu bāzes” (DB2) darbi jāsūta pa e-pastu uz adresi [email protected] Faila nosaukums: DB2_1_Uzvārds.docx

Termiņš: 13.oktobris

1. Vienotas relāciju-objektu datu bāzes ar loģiski saistītām tabulām (tabula ar rindas tipa objektiem, tabula ar objektu kolonu, tabula ar objektu kolekciju, tabula ar neviendabīgiem (heterogēniem) objektiem projektēšana.

2. Objektu tabulas izveidošana, datu ievade, meta-datu izvade, objektu un to komponenšu datu izguve (funkcija Value()).

3. Tabulas ar objektu kolonu izveidošana, datu ievade, meta-datu izvade, objektu un to komponenšu datu izguve (punkta notācijas izmantošana).

4. Tabulas ar objektu kolekciju izveidošana, datu ievade, meta-datu izvade, objektu un to komponenšu datu izguve (funkcija Table()).

5. Pakārtotu datu tipu hierarhijas izveidošana. Tabulas ar heterogeniem objektiem izveidošana, datu ievade un dažāda tipa objektu un to komponenšu izvade.

6. Objektu skata izveidošana un datu (objektu un to komponenšu) izguve no objekta skata. Objektu skatu hierarhijas izveidošana. Vaicājumi objektu skatu hierarhijai.

7. Objektu atsauču (REF) 1:N. izveidošana izmantojot funkciju REF(). Datu izgūšana (gan visa objekta, gan tā komponenšu) izmantojot funkciju DEREF(). Objektu saites izveidošana ar skatu, vaicājuma izpilde.

8. Funkciju un operatoru SUBMULTISET [OF], [NOT] MEMBER [OF], IS [NOT] A SET, CARDINALITY(), [ALL] vai [DISTINCT] MULTISET EXCEPT(), [ALL] vai [DISTINCT] MULTISET INTERSECT, [ALL] vai [DISTINCT] MULTISET UNION(), POWERMULTISET(), POWERMULTISET_BY_CARDINALITY(), SET() izmantošana vaicājumos.

10. Izveidoto tipu un tabulu metadatu izguve no datu bāzes vārdnīcas ar SELECT vaicājumu palīdzību.

9. Secinājumi (kas labs, kas slikts, kas noskaidrots, kādi ieteikumi).

3

Page 4: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

2. Objektu tabulas veidošanaPriekš pirmā praktiskā darbā izpildes tiks izmantota bibliotēkas datubāzē no

atkārtojuma darbā, kur tā tika uzprojektētā. Tikai tīri relāciju datubāzes struktūra tiks papildinātā ar objektiem, izveidojot relāciju–objektu datubāzi.

Tā kā objekti Oracle DB vidē strādā līdzīgi, kā klases jebkurā programmēšanas valodā, tad priekš objekta veidošanas ir jāizvēlas kāda loģiski saistītā sistēmā, kuru var apvienot vienā objektā. No Izveidotās bibliotēkas datubāzes priekš tā der adrese, kas ietilpst, gan bibliotekāru, gan klientu tabulās un arī varētu izveidot objektu persona, kura apvienotu informāciju par cilvēka vārdu, uzvārdu, dzimumu un citu. Šīs objekts derētu izmantošanai klientu, bibliotekāru un rakstnieku tabulās.

Tomēr vienkāršības labad definēsim jaunu objektu, kurš nav vel aprakstīts. Izveidosim priekš bibliotekāru tabulas objektu izglītība, kurš turēs informāciju par bibliotekārā izglītības līmeni, grādu un augstskolu, kur tas mācījās un diploma iegūšanas gads.

Objekta veidošanu sāk ar tipa izveidošanu:

CREATE OR REPLACE TYPE IZGLITIBA_TYPE AS OBJECT(

IZGL_ID NUMBER(30),

IZGLITIBAS_LIMENIS VARCHAR(30),

2.1. att. Bibliotēkas datubāzes struktūrā

4

Page 5: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

GRĀDS VARCHAR(30),

AUGSTSKOLA VARCHAR(30),

IZLAIDUMA_GADS INTEGER

);

Kad izveidotais tips ir veiksmīgi nokompilējies var izveidot objektu tabulu, kura saturēs šos objektus.

CREATE TABLE IZGLITIBA OF IZGLITIBA_TYPE;

Rezultātā tiek iegūtā tabula ar laukiem, kuri atbilst definētā objekta atribūtiem. Šī tabula no pirmā acu uzmetiena neatšķiras no parastām tabulām, tomēr tālāk ar to darbojoties būs redzamas atšķirības.

Tomēr tā kā šī tabula satur “IZGLITIBA_TYPE” tipa objektus, ievietot ierakstus šajā tabulā var izmantojot INSERT INTO SQL komandu ar VALUES() metodi.

INSERT INTO IZGLITIBA VALUES (

IZGLITIBA_TYPE(

1,

'Augstaka',

'Bakalaura',

'Latvijas Universitate',

2001

)

);

………………………..

INSERT INTO IZGLITIBA VALUES (

IZGLITIBA_TYPE(

5,

'Augstaka profesionala',

'Bakalaura',

2.2. att. Tabulas “IZGLITIBA” lauki

5

Page 6: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

'Latvijas Kulturas koledza',

1998

)

);

Kad dati ir ievadīti, datus un metadatus var mēģināt arī izvadīt izmantojot SQL vaicājumus. Lai iegūtu datus par objekta visiem atribūtiem izmanto vaicājumu.

SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='IZGLITIBA';

To kā šī nav parastā tabula var uzzināt ar vaicājumu, kas atgriež tabulas tipu.

SELECT TABLE_TYPE FROM USER_ALL_TABLES WHERE TABLE_NAME='IZGLITIBA';

Tagad atliek tikai ar vaicājumu izgūt datus no objektu tabulas.

2.3. att. Tabula “IZGLITIBA” ar ievietājiem ierakstiem

2.4. att. Objektu tabulas “IZGLITIBA” visi atribūti

2.5. att. Tabulas “IZGLITIBA” tips

6

Page 7: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

SELECT VALUE(A).IZGL_ID, VALUE(A).IZGLITIBAS_LIMENIS, VALUE(A).GRĀDS,

VALUE(A).AUGSTSKOLA, VALUE(A).IZLAIDUMA_GADS

FROM IZGLITIBA A

WHERE VALUE(A).GRĀDS = 'Magistra';

2.6. att. Vaicājumā rezultāts

7

Page 8: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

3. Tabulas ar objektu kolonu izveidošanaIepriekšēja nodaļā tikai izveidota objektu tabula, kura saturēja informāciju par

izglītību, tomēr tā nebija nekādi saistītā ar pārējo Bibliotēkas datubāzi. Lai šīs izglītības objektu tips būtu paistam noderīgs, to jāsavieno ar pārējo datubāzi.

Priekš tā var vai nu izveidot tabulu, kura saturēs šo objektu un savienot to ar “BIBLIOTEKARI” tabulu ar ārējo atslēgu, vai arī pievienot šo objektu pašai “BIBLIOTEKARI” tabulai.

Šoreiz izmantosim otro variantu un tabulai “BIBLIOTEKARI” pievienosim jaunu lauku, kurš saturēs izglītības objektu.

ALTER TABLE BIBLIOTEKARI

ADD

(

IZGLITIBA IZGLITIBA_TYPE

);

“IZGLITIBAS” objektu ierakstu vērtībās tiks pievienotas ar SQL komandu UPDATE, ņemot vērtībās no iepriekš izveidotās tabulas “IZGLITIBA”, kur vērtības, jau tika ievadītās iepriekšēja nodaļā, pievienojot tās vērtībās, kuru ID atbilst bibliotekārā ID.

UPDATE BIBLIOTEKARI

SET IZGLITIBA =

(

SELECT VALUE(A)

FROM IZGLITIBA A

WHERE VALUE(A).IZGL_ID = BIBLIOTEKARI.BIBLIOTEKARA_ID

);

3.1. att. Tabula “BIBLIOTEKARI” ar pievienotu objekta “IZGLITIBA” lauku

8

Page 9: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Veicot metadatu vaicājumu var redzēt, kā lauks “IZGLITIBA” ir ar datu tipu “IZGLITIBA_TYPE”.

SELECT COLUMN_NAME, DATA_TYPE FROM USER_TAB_COLUMNS WHERE TABLE_NAME='BIBLIOTEKARI';

Tagad atliek veikt vaicājumu šajā tabulā ar objektu izmantojot punkta notāciju. Uzzināsim kāda izglītībā ir bibliotēkas priekšniekam.

SELECT B.BIBLIOTEKARA_ID BIBL_ID, B.VARDS VARDS, B.UZVARDS UZVARDS,

B.IZGLITIBA.IZGLITIBAS_LIMENIS LIMENIS, B.IZGLITIBA.GRĀDS GRADS,

B.IZGLITIBA.AUGSTSKOLA AUGSTSKOLA, B.IZGLITIBA.IZLAIDUMA_GADS GADS

FROM BIBLIOTEKARI B

WHERE B.AMATS = 'vaditajs'

;

3.2. att. Tabula “BIBLIOTEKARI” ar aizpildītiem objektiem “IZGLITIBA”

3.3. att. Tabulas “BIBLIOTEKARI” metadati

9

Page 10: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

3.4. att. Bibliotēkas vadītatajā izglītībā

10

Page 11: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

4. Tabulas ar objektu kolekciju izveidošanaIzveidosim “BIBLIOTEKARI” tabulai, iespēju pielikt katrām bibliotekāram

vairākas maiņas. Priekš tā sākumā ir jāizveido jaunu tipu ”DARBA_MAINA”.

CREATE OR REPLACE TYPE DARBA_MAINA AS OBJECT (

MAINAS_ID NUMBER(30),

DIENA VARCHAR(30),

LAIKS_NO NUMBER(30),

LAIKS_LIDZ NUMBER(30)

);

Tagad no šī tipa ir jāizveido jauns tips “BIBLIOTEKARA_MAINAS”, kas turēs vairākās “DARBA_MAINA” tipa objektus.

CREATE OR REPLACE TYPE BIBLIOTEKARA_MAINAS

AS TABLE OF DARBA_MAINA;

Rezultātā ir iegūts datu tips, kurš sastāv no tabulām. Varam pievienot tabulai “BIBLIOTEKARI” lauku ar datu tipu “BIBLIOTEKARA_MAINAS”.

ALTER TABLE BIBLIOTEKARI

ADD (

DARBA_MAINAS BIBLIOTEKARA_MAINAS

) NESTED TABLE DARBA_MAINAS STORE AS DARB_MAINAS;

Šīs SQL izteiksmes beigās ir jānorada, kādā tabulā turēt šos objektus. Tāpēc pēc šī koda izpildes tiek ne tikai pievienots lauks “DARBA_MAINAS” tabulai “BIBLIOTEKARI”, bet arī izveidota tabula “DARB_MAINAS”, kurā turēs šīs maiņas.

4.1. att. Tabula “BIBLIOTEKARI” ar pievienoto lauku “DARBA_MAINAS”

11

Page 12: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Kā parasti vajag pievienot ierakstus šajos laukos, lai varētu pēc tam veikt vaicājumus. Tie tiek pievienoti ar UPDATE komandu.

UPDATE BIBLIOTEKARI

SET

DARBA_MAINAS =

BIBLIOTEKARA_MAINAS(

DARBA_MAINA(1,'Pirmdiena',9,15),

DARBA_MAINA(2,'Tresdiena',9,15),

DARBA_MAINA(3,'Piektdiena',9,15)

)

WHERE BIBLIOTEKARI.BIBLIOTEKARA_ID = 1

;

…………………….

UPDATE BIBLIOTEKARI

SET

DARBA_MAINAS =

BIBLIOTEKARA_MAINAS(

DARBA_MAINA(12,'Pirmdiena',9,14),

DARBA_MAINA(12,'Otrdiena',13,14),

DARBA_MAINA(11,'Piektdiena',8,12)

)

WHERE BIBLIOTEKARI.BIBLIOTEKARA_ID = 5

;

Veiksim vaicājumu, lai izgūtu informāciju, no jaunās kolonās “DARBA_MAINAS” izmantojot funkciju TABLE(). Atradīsim bibliotekārus un to darba laikus, kuri strādā pirmdienās.

SELECT B.BIBLIOTEKARA_ID, B.VARDS, B.UZVARDS,

M.MAINAS_ID, M.DIENA, M.LAIKS_NO, M.LAIKS_LIDZ

FROM BIBLIOTEKARI B, TABLE(B.DARBA_MAINAS) M

4.2. att. Tabula “BIBLIOTEKARI” ar pievienoto “DARBA_MAINAS” lauku

12

Page 13: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

WHERE M.DIENA = 'Pirmdiena';

Pēdējā solī izgūsim meta datus no šīs tabulas, par jauno izveidoto “DARBA_MAINAS” lauku.

SELECT COLUMN_NAME, DATA_TYPE

FROM USER_TAB_COLUMNS

WHERE TABLE_NAME='BIBLIOTEKARI' AND COLUMN_NAME = 'DARBA_MAINAS';

4.3. att. Darbinieki, kuri strādā pirmdienās un to darba laiki

4.4. att. Lauka “DARBA_MAINAS” tips

13

Page 14: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

5. Tabulas ar heterogēniem objektiem izveideObjektu datubāzes līdzīgi, kā programmēšanās valodās ir iespējamā

mantošana. Mantošana nozīmē kā viens objekts var mantot atribūtus un metodes no virs klases. Un tabulā, kurā var glabāt virs klases objektus var arī glabāt atvasināto klašu objektus.

Bibliotēkai visu laiku, lai tā būtu relevanta ir jāiepērk jaunās grāmatās, žurnālus. Šos visus izdevumus var uzskatīt par iepirkumiem, kuriem ir nosaukums, cena un gads. Toties tikai grāmatām ir žanrs, bet žurnāliem ir izdevuma numurs un mēnesis.

Tagad izveidosim tipus IEPIRKUMS_TIPS un šī tipa mantinieku tipus GRAMATA un ZURNALS.

Tipu “IEPIRKUMS_TYPE” jāveido ar piezīmi NOT FINAL, lai no tā varētu atvasināt citus tipus.

CREATE OR REPLACE TYPE IEPIRKUMS_TYPE AS OBJECT

(

NOSAUKUMS VARCHAR(30),

CENA NUMBER,

GADS NUMBER

) NOT FINAL;

Tipiem “GRAMATA_TYPE” un “ZURNALS_TYPE” ir jānorada, ka tie ir tipa “IEPIRKUMS_TYPE” apakš tipi ar norādi UNDER IEPIRKUMS_TYPE.

CREATE OR REPLACE TYPE GRAMATA_TYPE UNDER IEPIRKUMS_TYPE

(

ZANRS VARCHAR(30)

) NOT FINAL;

5.1. att. Objektu klases hierarhijas shēma

14

Page 15: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

CREATE OR REPLACE TYPE ZURNALS_TYPE UNDER IEPIRKUMS_TYPE

(

IZDEVUMA_NUMURS NUMBER,

MENESIS VARCHAR(30)

) NOT FINAL;

Pēc objektu tipu definēšanas izveidosim tabulu “IEPIRKUMI”, kurā saturēs šos tipus. Bez “IEPIRKUMS_TYPE” tipa objekta šī tabula saturēs laukus “IEPIRKUMA_ID” un “ID_DARBINIEKS”. Lauks “ID_DARBINIEKS” saturēs norādi uz darbinieku (bibliotekāru), kurš noformēja pirkumu.

CREATE TABLE IEPIRKUMI (

IEPIRKUMA_ID NUMBER PRIMARY KEY,

ID_DARBINIEKS NUMBER,

IEPIRKUMS IEPIRKUMS_TYPE,

FOREIGN KEY (ID_DARBINIEKS) REFERENCES BIBLIOTEKARI(BIBLIOTEKARA_ID)

);

Ievietosim tabulā “IEPIRKUMI” vairākus ierakstus un laukā “IEPIRKUMS” varēs ielikt ne tikai objektus ar tipu “IEPIRKUMS_TYPE”, bet arī tā atvasināto tipu objektus “GRAMATA_TYPE” un “ZURNALS_TYPE”.

INSERT INTO IEPIRKUMI VALUES(

1,

2,

GRAMATA_TYPE('Lacplesis',4,1998,'Epos')

);

………

INSERT INTO IEPIRKUMI VALUES(

11,

4,

ZURNALS_TYPE('Praktiskais latvietis',1.40,2014,435,'Aprilis')

);

15

Page 16: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Pēc tam, kad ir ievadītas vērtībās par iepirkumiem, izvadīsim informāciju par darbiniekiem un par kādiem iepirkumiem, tie bija atbildīgi. Tā kā mums ir darbošanās vienā laukā gan ar “ZURNALS_TYPE”, gan “GRAMATA_TYPE” objektiem un tiem ir atšķirīgi atribūti, tad tāpat kā objektorientētās valodās pirms izmantot šos atšķirīgos atribūtus objektu ir jāpārveido par savu apakš tipu ar funkciju TREAT(atribūts AS tips).

SELECT B.vards, B.uzvards,

I.IEPIRKUMS.NOSAUKUMS NOSAUKUMS, I.IEPIRKUMS.CENA CENA, I.IEPIRKUMS.GADS GADS,

TREAT(I.IEPIRKUMS AS GRAMATA_TYPE).ZANRS ZANRS,

TREAT(I.IEPIRKUMS AS ZURNALS_TYPE).IZDEVUMA_NUMURS AS IZDEVUMA_NUMURS,

TREAT(I.IEPIRKUMS AS ZURNALS_TYPE).MENESIS AS MENESIS

FROM BIBLIOTEKARI B INNER JOIN IEPIRKUMI I ON

B.BIBLIOTEKARA_ID = I.ID_DARBINIEKS

;

5.1. att. Tabula “IEPIRKUMI” ar dažādu tipu objektiem laukā “IEPIRKUMS”

16

Page 17: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Ka redzams vaicājums atgrieza NULL vērtībās tiem ierakstiem, kuriem izvadīja atribūtus, kuri nepastāvēja to tipos.

5.1. att. Vaicājumā rezultāts heterogēnā tabulā

17

Page 18: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

6. Objektu skata veidošanaObjektu skats ir līdzīgs parastām skatām, tikai ar atšķirību, kā šoreiz dati tiek

attēloti kā objektu tabula. Tas ļauj vieglāk izmantot skatus programmējot un nedaudz paātrina datu pārsuti pa tīklu, jo tie tiek turēti kā viena struktūrā.

Izveidosim objektu skatu, kas par pamatu izmantos tabulu “GRAMATAS” un attēlos to kā objektu.

Pirmkārt izveidosim jaunu “GRAMATAS_VIEW_TYPE” tipu kura atribūti atbildis tabulas “GRAMATAS” laukiem un rakstnieka vārdam un uzvārdam no tabulas “RAKSTNIEKI”.

CREATE OR REPLACE TYPE GRAMATAS_VIEW_TYPE AS OBJECT

(

GRAMATAS_ID NUMBER,

NOSAUKUMS VARCHAR(60),

RAKSTNIEKA_VARDS VARCHAR(30),

RAKSTNIEKA_UZVARDS VARCHAR(30),

VALODA VARCHAR(20),

GADS NUMBER

);

Tagad, kad ir nodefinēts atbilstošais objektu tips priekš skata var veidot pašu objektu skatu.

CREATE VIEW OBJECT_VIEW_GRAMATAS OF GRAMATAS_VIEW_TYPE

WITH OBJECT OID(GRAMATAS_ID) AS

(

SELECT G.GRAMATAS_ID, G.NOSAUKUMS,

R.VARDS, R.UZVARDS,

G.VALODA, G.GADS

FROM GRAMATAS G INNER JOIN RAKSTNIEKI R ON G.ID_RAKSTNIEKS = R.RAKSTNIEKA_ID

)

;

18

Page 19: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Līdzīgi izveidosim arī objektu skatu izmantojot hierarhiju. Par pamata objektu

ņemsim cilvēku, kurš bibliotēkas datubāzes kontekstā var būt bibliotekārs, rakstnieks vai klients.

Cilvēkā tipam ir id, vārds un uzvārds, bet viņā apakš tipiem, rakstnieks, bibliotekārs un klients ir viss tas pats plus vel papildus atribūti. Rakstniekam ir valsts un žanrs, bibliotekāram ir telefons, adrese un amats, bet klientam tikai telefons un adrese. Klientam un rakstniekam ir abiem telefons un adrese, bet tā kā rakstniekiem tā nav to nevar iznest pie cilvēks pamat klases.

Sākumā ir jāizveido pamat objektu tipu “CILVEKS_TYPE”.

CREATE OR REPLACE TYPE CILVEKS_TYPE AS OBJECT

(

CILV_ID NUMBER,

VARDS VARCHAR(30),

UZVARDS VARCHAR(30)

) NOT FINAL;

Tālāk izveido apakš tipus, “BIBLIOTEKARS_TYPE”, “KLIENTS_TYPE” un “RAKSTNIEKS_TYPE”.

CREATE OR REPLACE TYPE BIBLIOTEKARS_TYPE UNDER

CILVEKS_TYPE

(

TELEFONS NUMBER,

ADRESE VARCHAR(30),

6.1. att. Izveidotais objekta skats

19

Page 20: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

AMATS VARCHAR(30)

) NOT FINAL;

CREATE OR REPLACE TYPE KLIENTS_TYPE UNDER

CILVEKS_TYPE

(

TELEFONS NUMBER,

ADRESE VARCHAR(30)

) NOT FINAL;

CREATE OR REPLACE TYPE RAKSTNIEKS_TYPE UNDER

CILVEKS_TYPE

(

VALSTS VARCHAR(30),

ZANRS VARCHAR(30)

) NOT FINAL;

Kad ir izveidoti visi vajadzīgie tipi var veidot pašu heterogeno objektu skatu. Pirms to veidot ir jāizveido pamat tabulu, kura turēs informāciju par visiem cilvēkiem. Paņemot atbilstošo vajadzīgo no tabulām “BIBLIOTEKARI”, “KLIENTI” un “RAKSTNIEKI”, un savienojot tās ar UNION operatoru.

CREATE TABLE CILV_TABLE AS SELECT CILV_ID, VARDS, UZVARDS

FROM(

SELECT B.BIBLIOTEKARA_ID CILV_ID, B.VARDS VARDS, B.UZVARDS UZVARDS

FROM BIBLIOTEKARI B

UNION

SELECT K.KLIENTA_ID CILV_ID, K.VARDS VARDS, K.UZVARDS UZVARDS

FROM KLIENTI K

UNION

SELECT R.RAKSTNIEKA_ID CILV_ID, R.VARDS VARDS, R.UZVARDS UZVARDS

FROM RAKSTNIEKI R

20

Page 21: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

);

Tagad no šīs tabulas ir jāizveido pamat skatu “CILV_HETER_OBJ_VIEW”. Nezinu kāpēc bet man neizdevās apvienot šīs tabulas pie skata veidošanās, tad Oracle neradīja to saturu.

CREATE VIEW CILVEKI_HETER_OBJ_VIEW OF

CILVEKS_TYPE

WITH OBJECT OID(CILV_ID) AS

SELECT *

FROM

CILV_TABLE

;

Un no šī skata var izveidot tā pakārtotos skatus “BIBLIOTEKARI_HETER_OBJ_VIEW”, “KLIENTI_HETER_OBJ_VIEW” un “RAKSTNIEKI_HETER_OBJ_VIEW”.

CREATE VIEW BIBLIOTEKARI_HETER_OBJ_VIEW OF

BIBLIOTEKARS_TYPE UNDER CILVEKI_HETER_OBJ_VIEW

AS (

SELECT B.BIBLIOTEKARA_ID, B.VARDS, B.UZVARDS, B.TELEFONS, B.ADRESE, B.AMATS

FROM BIBLIOTEKARI B

);

CREATE VIEW KLIENTI_HETER_OBJ_VIEW OF

KLIENTS_TYPE UNDER CILVEKI_HETER_OBJ_VIEW

AS (

SELECT K.KLIENTA_ID, K.VARDS, K.UZVARDS, K.TELEFONS, K.ADRESE

FROM KLIENTI K

);

CREATE VIEW RAKSTNIEKI_HETER_OBJ_VIEW OF

RAKSTNIEKS_TYPE UNDER CILVEKI_HETER_OBJ_VIEW

21

Page 22: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

AS (

SELECT R.RAKSTNIEKA_ID, R.VARDS, R.UZVARDS, R.VALSTS, R.ZANRS

FROM RAKSTNIEKI R

);

Kā redzams šie pēdējie trīs skati ir skata “CILVEKI_HETER_OBJ_VIEW” atvasinātie skati, tas tika panākts ar operatoru UNDER.

Tagad var veikt kādā no iegūtajiem skatiem vaicājumu. Piemērām izvadīsim visus bibliotekārus.

SELECT VALUE(P).VARDS VARDS, VALUE(P).UZVARDS UZVARDS,

VALUE(P).TELEFONS TELEFONS, VALUE(P).ADRESE ADRESE,

VALUE(P).AMATS AMATS

FROM BIBLIOTEKARI_HETER_OBJ_VIEW P;

6.2. att. Heterogēnais klientu skats

22

Page 23: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

6.3. att. Heterogēna skata par bibliotekāriem saturs

23

Page 24: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

7. Tabula ar objektu atsauci (REF) 1:NPriekš atsauču izveides uztaisīsim objektu tabulu, kurā turēs dažādos

iespējamos pārkāpumus bibliotēka un sodus par tiem. Sāksim ar tipa “SODS_TYPE” definēšanu.

CREATE OR REPLACE TYPE SODS_TYPE AS OBJECT (

SODA_ID NUMBER,

NOSAUKUMS VARCHAR(30),

SODA_NAUDA NUMBER

);

Izveidosim šī tipa objektu tabulu.

CREATE TABLE SODI OF SODS_TYPE;

Un ievietosim tajā pāris objektus.

INSERT INTO SODI VALUES(SODS_TYPE(

1,'Pazaudeta gramata',6

));

INSERT INTO SODI VALUES(SODS_TYPE(

2,'Stipri sabojata gramata',4

));

INSERT INTO SODI VALUES(SODS_TYPE(

3,'Nestipri sabojata gramata',3

));

INSERT INTO SODI VALUES(SODS_TYPE(

4,'Termina parsniegsana',2

));

Tagad izveidosim tipu “SODA_ATSAUCE_TYPE”, kas kalpos kā norāde uz ”SODS_TYPE” objektu.

CREATE OR REPLACE TYPE SODA_ATSAUCE_TYPE AS OBJECT (

SODA_ID VARCHAR(30),

SODS REF SODS_TYPE

);

Un izveidosim šī atsauču tipa objektu kolekcijas tabulu.

24

Page 25: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

CREATE OR REPLACE TYPE SODU_ATSAUCES_TYPE AS TABLE OF SODA_ATSAUCE_TYPE;

Kad beidzot sagataves darbi ir paveikti var pielikt tabulai “KLIENTI” jaunu lauku “SODI”, kas saturēs šīs norādēs uz piespriestajiem sodiem.

ALTER TABLE KLIENTI

ADD (

SODI SODU_ATSAUCES_TYPE

) NESTED TABLE SODI STORE AS SODI_NESTED_TABLE;

Tagad var ievietot pāris norādes uz sodiem šajā laukā. Priekš tā ir jādeklarē atsauces un jāpiesaista tos vajadzīgajiem ierakstiem no tabulas sodi. Kad tas ir izdarīts šīs norādes var ievietot tabulās “KLIENTI” lauka “SODI”.

declare

ats_1 REF SODS_TYPE;

ats_2 REF SODS_TYPE;

ats_3 REF SODS_TYPE;

ats_4 REF SODS_TYPE;

begin

SELECT REF(S) INTO ats_1 FROM SODI S WHERE S.SODA_ID = 1;

SELECT REF(S) INTO ats_2 FROM SODI S WHERE S.SODA_ID = 2;

SELECT REF(S) INTO ats_3 FROM SODI S WHERE S.SODA_ID = 3;

SELECT REF(S) INTO ats_4 FROM SODI S WHERE S.SODA_ID = 4;

UPDATE KLIENTI SET

SODI = (

SODU_ATSAUCES_TYPE(

SODA_ATSAUCE_TYPE(1,ats_1),

SODA_ATSAUCE_TYPE(2,ats_2)

)

)

WHERE KLIENTI.KLIENTA_ID = 5;

25

Page 26: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

UPDATE KLIENTI SET

SODI = (

SODU_ATSAUCES_TYPE(

SODA_ATSAUCE_TYPE(3,ats_3)

))

WHERE KLIENTI.KLIENTA_ID = 20;

UPDATE KLIENTI SET

SODI = (

SODU_ATSAUCES_TYPE(

SODA_ATSAUCE_TYPE(4,ats_1),

SODA_ATSAUCE_TYPE(5,ats_2)

))

WHERE KLIENTI.KLIENTA_ID = 3;

UPDATE KLIENTI SET

SODI = (

SODU_ATSAUCES_TYPE(

SODA_ATSAUCE_TYPE(6,ats_3),

SODA_ATSAUCE_TYPE(7,ats_3)

))

WHERE KLIENTI.KLIENTA_ID = 2;

end;

26

Page 27: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Noteiksim bibliotēkas klientus kuriem ir sodi, un kādi tie ir izmantojot funkciju DEREF, lai piekļūtu pie atsauces norādītajām vērtībām.

SELECT K.VARDS, K.UZVARDS, DEREF(S.SODS).NOSAUKUMS SODA_NOSAUKUMS,

DEREF(S.SODS).SODA_NAUDA SODA_NAUDA

FROM KLIENTI K, TABLE(K.SODI) S

WHERE NOT(K.SODI IS NULL)

;

Tagad izveidosim atsauci uz objektu skatu ar funkciju MAKE_REF un iegūsim paris rezultātus no tās. Lai nevajadzētu veidot jaunu objektu skatu izmantosim pirms tam izveidoto objektu skatu “OBJECT_VIEW_GRAMATAS”.

7.1. att. Tabula “KLIENTI” ar izveidotām atsaucēm

7.2. att. Klienti un to sodi

27

Page 28: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Izvadīsim šī skata pirmās grāmatās nosaukumu vērtību izmantojot objektu skatu atsauci.

SELECT MAKE_REF(OBJECT_VIEW_GRAMATAS,1).NOSAUKUMS NOSAUKUMS FROM DUAL;

7.3. att. Skats “OBJECT_VIEW_GRAMATAS”

7.4. att. Objektu skata atsauces vaicājumā rezultāts

28

Page 29: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

8. Funkciju un operatoru izmantošanaSākumā izveidosim tipu “ZANRS_TYPE”, lai būtu vairāk iespēju veikt

dažādākus vaicājumus.

CREATE OR REPLACE

TYPE ZANRS_TYPE AS OBJECT (

ZANRA_ID NUMBER,

NOSAUKUMS VARCHAR(30),

VECUMA_GRUPA VARCHAR(30)

);

Tad tabulas tipu “ZANRI_TYPE”

CREATE TYPE ZANRI_TYPE AS TABLE OF ZANRS_TYPE;

Tagad izveidosim tabulu, no kurās ņemsim žanrus.

CREATE TABLE ZANRI (

Z_ID NUMBER PRIMARY KEY,

ZANRS ZANRS_TYPE

);

Ievietosim šajā tabulā vairākus objektus.

INSERT INTO ZANRI VALUES (

1, ZANRS_TYPE(1,'Detektivs','Pieaugusie')

);

………

INSERT INTO ZANRI VALUES (

8, ZANRS_TYPE(8,'Piedzivojumi','Visi')

);

Tagad izveidosim tabulu “IZDEVEJI” kuri saturēs arī pakārtoto žanru objektu tabulu.

CREATE TABLE IZDEVEJI (

IZDEVEJA_ID NUMBER PRIMARY KEY,

NOSAUKUMS VARCHAR(30),

ZANRI ZANRI_TYPE

29

Page 30: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

) NESTED TABLE ZANRI STORE AS ZANRI_NESTED_TABLE;

Ievietosim šajā tabulā pāris ierakstus.

INSERT INTO IZDEVEJI VALUES(

1, 'Zvaigzne ABC',

ZANRI_TYPE(

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 1),

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 2),

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 3),

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 8)

)

);

……………….

INSERT INTO IZDEVEJI VALUES(

5, 'Avots',

ZANRI_TYPE(

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 1),

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 2),

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 8),

(SELECT Z.ZANRS FROM ZANRI Z WHERE Z_ID = 7)

)

);

Pēc tā visā esam gatavi vaicājumu izpildei.

8.1. Operators SUBMULTISET [OF],Šis operators nosaka to vai vienas objektu kolekcijas visi objekti pieder citai

kolekcijai. Noteiksim, kurās izdevniecībās izdotie žanri ir tādi paši kā citai izdevniecībai.

SELECT

I2.NOSAUKUMS, T2_Z.NOSAUKUMS,

I1.NOSAUKUMS, T1_Z.NOSAUKUMS

30

Page 31: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

FROM

IZDEVEJI I1, IZDEVEJI I2,

TABLE(I1.ZANRI) T1_Z, TABLE(I2.ZANRI) T2_Z

WHERE

I1.ZANRI SUBMULTISET OF I2.ZANRI AND NOT(I1.IZDEVEJA_ID = I2.IZDEVEJA_ID)

GROUP BY

I2.NOSAUKUMS, T2_Z.NOSAUKUMS,

I1.NOSAUKUMS, T1_Z.NOSAUKUMS;

8.2. Operators MEMBER [OF]Šīs operators nosaka vai objekts ietilpst kolekcijā. Noteiksim, kuras

izdevniecības izdot detektīvus.

SELECT DISTINCT I.NOSAUKUMS, Z_T.NOSAUKUMS

FROM IZDEVEJI I,

(

SELECT Z.ZANRS

FROM ZANRI Z

WHERE Z.ZANRS.NOSAUKUMS= 'Detektivs'

) Z,

TABLE(I.ZANRI) Z_T

WHERE Z.ZANRS MEMBER OF I.ZANRI

GROUP BY I.NOSAUKUMS, Z_T.NOSAUKUMS;

8.1.1. att. Izdevējā “Avots” žanri ir apakškopa no izdevēja “Atēnā” žanriem

31

Page 32: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

8.3. Operators IS A SETNosaka vai kolekcija sastāv no unikāliem objektiem, vai objekti neatkārtojas.

Izmēģināsim to uz iepriekš izveidotās kolekcijas ar darbinieku darba maiņām tabulā “BIBLIOTEKARI”.

SELECT B.VARDS, B.UZVARDS

FROM BIBLIOTEKARI B

WHERE B.DARBA_MAINAS IS A SET

;

Šis vaicājums izvada visus bibliotekārus, jo katrām no tiem ir unikālas darba maiņas, jeb nav divu darba maiņu vienā laikā pašām ar sevi.

8.4. Funkcija CARDINALITY()Ar šo funkciju iegūst kolekcijas objektu skaitu. Izmantosim to, lai iegūtu katrā

bibliotekāra maiņu skaitu.

SELECT B.VARDS, B.UZVARDS, CARDINALITY(B.DARBA_MAINAS) MAINU_SKAITS

FROM BIBLIOTEKARI B;

8.2.1. att. Izdevēji, kas izdot detektivus

8.3.1. att. Izvadītie visi “BIBLIOTEKARI” tabulas ieraksti, jo to kolekcijas visas ir unikālās

32

Page 33: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

8.5. Operators MULTISET EXCEPTŠīs operators atņem no pirmās kolekcijas tos elementus, kuri ir otrajā

kolekcijā. Principa tas veic kopu starpības operāciju. Uzzināsim kāda žanra grāmatas izdot “Valters un Rapa” kurās neizdod “Atena”.

SELECT I_1.NOSAUKUMS, Z_1.NOSAUKUMS

FROM

IZDEVEJI I_1, IZDEVEJI I_2,

TABLE(I_1.ZANRI MULTISET EXCEPT I_2.ZANRI) Z_1

WHERE I_1.NOSAUKUMS = 'Valters un Rapa' AND

I_2.NOSAUKUMS = 'Atena'

;

8.6. Operators MULTISET INTERSECT

Ar šo operatoru atrod objektus, kuri pieder abām kopām. No kopu teorijas tas ir šķēlumā darbībā. Tagad noteiksim kādus žanrus izdod gan “Valters un Rapa” gan “Atēnā”.

SELECT I_1.NOSAUKUMS,I_2.NOSAUKUMS, Z_1.NOSAUKUMS

8.4.1. att. Katrā darbinieka darba maiņu skaits

8.5.1. att. Žanri kurus izdod “Valters un Rapa”, bet neizdod “Atena”

33

Page 34: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

FROM

IZDEVEJI I_1, IZDEVEJI I_2,

TABLE(I_1.ZANRI MULTISET INTERSECT I_2.ZANRI) Z_1

WHERE I_1.NOSAUKUMS = 'Valters un Rapa' AND

I_2.NOSAUKUMS = 'Atena'

;

8.7. Operators MULTISET UNION Ar šo operatoru apvieno un parādā objektus no abām kopām. Tas atbilst kopu

teorijas apvienojuma operācijai. Noteiksim kurus žanrus izdod kop “Valters un Rapa” vai “Atēna”.

SELECT DISTINCT Z_1.NOSAUKUMS

FROM

IZDEVEJI I_1, IZDEVEJI I_2,

TABLE(I_1.ZANRI MULTISET UNION I_2.ZANRI) Z_1

WHERE I_1.NOSAUKUMS = 'Valters un Rapa' AND

I_2.NOSAUKUMS = 'Atena';

8.6.1. att. Žanri, kurus izdod gan “Valters un Rapa”, gan “Atena”

8.7. att. Žanri, kurus izdod “Valters un Rapa” vai “Atēna”

34

Page 35: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

8.8. Funkcija POWERMULTISET()Šī funkcija izveido visus objektu kolekcijas variantus. Izveidosim visus

variantus no žanriem, kurus izdod izdevniecība “Avots”.

SELECT I.NOSAUKUMS, Z_1.*

FROM IZDEVEJI I,

TABLE(POWERMULTISET(I.ZANRI)) Z_1

WHERE I.NOSAUKUMS = 'Avots';

8.9. Funkcija POWERMULTISET_BY_CARDINALITY()Veido visās iespējamās objektu kombinācijas no kopās pa noteiktu objektu

skaitu. Izveidosim visas kombinācijas no žanriem, kurus izdod “AVOTS” pa 2 objektiem.

SELECT I.NOSAUKUMS, Z_1.*

FROM IZDEVEJI I,

TABLE(POWERMULTISET_BY_CARDINALITY(I.ZANRI,2)) Z_1

WHERE I.NOSAUKUMS = 'Avots';

8.8.1. att. Visi varianti no žanriem, kurus izdod “Avots”

8.9.1. att. Kombinācijas no visiem “Avots” izdotajiem žanriem pa diviem objektiem

35

Page 36: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

8.10. Funkcija SET()Funkciju SET() izmanto, lai izmestu objektus no kolekcijas, kuri atkārtojas.

Piemērā ar MULTISET UNION, vajadzēja izmantot operatoru DISTINCT, lai atmestu atkārtojošos ierakstus. Pārveidosim šo izteiksmi izmantojot SET() funkciju bez DISTINCT operatorā.

SELECT Z_1.NOSAUKUMS

FROM

IZDEVEJI I_1, IZDEVEJI I_2,

TABLE(SET(I_1.ZANRI MULTISET UNION I_2.ZANRI)) Z_1

WHERE I_1.NOSAUKUMS = 'Valters un Rapa' AND

I_2.NOSAUKUMS = 'Atena';

8.10. att. Atkārtojošos objektu izmešana no kolekcijas

izmantojot SET() funkciju

36

Page 37: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

SecinājumiPraktiskā darbā gaitā tika apskatīts objektu-relāciju datubāžu princips, veidojot

vienotu bibliotēkas datubāzi. Darbā tika veidotās gan objektu tabulas, gan relāciju tabulas ar objektu kolonu un tabulās ar objektu kolekciju.

Priekš darbā ar objektiem tika papildinātā ievad darba izmantotā bibliotēkas datubāzē tai pieliekot objektu tabulas, atsauces un jaunus objektu skatus. Objektu izmantošana kopā ar relāciju datubāzi papildina tās iespējas, ļaujot veidot sarežģītās datu struktūras un izgūt rezultātus vieglāk un ātrāk nekā vienkāršā relāciju modelī.

Tomēr ir jāatzīst kā objektu izmantošana var sarežģīt darbu ar datubāzi un padarīt to mazāk saprotamu, tomēr tās dod iespēju izmantot daudzus objektorientētās programmēšanas konceptus Oracle datubāzē. Piemērām mantošana un atsauces ir ļoti jaudīgs koncepts, kas ļauj veidot sarežģītākus veidojumus ar mazāku darbu.

Bez pašas objektu-relāciju datubāzes veidošanās darbā tika izmēģinātas galvenie operatori un funkcijas darbā ar objektiem. Kā redzams šīs darbības tieši dod objektu datubāzēm savas priekšrocībās, nodrošinot ērtu interfeisu darbā ar datiem.

Darbā vislielākās problēmās man radīja pati datubāzē. Jo darba izpildes pusceļā atteicās strādāt RTU DB serveris uz kurā es biju sācis taisīt šo darbu. Par laimi man uz datora bija Oracle XE datubāze, kuru izmantojot es arī veiksmīgi izpildīju šo darbu. Un nekādu atšķirību starp Oracle 11g un Oracle XE datubāzēm es neieraudzīju. Visu savu iesākto darbu es pārnesu uz lokālo datubāzi stundas laikā, jo par laimi biju saglabājis visus tabulu veidošanās un datu ievades SQL failus.

Beigās ir jāsaka, ka šīs darbs bija pietiekami grūts, jo tas prasīja daudz jaunu konceptu izmantošanu, kuras pirms tām netika apskatītās datubāžu konceptā. Visu to saprast palīdzēja tikai manas priekšzināšanas objektorientētajā programmēšanā.

37

Page 38: Uzdevums -    Web viewRĪGAS TEHNISKĀ UNIVERSITĀTE. Datorzinātnes un informācijas tehnoloģijas fakultāte. Informācijas tehnoloģijas institūts. praktiskais darbs

Literatūra1. Materiāli no http://www.datubaze.wordpress.com

2. Materiāli no www.ortus.rtu.lv

3. Materiāli no Materiāli no http://docs.oracle.com/cd/B10501_01/appdev.920/a96594/adobjvew.htm#433861

4. Materiāli no www.dba-oracle.com

5. Materiāli no http://docs.oracle.com/cd/B12037_01/appdev.101/b10807/10_objs.htm

6. Materiāli no http://infolab.stanford.edu/~ullman/fcdb/oracle/or-objects.html

38