A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Conceitos de SGBD Objeto-Relacional Oracle 10g [2] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina.

Apresentações semelhantes


Apresentação em tema: "Conceitos de SGBD Objeto-Relacional Oracle 10g [2] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina."— Transcrição da apresentação:

1 Conceitos de SGBD Objeto-Relacional Oracle 10g [2] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina

2 Aula e Script www/~dsrm/gdi

3 Caso de estudo 3

4 Roteiro ▫INSERTS e SELECT ▫Outros Operadores importantes ▫Herança e Funções ▫Coleções de coleções

5 Exercício 1.Realizar INSERT em todas as tabelas 1.Cliente_tab 2.ItemEstoque_tab 3.Pedido_tab 2.Realizar SELECTs 1.Ver script!

6 © CIn/UFPE 6 4/25/20154/25/20154/25/2015 Predicados úteis com objetos VALUE REF DREF

7 © CIn/UFPE 7 4/25/20154/25/20154/25/2015 Operador VALUE VALUE - Retorna instância da object table ou object view select value(c) from cliente_tab c where c.idcliente = 1;

8 © CIn/UFPE 8 4/25/20154/25/20154/25/2015 Tipo REF REF - Retorna referência OID(object id) a uma instância da object table Um objeto do tipo REF encapsula uma referência para um “row object” de um tipo de objeto especificado; O valor de um objeto do tipo REF é um “ponteiro lógico” para um row object. Select ref(s) from itemestoque_tab s where s.idEstoque = 1004;

9 © CIn/UFPE 9 4/25/20154/25/20154/25/2015 Tipo DREF DEREF - Retorna instância de objeto correspondente ao REF O operador DEREF executa a função oposta de REF — recebe um valor de referência e retorna o valor de um “row object”. O DEREF toma como argumento o OID gerado para uma referência. SELECT DEREF(p.Cliente_ref), p.entregarNoEndereco_obj, p.idPedido, item_ntab FROM Pedido_tab p WHERE p.idPedido = 1001 ;

10 © CIn/UFPE 10 4/25/2015 Herança Apenas herança simples é permitida no ORACLE Controle do usuário sobre a definição de tipos e métodos “herdáveis” - FINAL e NOT FINAL

11 © CIn/UFPE 11 4/25/20154/25/20154/25/2015 Herança Tipos de objetos abstratos CREATE TYPE AS OBJECT(...) NOT INSTANTIABLE; Para permitir que um tipo possa ter subtipos, este deve ser definido como NOT FINAL CREATE TYPE AS OBJECT(... ) NOT FINAL;

12 © CIn/UFPE 12 4/25/20154/25/20154/25/2015 Herança Métodos FINAL e NOT FINAL Para permitir que um método não possa ser sobrescrito nos subtipos, este deve ser definido como FINAL Por padrão, um método é definido como NOT FINAL CREATE TYPE AS OBJECT( FINAL MEMBER FUNCTION RETURN... ) NOT FINAL;

13 © CIn/UFPE 13 4/25/20154/25/20154/25/2015 Herança Criando Subtipos CREATE TYPE UNDER ( );

14 © CIn/UFPE 14 4/25/20154/25/20154/25/2015 Exemplo Dada a situação Pessoa Aluno Definir tipos usando herança

15 © CIn/UFPE 15 4/25/2015 Exercício 3 – Criação de Tipos CREATE TYPE T_PESSOA AS OBJECT( NOME VARCHAR2(30), TELEFONE VARCHAR2(20), DATA_NASCIMENTO DATE ) NOT FINAL NOT INSTANTIABLE; CREATE TYPE T_ALUNO UNDER T_PESSOA( MATRICULA INTEGER ) FINAL;

16 © CIn/UFPE 16 4/25/2015 Exercício 3 – Criação de Tabela, Inserção de Dados e Consulta CREATE TABLE ALU_TABLE OF T_ALUNO( MATRICULA PRIMARY KEY ); INSERT INTO ALU_TABLE VALUES(T_ALUNO('Maria Bonita','21268430', to_date('20/01/1980','dd/mm/yyyy'),45));

17 © CIn/UFPE 17 4/25/20154/25/20154/25/2015 Métodos Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de Métodos ▫Member Method ▫Static Method ▫Constructor Method ▫Comparison Methods

18 © CIn/UFPE 18 4/25/20154/25/20154/25/2015 Member Method Métodos que possuem acesso aos dados da instância do objeto Self - representa a instância do tipo no qual o método é atualmente chamado Na declaração de um tipo são definidas as assinaturas dos métodos O corpo dos métodos deve ser criado em alguma linguagem de programação (PL/SQL, Java, C++)

19 © CIn/UFPE 19 4/25/20154/25/20154/25/2015 Exemplo CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30), TELEFONE VARCHAR2(20), MEMBER FUNCTION GET_NOME RETURN VARCHAR ); CREATE OR REPLACE TYPE BODY T_PESSOA AS MEMBER FUNCTION GET_NOME RETURN VARCHAR IS BEGIN RETURN SELF.NOME; END GET_NOME; END;

20 © CIn/UFPE 20 4/25/20154/25/20154/25/2015 Static Method Método de Classe Trabalham com dados globais do tipo do objeto e não com a instância (não usam a palavra-chave SELF) As chamadas são realizadas na forma TIPO.METODO()

21 © CIn/UFPE 21 4/25/2015 Exemplo CREATE TYPE T_PESSOA AS OBJECT( NOME VARCHAR2(30), TELEFONE VARCHAR2(20), DATA_NASCIMENTO DATE,... STATIC FUNCTION PESSOA_MAIS_VELHA RETURN T_PESSOA,... );

22 © CIn/UFPE 22 4/25/20154/25/20154/25/2015 Constructor Method Método que cria uma nova instância para o objeto, atribuindo valores aos seus atributos Todo object type possui um método construtor, que é implícito e definido pelo sistema O nome do método construtor é o mesmo do object type

23 © CIn/UFPE 23 4/25/2015 Exemplo CREATE TYPE Customer_typ AS OBJECT ( id NUMBER, name VARCHAR2(20), phone VARCHAR2(30) ); cust = Customer_typ(103, 'Ravi', '555-1212')

24 © CIn/UFPE 24 4/25/20154/25/20154/25/2015 Comparison Methods Valores de tipos de dados primitivos como CHAR ou REAL possuem uma ordem predefinida, permitindo compará-los Object type possui múltiplos atributos de diferentes tipos de dados, não possuindo um eixo definido de comparação ▫ Map method ▫ Order method

25 © CIn/UFPE 25 4/25/20154/25/20154/25/2015 Map Method Permite comparar objetos, mapeando as instâncias dos objetos em um dos tipos escalares DATE, NUMBER, VARCHAR2 CREATE TYPE Retangulo_tipo AS OBJECT ( larg NUMBER, comp NUMBER, MAP MEMBER FUNCTION area RETURN NUMBER );

26 © CIn/UFPE 26 4/25/2015 Map Method CREATE TYPE BODY Retangulo_tipo AS MAP MEMBER FUNCTION area RETURN NUMBER IS BEGIN RETURN larg * comp; END area; END;

27 © CIn/UFPE 27 4/25/20154/25/20154/25/2015 Order Method Realiza comparações object-to-object É função que possui um parâmetro declarado para outro objeto do mesmo tipo e retorna ▫< 0, caso o objeto SELF seja menor que o objeto passado como argumento ▫ 0, caso sejam iguais ▫ > 0, caso o objeto SELF seja maior que o objeto passado como argumento Um object type pode declarar apenas um Order Method

28 © CIn/UFPE 28 4/25/20154/25/20154/25/2015 Coleções Multi-nível Coleção que possui como elementos uma outra coleção de dados ▫Tipo Nested Table de Nested Table ▫Tipo Nested Table de Varray ▫Tipo Varray de Nested Table ▫....

29 © CIn/UFPE 29 4/25/2015 Exercício 1 TurmaAluno Professor 1n 1 n

30 © CIn/UFPE 30 4/25/20154/25/20154/25/2015 Exercício 1 – Criação de Tipos Definindo um tipo Nested Table de um tipo que possui um atributo nested table CREATE TYPE PROFESSOR_TYPE AS OBJECT ( NOME VARCHAR2(15), DISCIPLINA VARCHAR2(15) ); CREATE TYPE NT_PROF_T AS TABLE OF PROFESSOR_TYPE;

31 © CIn/UFPE 31 4/25/2015 Exercício 1 – Criação de Tipos CREATE TYPE ALUNO_TYPE AS OBJECT( MATRICULA NUMBER, PROFESSORES NT_PROF_T ); CREATE TYPE NT_ALUNO_T AS TABLE OF ALUNO_TYPE; CREATE TYPE TURMA_TYPE AS OBJECT ( CODIGO VARCHAR2(3), SALA VARCHAR2(3), ALUNOS NT_ALUNO_T ); NESTED TABLE

32 © CIn/UFPE 32 4/25/2015 Exercício 1 – Criação de Tabelas CREATE TABLE TURMA_TAB OF TURMA_TYPE ( CODIGO PRIMARY KEY) NESTED TABLE ALUNOS STORE AS ALUNOS_T (NESTED TABLE PROFESSORES STORE AS PROF_T);

33 © CIn/UFPE 33 4/25/2015 Exercício 1 – Inserção de dados INSERT INTO TURMA_TAB VALUES ('I5A', 'S9', NT_ALUNO_T( ALUNO_TYPE( 210141500, NT_PROF_T( PROFESSOR_TYPE('Fernando','GDI'), PROFESSOR_TYPE('Hermano','PD') ) ),

34 © CIn/UFPE 34 4/25/2015 Exercício 1 – Inserção de dados ALUNO_TYPE( 210141750, NT_PROF_T( PROFESSOR_TYPE('Silvio','HFC'), PROFESSOR_TYPE('Hermano','PLP') ) );

35 © CIn/UFPE 35 4/25/2015 Exercício 1 – Inserção de dados INSERT INTO TABLE( SELECT A.PROFESSORES FROM TABLE( SELECT T.ALUNOS FROM TURMA_TAB T WHERE T.CODIGO = 'I5A') A WHERE A.MATRICULA = 210141750) VALUES ('Ruy','IT');

36 © CIn/UFPE 36 4/25/2015 Exercício 1 – Atualização UPDATE TABLE( SELECT A.PROFESSORES FROM TABLE( SELECT T.ALUNOS FROM TURMA_TAB T WHERE T.CODIGO = 'I5A') A WHERE A.MATRICULA = 210141500) P SET VALUE(P)= PROFESSOR_TYPE('Jacques','PD') WHERE P.DISCIPLINA='PD';

37 © CIn/UFPE 37 4/25/2015 Exercício 1 – Consulta SELECT P.NOME, P.DISCIPLINA FROM TURMA_TAB T, TABLE(T.ALUNOS) A, TABLE(A.PROFESSORES) P;

38 Referências www.cin.ufpe.br/~if685 http://disciplinas.lia.ufc.br/bdnc061/ http://download- east.oracle.com/docs/cd/B19306_01/appdev.10 2/b14260/adobjxmp.htmhttp://download- east.oracle.com/docs/cd/B19306_01 R. Elmasri & S. Navathe – Sistemas de Banco de Dados, Addison Wesley, 2005, 4ª edição.


Carregar ppt "Conceitos de SGBD Objeto-Relacional Oracle 10g [2] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina."

Apresentações semelhantes


Anúncios Google