Date Semistructurate, 2012-2013 C12. Oracle / OR (2) Date Semistructurate, 2012-2013.

Slides:



Advertisements
Similar presentations
AS3: XML Cosmin Varlan Cosmin Vârlan 1.
Advertisements

Baze de Date Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.
În general exist ă 2 forme mari de conservare : “in situ” şi “ex situ” 1. Conservarea “ in situ” Aceast ă metod ă de conservare const ă în.
Batalia sexelor O lume dominata de barbati vs o lume dominata de femei.
1 const #define DIMENSIUNE 1000 const int DIMENSIUNE = 1000; Utilizarea valorilor constante este importantă, de exemplu, în declararea tablourilor de date.
Present Perfect Continuous prezentare. schema Afirmativ: S + have/has + been + V-ing… Negativ: S + have/has + not + been + V-ing… Interogativ: have/has.
POSTA ELECTRONICA Ana-Maria Tache Ioana Cristina Ciufu.
-Modelul Entitate-Legatura (ER)-
Februarie 2018 ASE Bucuresti
ACTIVITATEA 1 -,, PROFESOR IT LA PAPI’’
Subinterogări multiple
Subinterogari.
Oracle Academy Lead Adjunct
IntraShip inovatie, flexibilitate, rapiditate.
Funcţii Excel definite de utilizator (FDU) în VBA
Capitolul III PRELUCRAREA DATELOR.
Instrumente CASE Curs nr. 7.
Căutarea şi regăsirea informaţiei.
SOFTWARE Tipuri de software.
Dispozitive de stocare
CREATE, DROP,ALTER INSERT, UPDATE, DELETE
Algoritmi. Structuri de control. Limbajul VBA
Arhitectura serviciilor web
Structura pipeline a unui procesor MIPS
Căutarea şi regăsirea informaţiei.
Paxos Made Simple Autor: Puşcaş Radu George
Curs 4: Prelucrarea datelor în SAS
DATABASE PROGRAMMING.
Template-uri de funcţii. Tratarea excepţiilor
Start laborator 1.
Structura bazei de date MS Access
Reflexia luminii.
CONVERSII INTRE SISTEME DE NUMERATIE
Recapitulare La Logica si argumentare
Programarea Orientată Obiect (POO)
MICROSOFT EXCEL.
Tipuri structurate Tipul tablou
SUBNETAREA.
Programarea calculatoarelor şi limbaje de programare I Capitolul 8
BAZE DE DATE RELATIONALE
Programarea calculatoarelor şi limbaje de programare II Capitolul 3
Web Form BuilDer Coffee Cup.
Modificarea structurii unei tabele
Curs 6: Introducere în programarea SAS
MICROSOFT EXCEL Notiuni introductive
Formatarea paragrafului
Curs 6 Analize parametrice.
Funcții C/C++ continuare
prof. mrd. Negrilescu Nicolae Colegiul National Vlaicu Voda
Biletul la ordin internațional – explicații
INTERNET SERVICII INTERNET.
Mic ghid pentru crearea unei prezentari PowerPoint
PRELUCRARI SPECIFICE TABLOURILOR BIDIMENSIONALE
Eclipsele de soare si de luna
Forms (Formulare).
A great way to create a channel of communication
SUBSTANTE PURE SI AMESTECURI DE SUBSTANTE
Functia de documentare
SOAP -Simple Object Access Protocol-
Configurarea, deployment-ul automat si testarea serviciilor
Programarea in limbajul Java 2004 Lecturer: Gavrila Cristian
Realizarea prezentarilor cu Microsoft PowerPoint
Crearea unei aplicatii Windows Forms simple
Aplicaţii specializate pentru realizarea unei prezentări – PowerPoint
CECUL INTERNAȚIONAL.
Sistemul de control intern managerial
Implementarea listelor simplu inlantuite
Harti de imagini, Cadre, Stiluri
Tabele WEB.
Administrare Oracle 9i Suport de curs
Presentation transcript:

Date Semistructurate, 2012-2013 C12. Oracle / OR (2) Date Semistructurate, 2012-2013

Oracle – object-relational (2) C12. DS Oracle – object-relational (2)

Tip obiect Declarare tip obiect: C12 - DS CREATE [OR REPLACE] TYPE nume {IS | AS} OBJECT [UNDER nume_parinte] ( nume_atribut tip_data [, nume_atribut tip_data] ... [CONSTRUCTOR nume([lista_parametri]) return SELF AS RESULT,] [{MAP | ORDER} MEMBER def_functie,] [[{FINAL | OVERRIDING | NOT INSTANTIABLE}] MEMBER {def_functie | def_procedura} [, [{FINAL | OVERRIDING | NOT INSTANTIABLE}] MEMBER {def_functie | def_procedura}] ...] ) [{FINAL | NOT FINAL}][{INSTANTIABLE | NOT INSTANTIABLE}];

Definire corp tip obiect: C12 - DS Tip obiect Definire corp tip obiect: CREATE [OR REPLACE] TYPE BODY nume {IS | AS} implementare metode definite in partea de specificatii END;

C12 - DS Observatii: Tipul atributelor poate fi un alt tip obiect memorat La definirea unui atribut nu se poate stabili o valoare implicita (clauza DEFAULT), sau restrictii (clauza NOT NULL) Un tip obiect poate sa nu contina metode. Fara metode => o inregistrare Pentru fiecare metoda din partea de specificare trebuie sa exista o implementare in corpul tipului Un tip obiect se poate folosi pentru: declararea unei variabile declararea unui atribut la un tip obiect sau la un record declararea unei coloane dintr-un tabel declararea unei colectii declararea unui parametru la un subprogram declararea rezultatului unei functii definirea unui tabel de obiecte

C12 - DS Observatii: Daca o metoda nu are parametri, atunci la folosirea acesteia sunt necesare parantezele: obiect.metoda() Metodele de acelasi tip (proceduri, respectiv functii) pot fi avea aceasi denumire (=>supraincare) => trebuie ca sa se poata diferentia cele doua metode prin numarul de parametri / prin tipul parametrilor. La implementarea unei metode se poate folosi cuvantul SELF pentru referire la obiectul care se implementeaza. La implementarea metodelor unui tip obiect se pot referi atribute si alte metode fara a folosi calificarea. Doua obiecte (instante ale unui tip obiect) pot fi comparate prin "=" (toate atributele au aceleasi valori) sau prin "<>“ Pentru stergerea unui tip obiect care nu este folosit la o definitie memorata in baza de date se poate folosi instructiunea: DROP TYPE nume; Modificarea unui tip obiect se poate face prin instructiunea ALTER TYPE. Se poate face adaugarea, modificarea, stergerea de atribute, adaugarea, stergerea de metode (vezi CREATE OR REPLACE).

C12 - DS Observatii: Fiecare tip obiect are un constructor implicit cu numele identic cu numele tipului obiect si are ca parametri numele atributelor cu tipurile acestora. Pentru un tip obiect se poate defini si un constructor explicit, care furnizeaza un obiect. Dupa atribuirea de valori pentru atribute (la obiectul SELF), se foloseste instructiunea "RETURN;" pentru a termina functia constructor. Constructorul se apeleaza explicit, nu exista situatii pentru care se face o apelare implicita. O variabila declarata de un tip obiect si care nu a primit o valoare (ne-instantiata) este evaluata la null => eroare daca se incearca atribuirea unei valori unui atribut dintr-o astfel de variabila.

C12 - DS Observatii: Pentru ordonarea obiectelor se poate defini o functie introdusa cu MAP si care are valori de tipul: Date, Number, Char, Varchar2, sau de tipuri sau subtipuri asemanatoare. Aceasta functie se foloseste pentru a compara doua obiecte prin operatori relationali (=, !=, <, <=, >, >=, <>) sau in instructiuni SELECT la clauzele: DISTINCT, GROUP BY, ORDER BY. Functia Map poate fi inlocuita cu o metoda ORDER (la comparatii, la evaluarea instructiunii SELECT - cu variantele descrise mai sus). O astfel de metoda are cel mult doi parametri, primul (optional) care este SELF, iar urmatorul este un parametru de acelasi tip obiect. Valoarea functiei este un numar. Se presupune ca se compara obiectul insusi (SELF) cu obiectul precizat ca parametru pentru aceasta functie. Daca rezultatul este: <0 => Self < obiectul precizat ca parametru =0 => Self = obiectul precizat ca parametru >0 => Self > obiectul precizat ca parametru Un tip obiect poate avea numai una dintre aceste metode. Pentru o ordonare mai rapida se recomanda functia de tip MAP

C12 - DS Mostenirea La definirea unui tip obiect - se poate folosi mostenirea simpla: clauza "UNDER nume_parinte". => Tipul care se creaza va mosteni toate atributele si metodele tipului parinte. Pe langa aceste atribute si metode noul tip de data poate contine atribute si metode suplimentare care pot supraincarca metodele tipului parinte. La definirea unui tip obiect se pot mentiona: NOT FINAL: tipul definit se poate folosi pentru definirea de subtipuri FINAL: din acest tip de data nu se pot face derivari NOT INSTANTIABLE: tipul obiect definit nu se poate instantia, deci nu exista constructor (implicit sau explicit) INSTANTIABLE: tipul obiect definit se poate instantia

Crearea unui tip (memorat in baza de date) C12 - DS Crearea unui tip (memorat in baza de date) (sintaxa pentru tip obiect, colectie vector, colectie tabel; pot fi definite si alte tipuri) CREATE [OR REPLACE] TYPE [schema.]nume_tip {IS | AS} OBJECT ... CREATE [OR REPLACE] TYPE [schema.]nume_tip {IS | AS} VARRAY(dim) OF tip; CREATE [OR REPLACE] TYPE [schema.]nume_tip {IS | AS} TABLE OF tip; Pentru informatii despre tipurile definite de utilizator se pot folosi view-urile sistem: user_types, all_types user_coll_types, all_coll_types

Crearea unui tabel C12 - DS CREATE TABLE nume_tabel ( coloana [, coloana]...[, proprietati_tabel] ) clauze; unde coloana poate fi definita ca: nume_coloana tipScalar | nume_coloana tipObiect | nume_coloana tipColectieVectorSauTable | nume_coloana REF tipObiect Pentru a defini tabel imbricat (pentru coloane de tip table of): clauze = NESTED TABLE nume_coloana STORE AS nume_tabel

Crearea unui tabel. Observatii C12 - DS Crearea unui tabel. Observatii Daca o coloana este de tip colectie: Vector (sau tabel non-nested): Stocat inline, impreuna cu restul datelor din tabel (small) Operatii permise: consultare si suprascriere de valori (in SQL nu se permite utilizarea functiilor / metodelor specifice colectiilor – gen count, first, extend – , sau var_colectie(i)) Table (nested) Stocat in tabele auxiliare (large) Operatii permise: inserare, modificare, stergere de elemente din colectie (nested table)

Tabel de obiecte memorat relational C12 - DS Tabel de obiecte memorat relational CREATE TABLE nume_tabel OF tipObiect => o inregistrare este formata dintr-o instanta de tipObiect

Exemplu TAD, constructori C12 - DS Exemplu TAD, constructori drop type t1; create or replace type t1 as object ( a int, b int, constructor function t1(x int) return self as result ); / create or replace type body t1 as constructor function t1(x int) return self as result is begin self.a:=x; self.b:=0; return; end;

Exemplu TAD, functii MAP (definire) C12 - DS Exemplu TAD, functii MAP (definire) drop type t1; create or replace type t1 as object ( a int, b int, map member function map_t1 return int ); / create or replace type body t1 as map member function map_t1 return int is begin return self.a; end;

Exemplu TAD, functii MAP (utilizare) (1) C12 - DS Exemplu TAD, functii MAP (utilizare) (1) set serveroutput on; declare o1 t1; o2 t1; begin dbms_output.enable; o1:=t1(5, 10); o2:=t1(5, 20); dbms_output.put_line(o1.a); dbms_output.put_line(o1.b); dbms_output.put_line(o2.a); dbms_output.put_line(o2.b); dbms_output.put_line(o1.map_t1()); if o1 = o2 then dbms_output.put_line('egale'); else dbms_output.put_line('diferite'); end if; end;

Exemplu TAD, functii MAP (utilizare) (2) C12 - DS Exemplu TAD, functii MAP (utilizare) (2) create table tt1(id int, o t1); insert into tt1 values (1, t1(10, 10)); insert into tt1 values (2, t1(20, 20)); insert into tt1 values (3, t1(5, 5)); insert into tt1 values (4, t1(15, 15)); insert into tt1 values (5, t1(40, 40)); select * from tt1 order by o;

Exemple TAD; OR C12 - DS drop type TLocalitate; create or replace type TLocalitate as object ( loc varchar2(10), nr int, jud varchar2(2) ) ; /

C12 - DS drop type TPersoana; create or replace type TPersoana as object ( nume varchar2(20), prenume varchar2(20), member function nume_pers return varchar2 ) not final ; / create or replace type body TPersoana as member function nume_pers return varchar2 is numeintreg varchar2(40); begin numeintreg:=(self.prenume || self.nume); return numeintreg; end;

C12 - DS drop type TEditor; create or replace type TEditor under TPersoana ( rating int ) ; / drop type TCapitol; create or replace type TCapitol as object numar int, titlu varchar2(50), nrpagini int

C12 - DS drop type TTipografie; create or replace type TTipografie as object ( cod int, denumire varchar2(50), locatie TLocalitate ) ; / create or replace type CVAutori as varray(10) of varchar2(20); create or replace type CTCapitole as table of TCapitol;

C12 - DS create table TBTipografii of TTipografie; create table TBCarti ( idc int, titlu varchar2(100), autori CVAutori, edt TEditor, capitole CTCapitole, tipografia ref TTipografie ) nested table capitole store as tab_cap;

C12 - DS declare t TTipografie; begin t:=TTipografie(101, 'tip1', TLocalitate('cluj', 22, 'CJ')); insert into TBTipografii values (t); insert into TBTipografii values ( TTipografie(102, 'tip2', TLocalitate('bistrita', 11, 'BN')) ); end;

C12 - DS select * from TBTipografii; select value(t) from TBTipografii t;

C12 - DS select TTipografie(cod, denumire, locatie) from TBTipografii; select TTipografie( 1, 'denumire', TLocalitate('loc', 1, 'cj')) from dual;

C12 - DS select denumire, locatie from TBTipografii; select tt.v.denumire, tt.v.locatie from (select value(t) as v from TBTipografii t) tt;

C12 - DS insert into TBTipografii values (TTipografie(105, 'denumire', TLocalitate('loc', 1, 'cj'))); update TBTipografii set denumire = 'den noua' where cod = 105; delete from TBTipografii where cod = 105;

C12 - DS insert into TBCarti select 51, 'Poezii', CVAutori('Eminescu', 'Cosbuc'), TEditor('Editorul', 'Geo', 4), CTCapitole(TCapitol(1, 'Introducere', 10), TCapitol(2, 'Poezii de dor', 30), TCapitol(3, 'Poezii de seara', 20)), ref(tp) from TBTipografii tp where cod = 101

C12 - DS select * from TBCarti;

C12 - DS select t.titlu, t.edt.nume_pers() as editor from TBCarti t;

C12 - DS select t.idc, t.titlu, t.autori, t.capitole, deref(tipografia) from TBCarti t;

C12 - DS update TBCarti set tipografia = ( select ref(tp) from TBTipografii tp where cod = 101) where idc = 54; set autori = CVAutori('Andreica', 'Sterca')

C12 - DS select autori, tipografia from TBCarti where idc = 54;

C12 - DS select capitole from TBCarti where idc = 54; (vezi slide 29) from table(select capitole from TBCarti where idc = 54) t; (table sau the)

C12 - DS select t.idc, t.titlu, t.autori, t.edt.nume_pers(), tt.* from TBCarti t, table(t.capitole) tt; (=> format flat)

C12 - DS select t.idc, t.titlu, ta.*, t.edt.nume_pers(), tc.* from TBCarti t, table(t.autori) ta, table(t.capitole) tc;

C12 - DS insert into table(select t.capitole from TBCarti t where idc = 54) tc values (TCapitol(6, 'Bibliografie', 2));

C12 - DS update table(select t.capitole from TBCarti t where idc = 54) tc set nrpagini = nrpagini + 1 where numar = 3;

C12 - DS delete from table(select t.capitole from TBCarti t where idc = 54) tc where numar = 4;

C12 - DS select t.idc, t.titlu, (select count(*) from table( select capitole from TBCarti t1 where t1.idc = t.idc)) cnt, (select max(nrpagini) where t1.idc = t.idc)) max from TBCarti t; select t.idc, t.titlu, count(*), max(nrpagini) from TBCarti t, table(t.capitole) tc group by t.idc, t.titlu;

C12 - DS select t.idc, t.titlu, cardinality(capitole) from TBCarti t;

Multiset, union, intersect, except: C12 - DS Multiset, union, intersect, except: create table TBCapitole (idcap int, cap TCapitol); select cast(multiset( select cap from TBCapitole where idcap in (1, 3, 4) ) as CTCapitole) from dual; select (select capitole from TBCarti where idc = 51) multiset union (select capitole from TBCarti where idc = 54)

C12 - DS update TBCarti set capitole = ( select (select capitole from TBCarti where idc = 51) multiset union (select cast(multiset( select * from table( select capitole from TBCarti where idc = 54) where numar in (5, 6)) as CTCapitole) from dual) where idc = 53;

C12 - DS Next 13 Modelare XML