28
Table with object collection or tabele with nested table Objects are not arranged. Collection elements quantity are unlimited. 1

RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Embed Size (px)

Citation preview

Page 1: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Table with object collection or tabele with nested table

Objects are not arranged.

Collection elements quantity are unlimited.

1

Page 2: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Table with object collection

TEXTBOOKSSUB GRO LIT

Datu bāzes A1

Informācijas sistēmas

A1

IS projektēšana B3

BOOKSNAM AUT NUM

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

NAM AUT NUM

1. Object type definition:create or replace type TYPE_BOOK as object(NAM varchar2(50),AUT varchar2(30),NUM number(6));

2. Object collection type definition:create or replace type TYPE_BOOKS as table of TYPE_BOOK;

NAMM AUT NUM

NAM AUT NUM

3

Page 4: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

3. Definition of table TEXTBOOKS:

create table TEXTBOOKS(SUB varchar2(30),GRO varchar2(2),LIT TYPE_BOOKS)nested table LIT store as BOOKS;

4

Page 5: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Data input

SUB GRO

1. Using INSERT command:

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

2. USING language PL/SQL and INSERT command:

declaremain_obj TYPE_BOOKS := TYPE_BOOKS( TYPE_BOOK('Informācijas sistēmas', 'Z.Sakne', 124));

begin insert into TEXTBOOKS values ('Informācijas sistēmas', 'A1', main_obj);end;

NAM AUT NUM

NAM AUT NUM

5

Page 6: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Data extraction

select A.* from TEXTBOOKS A;

SUB GRO LIT(NAM, AUT, NUM)----------------------------------------------------------------------------------Datu bāzes A1 TYPE_BOOKS(TYPE_BOOK('Datu bāzes tehnoloģija', 'J. Koks', 123), TYPE_BOOK('Lielās datu bāzes', I. Ozols', 126))

Informācijas sistēmas A1 TYPE_BOOKS( TYPE BOOK('Informācijas sistēmas', 'Z.Sakne', 124))

6

Page 7: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Function Table() use for table with object collection

1) object output:

select A.SUB, A.GRO, Value(B)from TEXTBOOKS A, Table(A.LIT) B;

SUB GRO VALUE(B)(NAM, AUT, NUM)--------------------------------------------------------------------------------------------Datu bāzes A1 TYPE_BOOK(

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

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

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

2) relation output:

select A.SUB, A.GRO, B.NAM, B.AUT, B.NUM from TEXTBOOKS A, Table(A.LIT) B;

SUB GRO NAM 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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Collection additional object input LIT

SUB GRO

1. Take collection.

select A.LIT from TEXTBOOKS A

where A.SUB = 'Informācijas sistēmas';

2. Add object to collection.

insert into TABLE(select A.LIT from TEXTBOOKS A

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

+

NAM AUT NUM

NAM AUT NUM

NAM AUT NUM

NAM AUT NUM

NAM AUT NUM

NAM AUT NUM

8

Page 9: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Result checkup

select A.SUB, A.GRO, A.LITfrom TEXTBOOKS A where A.SUB = 'Informācijas sistēmas';

SUB GRO LIT(NAM, AUT, NUM)---------------------------------------------------------------------------------Informācijas sistēmas A1 TYPE_BOOKS(

TYPE_BOOK('IS analīze', 'P. Sakne', 130))

9

Page 10: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

Collection object update

IZM_LIT

SUB GRO

update TABLE(select A.LIT from TEXTBOOKS A where A.SUB = 'Informācijas sistēmas') Bset B.AUT = 'D. Klints' where B.NAM = 'IS analīze';

select A.SUB, A.GRO, A.LITfrom TEXTBOOKS A where A.SUB = 'Informācijas sistēmas';

SUB GRO LIT(NAM, AUT, NUM)----------------------------------------------------------------------------------Informācijas sistēmas A1 TYPE_BOOKS(

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

NAM AUT NUM

NAM AUT NUM

10

Page 11: RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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 … · Web view125 Lielās datu bāzes I. Ozols 126 Datu bāzes projektēšana R. Smilga 127 1. Object type definition: create or replace

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