rĪgas tehniskĀ universitĀte - datu bāzes tehnoloģijas€¦  · web viewtabula ar vairākām...

28
Tabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju Objektu kolekcijas veido nesakārtotu objektu kopa. Kolekcijas elementu skaits ir neierobežots. Var veikt kolekcijas elementu atlasi, pievienot un nodzēst elementus. Tabulu ar objektu kolekciju lieto, ja: 1) nepieciešams izpildīt efektīvus vaicājumus ar kolekciju; 2) veidot datu sasaisti viens ar daudziem (1 : N); 3) izpildīt daudz pievienošanas, atjaunošanas un dzēšanas operācijas. 1

Upload: others

Post on 08-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Objektu kolekcijas veido nesakārtotu objektu kopa.Kolekcijas elementu skaits ir neierobežots.Var veikt kolekcijas elementu atlasi, pievienot un nodzēst elementus.

Tabulu ar objektu kolekciju lieto, ja:1) nepieciešams izpildīt efektīvus vaicājumus ar kolekciju;2) veidot datu sasaisti viens ar daudziem (1 : N);3) izpildīt daudz pievienošanas, atjaunošanas un dzēšanas operācijas.

1

Page 2: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabulas ar objektu kolekciju izveidošana

Mac_gram (tabula: mācību grāmatas)PRIEK

(priekšmets)GRUPA(studentu

grupa)IZM_LIT(izmantojamā

literatura)Datu bāzes A1

Informācijas sistēmas

A1

IS projektēšana B3

Gramatas (tabula: grāmatas)NOS(nosaukums) AUT(autors) NUM(numurs)

Datu bāzes tehnoloģija J. Koks 123Informācijas sistēmas Z.Sakne 124Progresīvās datu bāzes L.Lapa 125Lielās datu bāzes I. Ozols 126Datu bāzes projektēšana R. Smilga 127

2

Page 3: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

1. Objekta tipa izveidošana:create or replace type TIPS_GRAMATA as object(NOS varchar2(50),AUT varchar2(30),NUM number(6));

2. Objekta tipa ar objektu kolekciju izveidošana:create or replace type TIPS_GRAMATAS as table of TIPS_GRAMATA;

3

Page 4: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

3. Pamattabulas (MAC_GRAM) izveidošana un objektu ar kolekcijām (IZM_LIT) iekļaušana tajā:

create table MAC_GRAM(PRIEK varchar2(30),GRUPA varchar2(2),IZM_LIT TIPS_GRAMATAS)nested table IZM_LIT store as GRAMATAS;

4

Page 5: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

NOS AUT NUM

NOS AUT NUM

Datu ievade tabulā ar objektu kolekcijām

PRIEK GRUPA

1. Lietojot INSERT operatoru:

insert into MAC_GRAM values('Datu bāzes', 'A1', TIPS_GRAMATAS( TIPS_GRAMATA('Datu bāzes tehnoloģija', 'J. Koks', 123),TIPS_GRAMATA('Lielās datu bāzes', 'I. Ozols', 126)));

2. Lietojot PL/SQL programmu un INSERT operatoru:

declaremain_obj TIPS_GRAMATAS := TIPS_GRAMATAS( TIPS_GRAMATA('Informācijas sistēmas', 'Z.Sakne', 124));begin insert into MAC_GRAM values ('Informācijas sistēmas', 'A1', main_obj);end;

5

Page 6: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Datu izgūšana no tabulas ar objektu kolekciju

select A.* from MAC_GRAM A;

PRIEK GRUPA IZM_LIT(NOS, AUT, NUM)----------------------------------------------------------------------------------Datu bāzes A1 TIPS_GRAMATAS(TIPS_GRAMATA('Datu bāzes tehnoloģija', 'J. Koks', 123), TIPS_GRAMATA('Lielās datu bāzes', I. Ozols', 126))

Informācijas sistēmas A1 TIPS_GRAMATAS( TIPS_GRAMATA('Informācijas sistēmas', 'Z.Sakne', 124))

6

Page 7: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Funkcijas Table() izmantošana datu izgūšanai no tabulas ar objektu kolekcijuIzmantojot funkciju Table(), no objektu kolekcijām tiek iegūts objektu skats, kura datus var izvadīt gan:

1) kā tabulas ar rindas objektiem datus:

select A.PRIEK, A.GRUPA, Value(B)from MAC_GRAM A, Table(A.IZM_LIT) B;

PRIEK GR VALUE(B)(NOS, AUT, NUM)--------------------------------------------------------------------------------------------Datu bāzes A1 TIPS_GRAMATA(

'Datu bāzes tehnoloģija', 'J. Koks', 123)

Datu bāzes A1 TIPS_GRAMATA('Lielās datu bāzes', 'I. Ozols', 126)

Informācijas sistēmas A1 TIPS_GRAMATA('Informācijas sistēmas', 'Z.Sakne', 124)

2) kā relāciju DB tabulas datus:

select A.PRIEK, A.GRUPA, B.NOS, B.AUT, B.NUM from Mac_gram A, Table(A.IZM_LIT) B;

PRIEK GRUPA NOS AUT NUM

Datu bāzes A1 Datu bāzes tehnoloģija J. Koks 123

Datu bāzes A1 Lielās datu bāzes I. Ozols 126

Informācijas sistēmas A1 Informācijas sistēmas Z. Sakne 124

7

Page 8: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM+

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

Kolekcijas papildināšana tabulā ar objektu kolekciju IZM_LIT

PRIEK GRUPA

1. Tiek paņemta attiecīgās kolonas šūnas objektu kolekcija.

select A.IZM_LIT from MAC_GRAM A

where A.PRIEK = 'Informācijas sistēmas';2. Šai šūnas kolekcijai tiek pievienots vēl viens kolekcijas objekts.

insert into TABLE(select A.IZM_LIT from MAC_GRAM A

where A.PRIEK = 'Informācijas sistēmas') values (TIPS_GRAMATA('IS analīze', 'P. Sakne’, 130));

8

Page 9: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Iegūtā rezultāta pārbaude

select A.PRIEK, A.GRUPA, A.IZM_LITfrom MAC_GRAM A where A.PRIEK = 'Informācijas sistēmas';

PRIEK GRUPA IZM_LIT(NOS, AUT, NUM)---------------------------------------------------------------------------------Informācijas sistēmas A1 TIPS_GRAMATAS(

TIPS_GRAMATA('Informacijas sistemas', 'Z.Sakne', 124),TIPS_GRAMATA('IS analīze', 'P. Sakne', 130))

9

Page 10: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

NOS AUT NUM

NOS AUT NUM

Izmaiņu veikšana tabulai ar kolekcijām objektu kolekcijas objektos IZM_LIT

PRIEK GRUPA

update TABLE(select A.IZM_LIT from MAC_GRAM A where A.PRIEK = 'Informācijas sistēmas') Bset B.AUT = 'D. Klints' where B.NOS = 'IS analīze';

select A.PRIEK, A.GRUPA, A.IZM_LITfrom MAC_GRAM A where A.PRIEK = 'Informācijas sistēmas';

PRIEK GR IZM_LIT(NOS, AUT, NUM)----------------------------------------------------------------------------------Informācijas sistēmas A1 TIPS_GRAMATAS(

TIPS_GRAMATA('Informācijas sistēmas', 'Z.Sakne', 124), TIPS_GRAMATA('IS analīze', 'D. Klints', 130))

10

Page 11: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

Kolekciju veidošanas varianti tabulā ar objektu kolekcijām1. Tabula ar objektu kolekciju un citām parastām kolonām.

3.kolona

1.kolona 2. kolona

2. Tabula ar vienu kolonu, kurā ir objektu kolekcija.

1. kolona

3. Kolekcijas iekļaušana rindas objektā. Kolonas apzīmējuma nav, var lietot: COLUMN_VALUE

4. Tabula ar divu vai vairāku līmeņu kolekcijām

11

Page 12: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabula ar vienu kolonu, kurā glabājas objekti ar objektu kolekciju.

create or replace type TIPS_STUDENTS as object(KATEDR_NUM number,S_UZV varchar2(20),S_VAR varchar2(20));

create or replace type TIPS_STUDENTI as table of TIPS_STUDENTS;

create table STUDENTI(KAT_STUDENTI TIPS_STUDENTI) nested table KAT_STUDENTI store as PALIG_TABULA;

insert into STUDENTI values(TIPS_STUDENTI(TIPS_STUDENTS(1, 'Zars', 'Liene'), TIPS_STUDENTS(1, 'Celms', 'Zane')));insert into STUDENTI values(TIPS_STUDENTI(TIPS_STUDENTS(2, 'Lapa', 'Rasma'), TIPS_STUDENTS(2, 'Sproga', 'Juris')));

select A.KAT_STUDENTI from STUDENTI A;KAT_STUDENTI(KATEDR_NUM, S_UZV, S_VAR)--------------------------------------------------------------------------------TIPS_STUDENTI(TIPS_STUDENTS(2, 'Lapa', 'Rasma'), TIPS_STUDENTS(2, 'Sproga', 'Juris'))TIPS_STUDENTI(TIPS_STUDENTS(1, 'Zars', 'Liene'), TIPS_STUDENTS(1, 'Celms', 'Zane'))

select B.S_UZV, B.S_VAR from STUDENTI A, TABLE(A.KAT_STUDENTI) Bwhere B.KATEDR_NUM = 2;S_UZV S_VAR----------------------------Lapa RasmaSproga Juris

12

Page 13: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

NOS AUT NUM

Tabula ar rindas tipa objektu, kurā ir objektu kolekcija. 1. piemērs

Objekta tipa izveidošana:

create or replace type TIPS_GRAMATA as object(NOS varchar2(30),AUT varchar2(30),NUM number);

Objekta ar kolekciju tipa izveidošana:

create or replace type TIPS_GRAMATAS as table of TIPS_GRAMATA;

Tabulas ar rindast tipa objektu, kurā ir objektu kolekcija, definēšana:

create table MAC_GRAM(COLUMN_VALUE TIPS_GRAMATAS)nested table COLUMN_VALUE store as GRAMATAS;

insert into MAC_GRAM values(TIPS_GRAMATAS( TIPS_GRAMATA('Datu bāzes tehnoloģija', 'J. Koks', 123),TIPS_GRAMATA('Lielās datu bāzes', 'I. Ozols', 126)));

select A.COLUMN_VALUE from MAC_GRAM A;COLUMN_VALUE(NOS, AUT, NUM)-----------------------------------------------------------------------------------------------------------TIPS_GRAMATAS(TIPS_GRAMATA('Datu bāzes tehnoloģija', 'J. Koks', 123), TIPS_GRAMATA('Lielās datu bāzes', 'I. Ozols', 126))

13

Page 14: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

TEL_NUM

TEL_NUM

TEL_NUM

TEL_NUM

Divu līmeņu objektu kolekciju veidošana Tabula BIZNESA_KONTAKTI Kolona: Kolona: FIR_NOS FIR_DARBIN TIPS_PIRC_SARAKSTS TIPS_PIRCEJS

PIRC_TELEF

create or replace type TIPS_TELEFONS as object(TEL_NUM varchar2(11));

create or replace TIPS_TEL_SARAKSTS as table of TIPS_TELEFONS;

create or replace type TIPS_PIRCEJS as object(PIRC_NOS varchar2(25),PIRC_TELEF TIPS_TEL_SARAKSTS);

create or replace type TIPS_PIRC_SARAKSTS as table of TIPS_PIRCEJS;

create table BIZNESA_KONTAKTI( FIR_NOS varchar2(25), FIR_DARBIN TIPS_PIRC_SARAKSTS) nested table FIR_DARBIN store as PALIGTABULA_1 (NESTED TABLE TIPS_TEL_SARAKSTS store as PALIGTABULA_2); (nested table COLUMN_VALUE store as PALIGTABULA_2); Variants!

PIRC_NOS

PIRC_NOS

TIPS_TELEFONS

TIPS_TEL_SARAKSTS

14

Page 15: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabulas ar objektu kolekcijām izveidošana. 3. piemērs

create or replace type TIPS_ALGA as object (ALGA number(7,2),DAT_NO date,DAT_LIDZ date);create or replace type TIPS_ALGAS as table of TIPS_ALGA;create table PERSONAS (PERS_ID varchar2(11),UZV varchar2(20),VAR varchar2(20),PERS_ALGA TIPS_ALGAS)nested table PERS_ALGA store as ALGAS;

insert into PERSONAS values ('10108012345', 'Koks', 'Juris', TIPS_ALGAS(TIPS_ALGA(150, TO_DATE('10-01-2000', 'DD-MM-YYYY'), TO_DATE('20-12-2000', 'DD-MM-YYYY')), TIPS_ALGA (200, TO_DATE('20-12-2000', 'DD-MM-YYYY'), TO_DATE('15-04-2001', 'DD-MM-YYYY')), TIPS_ALGA (250, TO_DATE('15-04-2001', 'DD-MM-YYYY'), TO_DATE('16-12-2001', 'DD-MM-YYYY'))));insert into PERSONAS values ('15128222345', 'Zars', 'Liene', TIPS_ALGAS(TIPS_ALGA (130, TO_DATE('21-05-2001', 'DD-MM-YYYY'), TO_DATE('15-10-2001', 'DD-MM-YYYY')), TIPS_ALGA (180, TO_DATE('16-10-2001', 'DD-MM-YYYY'), TO_DATE('21-04-2002', 'DD-MM-YYYY')), TIPS_ALGA (300, TO_DATE('22-04-2002', 'DD-MM-YYYY'), TO_DATE('04-07-2002', 'DD-MM-YYYY'))));select A.UZV, C.ALGA, C.DAT_NO, C.DAT_LIDZfrom PERSONAS A, TABLE(A.PERS_ALGA) Cwhere A.PERS_ID = '15128222345';UZV ALGA DAT_NO DAT_LIDZ-------------------------------------------------------------Zars 130 21-05-2001 15-10-2001Zars 180 16-10-2001 21-04-2002Zars 300 22-04-2002 04-07-2002

select A.UZV, COUNT(C.ALGA)from PERSONAS A, TABLE(A.PERS_ALGA) C group by A.UZV;UZV COUNT(C.ALGA)-------------------------------------------------Koks 3Zars 3

15

Page 16: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabulas ar objektu kolekcijām izveidošana. 4. piemērs

create or replace type TIPS_STUDENTS as object(S_UZV varchar2(20),S_VAR varchar2(20));

create or replace type TIPS_STUDENTI as table of Tips_students;

create table STUDENTI(KATEDR_NUM number, K_STUDENTI TIPS_STUDENTI) nested table K_STUDENTi store as PALIGTABULA;

insert into STUDENTI values(1, TIPS_STUDENTI(TIPS_STUDENTS('Zars', 'Liene'), TIPS_STUDENTS('Celms', 'Zane')));insert into STUDENTI values(2, TIPS_STUDENTI(TIPS_STUDENTS('Lapa', 'Rasma'), TIPS_STUDENTS('Sproga', 'Juris')));

select A.KATEDR_NUM, B.S_UZV from STUDENTI A, TABLE(A.K_STUDENTI) B;KATEDR_NUM S_UZV--------------------------------------- 1 Zars 1 Celms 2 Lapa 2 Sproga

select CARDINALITY(A.K_STUDENTI) from STUDENTI A;CARDINALITY(A.K_STUDENTS)------------------------------------------- 2 2

16

Page 17: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabulas ar objektu kolekciju glabāšanas organizācija

Objektu kolekcijas elementi glabājas atsevišķā tabulā. Tā satur kolonnu, kuras objekti piekārtoti pamattabulas rindām vai objektiem, pie kuriem pieder katrs elements.

Oracle stores the rows of a nested table in a separate storage table. A system generated NESTED_TABLE_ID, which is 16 bytes in length, correlates the parent row with the rows in its corresponding storage table.The storage table contains each value for each nested table in a nested table column. Each value occupies one row in the storage table. The storage table uses the NESTED_TABLE_ID to track the nested table for each value. All of the values that belong to nested table A are identified, all of the values that belong to nested table B are identified, and so on.

17

Page 18: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabula ar objektu kolekciju, kurā kolekcijas elementi tiek glabāti tabulā ar indeksa tipa organizāciju

18

Page 19: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas€¦  · Web viewTabula ar vairākām parastām kolonām un kolonu (kolonām), kurā glabājas objekti ar objektu kolekciju

Tabula ar objektu kolekciju, kurā kolekcijas elementi tiek glabāti tabulā ar indeksa tipa organizāciju un tiek izmantota datu sablīvēšana (compress)

19