conceitos de sgbd objeto relacional oracle 10g 2
Download
Skip this Video
Download Presentation
Conceitos de SGBD Objeto-Relacional Oracle 10g [2]

Loading in 2 Seconds...

play fullscreen
1 / 54

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


  • 99 Views
  • Uploaded on

Conceitos de SGBD Objeto-Relacional Oracle 10g [2]. Métodos. 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). Member Function.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Conceitos de SGBD Objeto-Relacional Oracle 10g [2]' - floyd


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
m todos1
Métodos
  • Programasassociadosaostiposquefazemcomputações e podemteracessoaosatributos do tipo
  • Tipos de métodos
    • Member
    • Static
    • Constructor
    • Comparison (Map e Order)
member function
Member Function
  • Métodosquepossuemacessoaos dados dainstância do objeto
  • Self - representa a instância do tipo no qual o método é atualmentechamado
  • Na declaração de um tiposãodefinidas as assinaturas dos métodos
  • O corpo dos métodosdeve ser criadoemalgumalinguagem de programação (PL/SQL, Java, C++)
exemplo
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;

constructor method
Constructor Method
  • Métodoquecriauma nova instânciapara o objeto, atribuindovaloresaosseusatributos. 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étodoconstrutor, que é implícito e definidopelosistema
  • O nome do métodoconstrutor é o mesmo do object type
exemplo1
Exemplo
  • CREATE TYPE Customer_typ AS OBJECT (

id NUMBER,

name VARCHAR2(20),

phone VARCHAR2(30)

);

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

comparison methods
Comparison Methods
  • Valores de tipos de dados primitivoscomo CHAR ou REAL possuemumaordempredefinida, permitindocompará-los
  • Object type possuimúltiplosatributos de diferentestipos de dados, nãopossuindo um eixodefinido de comparação
    • Map
    • Order
map method
Map Method
  • Permitecompararobjetos, mapeando as instâncias dos objetosem um dos tiposescalares DATE, NUMBER, VARCHAR2
exemplo2
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;

order function
Order Function
  • Realizacomparações object-to-object
  • É funçãoquepossui um parâmetrodeclaradoparaoutroobjeto do mesmotipo e retorna
    • < 0, caso o objeto SELF sejamenorque o objetopassadocomoargumento
    • 0, casosejamiguais
    • > 0, caso o objeto SELF sejamaiorque o objetopassadocomoargumento
comando ref
Comando REF
  • REF - Retorna referência OID(object id) a uma instância da objecttable
  • Um objeto do tipo REF encapsula uma referência para um “rowobject” de um tipo de objeto especificado;
  • O valor de um objeto do tipo REF é um “ponteiro lógico” para um rowobject.
comando ref exemplo
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\',

(selectREF(e) fromendereco e wheree.codigo_end = 1),\'titular\',to_date(\'14/08/1986\',\'dd/mm/yyyy\'));

comando ref exerc cio
Comando REF (exercício)
  • Selecionar todos os atributos de endereço que possuem alguma relação com sócio
comando dref
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 “rowobject”. O DEREF toma como argumento o OID gerado para uma referência.
comando dref exemplo
Comando DREF (exemplo)
  • Faça uma consulta que retorno o endereço do socio com codigo123456789

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

comando dref exerc cio
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.
comando 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;

comando dangling exerc cio
Comando Dangling (exercício)
  • Mostre todos os sócios que possuem endereços válidos e que moram no espinheiro.
comando with rowid
Comando WITH ROWID
  • Melhor desempenho, pois fornece acesso direto ao objeto
  • Exemplo:
    • Tabela tb_socio_exemplo com referencia a endereço

createtabletb_socio_exemplooftp_socio(

codigoprimarykey,

nome notnull,

ref_enderecowithrowidreferencesendereco

);

comando with rowid exerc cio
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.
cole o de cole es nested com nested1
Coleção de coleções - Nested com nested

CREATE TYPE PROFESSOR_TYPE AS OBJECT (

NOME VARCHAR2(15),

DISCIPLINA VARCHAR2(15)

);

//Nested professor_typequeserá um atributodatabela

//aluno

CREATE TYPE NT_PROF_T AS TABLE OF PROFESSOR_TYPE;

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

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

cole o de cole es nested com nested3
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);

cole o de cole es nested com nested4
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\')

)

),

cole o de cole es nested com nested5
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

cole o de cole es nested com nested6
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 = 210141750)

VALUES (‘Fernando’,’GDI’);

cole o de cole es nested com nested7
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

) P

SET VALUE(P)= PROFESSOR_TYPE(\'Jacques\',\'PD\')

WHERE P.DISCIPLINA=\'PD\';

cole o de cole es nested com nested8
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’ ;

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

ALUNO

1

matricula

n

PROFESSOR

telefone

nome

diciplina

cole o de cole es nested com varray2
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;

/

cole o de cole es nested com varray3
Coleção de coleções - Nested com varray
  • Insert com e sem elementos na nested ;
cole o de cole es varray com varray
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));

cole o de cole es varray com varray1
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)

))));

cole o de cole es varray com varray2
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 1200

Processador AMD 999

Placa de Video NVIDIA 800

Placa de Video ATI 700

slide42
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
jdbc tipos
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.
jdbc driver
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.
jdbc driver e connection
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) ;
jdbc driver e connection1
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
jdbc statement
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.

jdbc statement e resultset
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);

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

ad