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

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

Embed Size (px)

Citation preview

Page 1: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Page 2: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Métodos

Page 3: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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)

Page 4: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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++)

Page 5: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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;

Page 6: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Page 7: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Exemplo

CREATE TYPE Customer_typ AS OBJECT (

id NUMBER, name VARCHAR2(20), phone VARCHAR2(30) );

cust = Customer_typ(103, 'Ravi', '555-1212')

Page 8: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Page 9: 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 Method

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

Page 10: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Exemplo

CREATE TYPE Retangulo_tipo AS OBJECT (larg NUMBER, comp NUMBER, MAP MEMBER FUNCTION area RETURN NUMBER);

CREATE TYPE BODY Retangulo_tipo ASMAP MEMBER FUNCTION area RETURN NUMBER IS BEGIN RETURN larg * comp; END area;END;

Page 11: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Page 12: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Manipulação de Consultas

Page 13: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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.

Page 14: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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 (123456789,'6396327','coxinha',(select REF(e) from endereco e where e.codigo_end = 1),'titular',to_date('14/08/1986','dd/mm/yyyy'));

Page 15: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Comando REF (exercício)

Selecionar todos os atributos de endereço que possuem alguma relação com sócio

Page 16: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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.

Page 17: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Comando DREF (exemplo)

Faça uma consulta que retorno o endereço do socio com codigo 123456789

select DEREF(s.ref_endereco) from socio s where s.codigo = 123456789;

Page 18: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Comando DREF (exercício)

Mostre todas as informações do endereço cujo código está associado ao sócio com rg igual a 6396327.

Page 19: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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;

Page 20: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Comando Dangling (exercício)

Mostre todos os sócios que possuem endereços válidos e que moram no espinheiro.

Page 21: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Comando WITH ROWID

Melhor desempenho, pois fornece acesso direto ao objeto

Exemplo: Tabela tb_socio_exemplo com referencia

a endereçocreate table tb_socio_exemplo of tp_socio( codigo primary key, nome not null, ref_endereco with rowid references endereco);

Page 22: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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.

Page 23: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Coleções de coleções

Page 24: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Coleção de coleções - Nested com nested

TURMA

ALUNO PROFESSOR

1

n

1 n

Page 25: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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;

Page 26: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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 //atributoCREATE TYPE NT_ALUNO_T AS TABLE OF

ALUNO_TYPE;

Page 27: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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);

Page 28: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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(210141500,NT_PROF_T(

PROFESSOR_TYPE(‘Manoel',‘Sistemas Digitais'),PROFESSOR_TYPE(‘Ruy',‘Logica')

) ),

Page 29: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Coleção de coleções - Nested com nested

Sintaxe para inserção de aluno e professor (continuação)

ALUNO_TYPE(210141750,NT_PROF_T(

PROFESSOR_TYPE('Silvio','HFC'),

PROFESSOR_TYPE('Hermano','PLP') ) )

)--nt_aluno_t);--insert

Page 30: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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‘

) AWHERE A.MATRICULA = 210141750)VALUES (‘Fernando’,’GDI’);

Page 31: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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 = 210141500 ) PSET VALUE(P)=

PROFESSOR_TYPE('Jacques','PD')WHERE P.DISCIPLINA='PD';

Page 32: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Coleção de coleções - Nested com nested

Consulta em tabela aninhada

SELECT P.NOME, P.DISCIPLINAFROM TURMA_TAB T, TABLE(T.ALUNOS) A,

TABLE(A.PROFESSORES) P WHERE T.CODIGO = ‘I5A’ ;

Page 33: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

ALUNO

PROFESSOR

1

n

telefone

nome diciplina

matricula

Page 34: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Types

Page 35: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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;/

Page 36: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Insert com e sem elementos na nested ;

Page 37: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Consulta

Page 38: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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));

Page 39: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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) ))));

Page 40: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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 1200Processador AMD 999Placa de Video NVIDIA 800Placa de Video ATI 700

Page 41: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Conceitos de ConectividadeJDBC

Page 42: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Page 43: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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.

Page 44: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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.

Page 45: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

JDBC - Driver e Connection

String user = "eq01"; String password = "equipe1"; String url_driver =

"jdbc:oracle:thin:@itapissuma.cin.ufpe.br:1521:dbdisc";

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) ;

Page 46: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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

Page 47: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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.

Page 48: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

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” + “ (‘123456-7’, ’Info’ )”;stmt.executeUpdate(sql2);

Page 49: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

JDBC - PreparedStatement

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);” ;

Page 50: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

JDBC - PreparedStatement

Page 51: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

JDBC - PreparedStatement

Page 52: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

JDBC - PreparedStatement

Page 53: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

Transformar um arquivo entrada em um stream de entrada

Page 54: Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison

JDBC - Mídia