1. Konstruktora metodes pielietošana Web viewDarbs tiek pildīts ar Ortus.rtu.lv piedāvāto...

48
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķo datorsistēmu institūts 2.praktiskais darbs mācību priekšmetā “Lielu datu bāzu tehnoloģija” Izstrādāja: Mārtiņš Dermanis 3.kurss, 4. grupa, 121RDB505 1

Transcript of 1. Konstruktora metodes pielietošana Web viewDarbs tiek pildīts ar Ortus.rtu.lv piedāvāto...

RGAS TEHNISK UNIVERSITTE

Datorzintnes un informcijas tehnoloijas fakultte

Lietio datorsistmu institts

2.praktiskais darbs

mcbu priekmet

Lielu datu bzu tehnoloija

Izstrdja: Mrti Dermanis

3.kurss, 4. grupa, 121RDB505

2014./15. mc. gads

Contents1. Konstruktora metodes pielietoana32. Metodes MAP izmantoana63. ORDER metodes pielietoana94. Member metodes lietoana bez kursora115. Member metodes lietoana ar kursoru156. Metou mantoana197. Metou izveidoana un izmantoana objektu skatam228. Programmu paketes izmantoanas priekrocbu demonstrana objektu metou veidoan28Augstkas saretbas metodes veidoana ar paketes paldzbu329. Secinjumi3710. Lietot literatra38

1. Konstruktora metodes pielietoana

Darbs tiek pildts ar Ortus.rtu.lv piedvto Oracle SQL Developer. Veidou objektu tipu, kas apraksta programmu. Taj iekauu atribtus Ident_numurs k identifikcijas numurs programmai, Nosaukums, kas ir programmas nosaukums, Klasifikacija, kas ir programmas funkcijas tips, piemram, draiveris, Izmers_MB, kas apraksta bra programmas izmru megabaitos (var bt 0, ja programma ir plnoanas fz un nav vl skta programmana. Varu piebilst, ka 30. oktobr, kad veidoju pirmo dau darba, RTU datubze cieta no periodiskm savienojuma aizvranas problmm, td daa ievadto datu var pazust, ja ts netiek saglabtas savienojuma prtraukanas d.

Darb pielietoju daudzus prveidotus uz KOMANDA objektu tipa balsttus objektus, k ar mantoan izveidotos hierarhiskos objektu tipus no pagju uzdevuma. Katram uzdevumam tiek veidots savs datu tips (pat ja tas tehniski ir viends), lai tos vartu vieglk prbaudt. Tipu izveide tiek pardta, td nebs nepiecieams meklt informciju pagju darba aprakst.

create or replace type PROGRAM_konstr as object (

Ident_numurs number(3,0),

Nosaukums varchar2(30),

Klasifikacija varchar2(30),

Izmers_MB number(7,2),

constructor function PROGRAM_konstr(Ident_numurs number, Klasifikacija varchar2) return SELF as result,

constructor function PROGRAM_konstr(Ident_numurs number, Nosaukums varchar2, Klasifikacija varchar2) return SELF as result);

K redzams, pirmais konstruktors veidos objektu, ja, veidojot objektu, tiks ievadts viens skaitlis un viens vrds, bet otrais, ja, veidojot objektu, tiks ievadts viens skaitlis un divi vrdi. Tlk definu k s ievadts vrtbas tiks izmantotas, veidojot objektu.

create or replace

type body PROGRAM_konstr as

constructor function PROGRAM_konstr(Ident_numurs number, Klasifikacija varchar2)

return SELF as result is

begin

SELF.Ident_numurs := Ident_numurs;

SELF.Klasifikacija := Klasifikacija;

return;

end;

constructor function PROGRAM_konstr(Ident_numurs number, Nosaukums varchar2, Klasifikacija varchar2)

return SELF as result is

begin

SELF.Ident_numurs := Ident_numurs;

SELF.Nosaukums := Nosaukums;

SELF.Klasifikacija := Klasifikacija;

SELF.Izmers_MB := '0';

return;

end;

end;

Pirmais konstruktors veidos objektus, kuros ir nordtas tikai programmas identifikcijas numura un ts klasifikcijas atribtu vrtbas. Ja programma ir td izstrdes fz, kur tai pat vl nav dots nosaukums, var izmantot o konstruktoru. aj gadjum gan IZMERS_MB, gan Nosaukums atribtu vrtbas ir NULL.

Otrais konstruktors veidos objektus programmm, kurm ir nordts ar nosaukums, bet vl nav veikta nekda programmana, ldz ar to ts to izmrs ir 0 megabaiti. T viet, lai IZMERS_DB atribtam pieirtu NULL vrtbu, pieru katram ar du konstruktoru izveidotam objektam atribtam IZMERS_DB vrtbu 0.

Ttad ar konstruktora metodi var noteiktas objektu atribtu vrtbas vispr nedefint, vai tm pieirt kdu noklusjuma vrtbu.

Tlk veiku izveidot objekta prbaudi no skuma radot rindas objektu tabulu.

create table PROGRAMS_KONSTR of PROGRAM_KONSTR;

Taj ievadu vrtbas izmantojot abas konstruktora funkcijas un parastu objekta datu ievadi.

insert into PROGRAMS_KONSTR values

(PROGRAM_KONSTR('1','Draiveris'));

insert into PROGRAMS_KONSTR values

(PROGRAM_KONSTR('2','Kmtis','Datorsple'));

insert into PROGRAMS_KONSTR values

(PROGRAM_KONSTR('3','Ziegotjs','Opertjsistma','1350'));

Izgu datus par izveidoto tabulu.

select value(P) from Programs_Konstr P;

K redzams, pirmais konstruktors izveidoja objektu, kur diviem atribtiem ir NULL vrtbas, un otrais konstruktors izveidoja objektu, kur noklusjuma vrtba programmas izmram ir 0. Ttad izstrdts konstruktora metodes funkcijas strd.

2. Metodes MAP izmantoana

MAP metode tiek lietota, lai krtotu objektus pc kda uz to atribtiem balstta skalra novrtjuma. Izveidou tabulu KOMANDA_MAP, kas ldzgi k iepriekj darb nords komandas nosaukumu, ts pabeigts un nepabeigts programmas.

create or replace type KOMANDA_MAP as object(

KOM_Nosaukums varchar2(30),

Pabeigtas_Progr PROGRAMS,

Nepabeigtas_Progr PROGRAMS,

MAP member function SKAITS return number);

PROGRAMS objektu rindu tabulas apraksto objektu tipa PROGRAM definjums (izveidots pagjuaj darb):

create or replace type PROGRAM as object (

Ident_numurs number(3,0),

Nosaukums varchar2(30),

Klasifikacija varchar2(30)

);

Tlk definu novrtjuma funkciju:

create or replace type body KOMANDA_MAP AS

MAP member function SKAITS return number is

begin

return (CARDINALITY(SELF.Pabeigtas_Progr)+ CARDINALITY(SELF.Nepabeigtas_Progr));

end SKAITS;

end;

K redzams, novrtanas funkcija ir pabeigto un nepabeigto programmu kopjais skaits.

Izveidou tabulu tipa objektiem.

create table KOMANDAS_MAP of KOMANDA_MAP

nested table Pabeigtas_Progr store as PAB_PROG1

nested table Nepabeigtas_Progr store as NEPAB_PROG1;

Tlk ievadu datus, kurus iepriek izmantoju pagjuaj darb.

INSERT INTO KOMANDAS_MAP values('Bri Lauvas',

PROGRAMS(

PROGRAM('1', 'Zumba','Datorsple'),

PROGRAM('2', 'Klints','Draiveris'),

PROGRAM('3', 'Plts','Reistra trtjs')),

PROGRAMS(

PROGRAM('4', 'Henrihs','Draiveris'),

PROGRAM('5', 'Astarofs','Datorsple')));

INSERT INTO KOMANDAS_MAP values('ZvirBui',

PROGRAMS(PROGRAM('6', 'Kakis','Raeu vadbas sistma'),

PROGRAM('7', 'Smits','Opertjsistma'),

PROGRAM('2', 'Klints','Draiveris')),

PROGRAMS(PROGRAM('8', 'Pienenes','Datorsple')));

INSERT INTO KOMANDAS_MAP values('Doniji',

PROGRAMS(

PROGRAM('1', 'Zumba','Datorsple'),

PROGRAM('2', 'Klints','Draiveris')),

PROGRAMS(

PROGRAM('5', 'Astarofs','Datorsple')));

No skuma apskatu identifikatorus, kurus pati datubze ir piekrtojusi iem ierakstiem.

Tlk apskatu, kas notiek, ja komandas krto pc iepriek izveidots novrtjuma funkcijas augo secb.

select VALUE(K) from KOMANDAS_MAP K order by VALUE(K).SKAITS() ASC;

K redzams, komandu objekti nav td pa krtb, k tos krtoja datubze. Ttad krtoanas funkcija strd. Doniji komanda kopum apstrdja 3 programmas, ZvirBui 4, un Bri Lauvas 5. T k objekti tika krtoti augo secb iegtais rezultts ir pareizs.

3. ORDER metodes pielietoana

Ldzgi k iepriekj metod, ar s metodes mris ir saldzint objektus, bet, atirb no MAP metodes, ORDER metod objekti tiek saldzinti nevis visi savstarpji, bet gan tiei ar kdu noteiktu objektu. Izveidou KOMANDA_ORDER objektu tipu.

create or replace type KOMANDA_ORDER as object(

KOM_Nosaukums varchar2(30),

Pabeigtas_Progr PROGRAMS,

Nepabeigtas_Progr PROGRAMS,

ORDER member function SKAITS(targ KOMANDA_ORDER) return number);

Ldzgi k iepriekj metod, tlk definu k objekti tiek saldzinti.

create or replace type body KOMANDA_ORDER as

ORDER member function SKAITS(targ KOMANDA_ORDER) return number is

begin

if (CARDINALITY(SELF.Pabeigtas_Progr)+CARDINALITY(SELF.Nepabeigtas_Progr)) > (CARDINALITY(targ.Pabeigtas_Progr)+CARDINALITY(targ.Nepabeigtas_Progr)) then return 1;

elsif (CARDINALITY(SELF.Pabeigtas_Progr)+CARDINALITY(SELF.Nepabeigtas_Progr)) < (CARDINALITY(targ.Pabeigtas_Progr)+CARDINALITY(targ.Nepabeigtas_Progr)) then return -1;

else return 0;

end if;

end SKAITS;

end;

Ja programmu kopjais skaits komandas objektam ir lielks par programmu skaitu objektam, ar kuru notiek saldzinana, tiek pieirta vrtba 1, bet pretj gadjum pieirt -1. Ja skaits ir viends, order metodes atribtam pieir vrtbu 0.

Izveidou tabulu un ievietou taj vrtbas tpat, k pagjuaj metod.

create table KOMANDAS_ORDER of KOMANDA_ORDER

nested table Pabeigtas_Progr store as PAB_PROG3

nested table Nepabeigtas_Progr store as NEPAB_PROG3;

INSERT INTO KOMANDAS_ORDER values('Bri Lauvas',

PROGRAMS(

PROGRAM('1', 'Zumba','Datorsple'),

PROGRAM('2', 'Klints','Draiveris'),

PROGRAM('3', 'Plts','Reistra trtjs')),

PROGRAMS(

PROGRAM('4', 'Henrihs','Draiveris'),

PROGRAM('5', 'Astarofs','Datorsple')));

INSERT INTO KOMANDAS_ORDER values('ZvirBui',

PROGRAMS(PROGRAM('6', 'Kakis','Raeu vadbas sistma'),

PROGRAM('7', 'Smits','Opertjsistma'),

PROGRAM('2', 'Klints','Draiveris')),

PROGRAMS(PROGRAM('8', 'Pienenes','Datorsple')));

INSERT INTO KOMANDAS_ORDER values('Doniji',

PROGRAMS(

PROGRAM('1', 'Zumba','Datorsple'),

PROGRAM('2', 'Klints','Draiveris')),

PROGRAMS(

PROGRAM('5', 'Astarofs','Datorsple')));

Tlk veiksim datu izvadi izpildot OR