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

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

Conceitos de SGBD Objeto-Relacional Oracle 10g [2]

Apresentações semelhantes


Apresentação em tema: "Conceitos de SGBD Objeto-Relacional Oracle 10g [2]"— Transcrição da apresentação:

1 Conceitos de SGBD Objeto-Relacional Oracle 10g [2]

2 Métodos

3 Métodos Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison (Map e Order)

4 Member Function 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++)

5 Exemplo CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30),
TELEFONE VARCHAR2(20), IDADE NUMBER(2), MEMBER FUNCTION GET_IDADE_PLUS RETURN NUMBER ); CREATE OR REPLACE TYPE BODY T_PESSOA AS MEMBER FUNCTION GET_IDADE_PLUS (INC NUMBER) RETURN NUMBER IS BEGIN RETURN SELF.IDADE + INC; END GET_IDADE_PLUS; END;

6 Constructor Method Método que cria uma nova instância para o objeto, atribuindo valores aos seus atributos. Trabalha com dados globais do tipo de objeto e não com a instância (não se utiliza a palavra-chave SELF) 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

7 Exemplo CREATE TYPE Customer_typ AS OBJECT ( id NUMBER,
name VARCHAR2(20), phone VARCHAR2(30) ); cust = Customer_typ(103, 'Ravi', ' ')

8 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 Order

9 Map Method Permite comparar objetos, mapeando as instâncias dos objeto sem um dos tipos escalares DATE, NUMBER, VARCHAR2

10 Exemplo CREATE TYPE Retangulo_tipo AS OBJECT ( larg NUMBER,
comp NUMBER, MAP MEMBER FUNCTION area RETURN NUMBER ); CREATE TYPE BODY Retangulo_tipo AS MAP MEMBER FUNCTION area RETURN NUMBER IS BEGIN RETURN larg * comp; END area; END;

11 Order Function 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

12 Manipulação de Consultas

13 Comando 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.

14 Comando REF (exemplo) Cadastre um sócio no banco e a relacione com o endereço cujo código é 1, supondo que o endereço foi criado previamente. INSERT INTO endereco (codigo_end, rua, cep, numero, bairro) VALUES (1,'a','123',2222,'espinheiro'); INSERT INTO socio (codigo, rg, nome, ref_endereco, tipo_socio, datacadastro)VALUES ( ,' ','coxinha', (select REF(e) from endereco e where e.codigo_end = 1),'titular',to_date('14/08/1986','dd/mm/yyyy'));

15 Comando REF (exercício)
Selecionar todos os atributos de endereço que possuem alguma relação com sócio

16 Comando 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.

17 Comando DREF (exemplo)
Faça uma consulta que retorno o endereço do socio com codigo select DEREF(s.ref_endereco) from socio s where s.codigo = ;

18 Comando DREF (exercício)
Mostre todas as informações do endereço cujo código está associado ao sócio com rg igual a

19 SELECT * FROM socio s WHERE s.ref_endereco IS DANGLING;
Comando Dangling Verifica a validade de uma referência Exemplo: Mostre todos os socios que possuem endereços com referências inválidas. SELECT * FROM socio s WHERE s.ref_endereco IS DANGLING;

20 Comando Dangling (exercício)
Mostre todos os sócios que possuem endereços válidos e que moram no espinheiro.

21 Comando WITH ROWID Melhor desempenho, pois fornece acesso direto ao objeto Exemplo: Tabela tb_socio_exemplo com referencia a endereço create table tb_socio_exemplo of tp_socio( codigo primary key, nome not null, ref_endereco with rowid references endereco );

22 Comando WITH ROWID (exercício)
Faça uma inserção na tabela acima com um endereço válido. Após a inserção tente remover o endereço.

23 Coleções de coleções

24 Coleção de coleções - Nested com nested
TURMA 1 n ALUNO PROFESSOR 1 n

25 Coleção de coleções - Nested com nested
CREATE TYPE PROFESSOR_TYPE AS OBJECT ( NOME VARCHAR2(15), DISCIPLINA VARCHAR2(15) ); //Nested professor_type que será um atributo da tabela //aluno CREATE TYPE NT_PROF_T AS TABLE OF PROFESSOR_TYPE;

26 Coleção de coleções - Nested com nested
//Type aluno possue um conjunto de professores CREATE TYPE ALUNO_TYPE AS OBJECT( MATRICULA NUMBER, PROFESSORES NT_PROF_T ); //Nested de aluno, o qual já possue um conjunto como //atributo CREATE TYPE NT_ALUNO_T AS TABLE OF ALUNO_TYPE;

27 Coleção de coleções - Nested com nested
CREATE TYPE TURMA_TYPE AS OBJECT ( CODIGO VARCHAR2(3), SALA VARCHAR2(3), ALUNOS NT_ALUNO_T ); CREATE TABLE TURMA_TAB OF TURMA_TYPE ( CODIGO PRIMARY KEY ) NESTED TABLE ALUNOS STORE AS ALUNOS_T (NESTED TABLE PROFESSORES STORE AS PROF_T);

28 Coleção de coleções - Nested com nested
Sintaxe para inserção de aluno e professor INSERT INTO TURMA_TAB VALUES ('I5A', ‘D005', NT_ALUNO_T( ALUNO_TYPE( , NT_PROF_T( PROFESSOR_TYPE(‘Manoel',‘Sistemas Digitais'), PROFESSOR_TYPE(‘Ruy',‘Logica') ) ),

29 Coleção de coleções - Nested com nested
Sintaxe para inserção de aluno e professor (continuação) ALUNO_TYPE( , NT_PROF_T( PROFESSOR_TYPE('Silvio','HFC'), PROFESSOR_TYPE('Hermano','PLP') ) )--nt_aluno_t );--insert

30 Coleção de coleções - Nested com nested
Sintaxe para inserção apenas de professor INSERT INTO TABLE( SELECT A.PROFESSORES FROM TABLE ( SELECT FROM TURMA_TAB T WHERE T.CODT.ALUNOS IGO = 'I5A‘ ) A WHERE A.MATRICULA = ) VALUES (‘Fernando’,’GDI’);

31 Coleção de coleções - Nested com nested
Atualizando o professor da disciplina Projetão (PD). UPDATE TABLE( SELECT A.PROFESSORES FROM TABLE( SELECT T.ALUNOS FROM TURMA_TAB T WHERE T.CODIGO = 'I5A‘ ) A WHERE A.MATRICULA = ) P SET VALUE(P)= PROFESSOR_TYPE('Jacques','PD') WHERE P.DISCIPLINA='PD';

32 Coleção de coleções - Nested com nested
Consulta em tabela aninhada SELECT P.NOME, P.DISCIPLINA FROM TURMA_TAB T, TABLE(T.ALUNOS) A, TABLE(A.PROFESSORES) P WHERE T.CODIGO = ‘I5A’ ;

33 Coleção de coleções - Nested com varray
ALUNO 1 matricula n PROFESSOR telefone nome diciplina

34 Coleção de coleções - Nested com varray
Types

35 Coleção de coleções - Nested com varray
Table CREATE TABLE tb_aluno OF aluno_tp ( CONSTRAINT pk_aluno PRIMARY KEY (matricula) ) NESTED TABLE conj_professores STORE AS prof_nt; / commit;

36 Coleção de coleções - Nested com varray
Insert com e sem elementos na nested ;

37 Coleção de coleções - Nested com varray
Consulta

38 Coleção de coleções - Varray com varray
Um computador possui vários componentes; Cada existem várias marcas diferentes para um componente; Cada marca possui um preço diferente por componente. CREATE OR REPLACE TYPE tp_marca AS OBJECT ( nome VARCHAR2(20), preco NUMBER); / CREATE OR REPLACE TYPE vr_marca AS VARRAY(10) OF tp_marca; CREATE OR REPLACE TYPE tp_componente AS OBJECT ( descricao VARCHAR2(40), marcas vr_marca); CREATE OR REPLACE TYPE vr_componente AS VARRAY(30) OF tp_componente; CREATE OR REPLACE TYPE tp_computador AS OBJECT ( descricao VARCHAR2(50), componentes vr_componente ); CREATE TABLE tb_computador OF tp_computador(CONSTRAINT pk_computador PRIMARY KEY (id));

39 Coleção de coleções - Varray com varray
INSERT INTO tb_computador VALUES( 1, 'Computador ID#1', vr_componente( tp_componente( 'Processador', vr_marca( tp_marca('Intel',1200), tp_marca('AMD', 999) )), tp_componente( 'Placa de Video', vr_marca( tp_marca('NVIDIA', 800), tp_marca('ATI', 700) ))));

40 Coleção de coleções - Varray com varray
SELECT C.descricao, m.nome, m.preco from tb_computador T, TABLE(T.componentes) C, TABLE(C.marcas) M; DESCRICAO NOME PRECO Processador Intel Processador AMD Placa de Video NVIDIA Placa de Video ATI

41 Conceitos de Conectividade
JDBC

42 JDBC Conjunto de interfaces e classes java que faz envio de consultas para um banco de dados. Objetos(tipos) Conexão (Driver e Connection) SQL para JDBC Midias

43 JDBC - Tipos Driver – interface utilizada por toda aplicação que precise acessar um BD. Connection – conexão com BD. Obtida á partir de um Driver já carregado. Statement e PreparedStatement –. interfaces que representam as consultas. ResultSet – interface que recebe o resultado de uma consulta.

44 JDBC - Driver Essencial (carregamento obrigatório) para estabelecer uma conexão com BD. Class.forName (String driver_name) ; > determina qual drive será usado. Esse comando registra o driver. *no DriverManager (classe responsável pelo gerenciamento de drivers carregados). *driver_name fornecido pelo provedor do BD. getConnection (String url_driver, String user_bd, String password_bd) ; > método que acessa a tabela de drivers (DriverManager) com a url (do driver) passada e depois cria e retorna uma conexão com o BD.

45 JDBC - Driver e Connection
String user = "eq01"; String password = "equipe1"; String url_driver = Class.forName("oracle.jdbc.driver.OracleDriver"); Como dito anteriormente, obtemos uma conexão SOMENTE APÓS registrar um driver no DriveManager. Connection connection = DriveManager.getConnection(url_driver, user, password) ;

46 JDBC - Driver e Connection
try { Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection(url, user, password); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e.getMessage()); } connection.commit( ); connection.rollback( ); connection.close( ); *aconteceu comigo. Fiz várias consultas e travou depois de um tempo

47 JDBC - Statement Statement -> armazenam consultas que sempre são compiladas antes de serem executadas. * connection.createStatement(); retorna um Statement. dml->linguagem de modelagem (ins,del,upd) ddl ->linguagen de definicao(create, drop) * statement.executeUpdate(String sql_dml_ddl); - realisa uma operação e retorna a quantidade de linhas modificadas. *statement.executeQuery(String sql_select); realisa uma operação que retorna um ResultSet.

48 JDBC - Statement e ResultSet
Statement stmt = connection.createStatement(); String sql1 = “SELECT * FROM FROM Fornecedor”; ResultSet rs = stmt.executeQuery(sql1); while(rs.next()){ nome = rs.getString(“NOME”); } *** rs.getTYPE_NAME(); String sql2 = “INSERT INTO Fornecedor VALUES” + “ (‘ ’, ’Info’ )”; stmt.executeUpdate(sql2);

49 JDBC - PreparedStatement
- é um Statement que é compilado apenas na primeira execução. * connection.prepareStatement(String sql); retorna um PreparedStatement. * **setType_name(); -seta valores onde existe ‘?’ no sql criado. public static final String INSERIR_FORNECEDOR_1_FONE = “INSERT INTO tb_fornecedor (nome, cnpj, array_tp_fone, ” + “nt_pedido_fornecedor, nt_produto ) VALUES (?,?,” “array_tp_fone(tp_telefone(?,?)), nt_pedido_fornecedor(), nt_produto);” ;

50 JDBC - PreparedStatement

51 JDBC - PreparedStatement

52 JDBC - PreparedStatement

53 Transformar um arquivo entrada em um stream de entrada

54 JDBC - Mídia


Carregar ppt "Conceitos de SGBD Objeto-Relacional Oracle 10g [2]"

Apresentações semelhantes


Anúncios Google