Conceitos de sgbd objeto relacional oracle 10g 2
This presentation is the property of its rightful owner.
Sponsored Links
1 / 54

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


  • 60 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

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

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


Conceitos de sgbd objeto relacional oracle 10g 2

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


M todos

Métodos


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


Manipula o de consultas

Manipulação de Consultas


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 es de cole es

Coleções de coleções


Cole o de cole es nested com nested

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

TURMA

1

n

ALUNO

PROFESSOR

1

n


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 varray1

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

  • Types


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 nested com varray4

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

  • Consulta


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


Conceitos de conectividade

Conceitos de Conectividade

JDBC


Conceitos de sgbd objeto relacional oracle 10g 2

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


Jdbc preparedstatement1

JDBC - PreparedStatement


Jdbc preparedstatement2

JDBC - PreparedStatement


Jdbc preparedstatement3

JDBC - PreparedStatement


Transformar um arquivo entrada em um stream de entrada

Transformar um arquivo entrada em um stream de entrada


Jdbc m dia

JDBC- Mídia


  • Login