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

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Estudo de Caso, modelo Oracle 10g
Gerenciamento de Dados e Informação Estudo de caso – PL/SQL
VI- Implementação Objeto-Relacional
Modelo de Objetos ODMG.
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Maurício Edgar Stivanello
Hierarquia de Visões de Objeto
SCC Bancos de Dados e Suas Aplicações
Bancos de Dados Orientados a Objeto
Banco de dados Profª Kelly Medeiros.
PostgreSQL.
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Conceitos de SGBD Objeto-Relacional Oracle 10g [2]
Funções Declaração function nomedafunção (arg_1, arg_2,..., arg_n) corpoDaFunção end.
Equipe de monitoria Aula prática 4
Equipe de monitoria Aula prática 4
Vânia Maria Ponte Vidal
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Monitoria GDI Aula Prática
Tipos de Linguagens do Banco de Dados
Equipe de monitoria Aula prática 3.  Caso de estudo  Igualando situações  Cursor  Function  Procedure  Trigger  Package  Surpresa...
Equipe de monitoria Aula prática 4
Primeira aula de PL/SQL Parte II
Especialização em Tecnologia da Informação
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
Conceitos de SGBD Objeto-Relacional Oracle 10g [1]
III – Oracle10g Apontadores – Tipo de Dado (REF).
III – O Modelo OR Estudo de Caso, modelo Oracle 10g.
III – Oracle10g Funções que Manipulam Apontadores.
III – Oracle 10g Herança.
Com coleções, cursor não é mais necessário
Desenvolvendo um script SQL
Criação de Tabelas. CREATE TABLE nome_da_tabela ( >>. >> ) Ex.: SQL SERVER 2008 CREATE TABLE pessoa ( CPF VARCHAR(11) NOT NULL, NOME VARCHAR(100) NOT.
Baseado no material do Professor Raul Paradeda
PostGres: Um Banco de Dados Orientado a Objetos
Monitoria GDI Aula Prática Aula 2: PL 1. Estudo de caso - continuação Pegar arquivo GDI.zip em Descompactar arquivo: o criacaoTabelas.SQL.
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
SCC Bancos de Dados e Suas Aplicações
Ricardo Ferreira Schiavo
©Silberschatz, Korth and Sudarshan (modificado)9.1.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
III – Oracle 9i Indexação. Índices Baseados em Funções É um índice baseado no valor de retorno de uma expressão ou função –A função pode ser um método.
Banco de Dados I I Comandos SQL
CASE WHEN THEN ELSE END Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com.
©Silberschatz, Korth and Sudarshan (modificado)9.2.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
III - Oracle9i Apontadores – Tipo de Dado (REF). Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”)
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
7P/SI – 2010/01 Prof. Carlos Alberto Seixas. Agenda Visão Geral sobre os Conceitos e Implementação sobre SGBs MySQL Revisão das Práticas Práticas 1 e.
 Introdução  Definindo Visões de Objeto  Usando Visões de Objeto  Atualizando Visões de Objeto.
III – Oracle 9i Herança. Pessoa EmpregadoEstudante Est. Parcial Pessoa_tab.
Orientação a objetos no ORACLE 9i Extensões para criar objetos complexos TADs (Tipos de Objetos) Tipo Referência (REF) Tipo Coleção Nested Tables (Tabelas.
III – Oracle 9i Herança. Pessoa EmpregadoEstudante Est. Parcial Pessoa_tab.
Tipos e Subtipos CREATE TYPE Pessoa_ty AS OBJECT ( cpf NUMBER, nome VARCHAR2(30), endereço VARCHAR2(100)) NOT FINAL; CRIANDO SUBTIPOS CREATE TYPE Estudante_ty.
Banco de Dados Relacional Objeto-
III – O Modelo OR Estudo de Caso, modelo Oracle9i.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
Banco de Dados II Prof: Márcio Soussa Curso de Sistemas de Informação Faculdades Jorge Amado.
PROJETO INTERDISCIPLINAR ‘DBERP’. Equipe de Desenvolvimento Banco de Dados  Adiel Silveira de Lemos  Ana Renata de Siqueira  Bruno Michael da Silva.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
2ª Aula Prática O-R Fernando Fonseca.
Prática O-R Fernando Fonseca.
Aula Prática Objeto-Relacional Monitoria GDI
Prática O-R Fernando Fonseca.
Transcrição da apresentação:

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

Aula e Script www/~dsrm/gdi

Caso de estudo 3

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

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

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

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

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

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

© 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

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

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

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

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

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

© 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',' ', to_date('20/01/1980','dd/mm/yyyy'),45));

© 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

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

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

© 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()

© 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,... );

© 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

© 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', ' ')

© 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

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

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

© 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

© 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 ▫....

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

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

© 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

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

© 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( , NT_PROF_T( PROFESSOR_TYPE('Fernando','GDI'), PROFESSOR_TYPE('Hermano','PD') ) ),

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

© 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 = ) VALUES ('Ruy','IT');

© 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 = ) P SET VALUE(P)= PROFESSOR_TYPE('Jacques','PD') WHERE P.DISCIPLINA='PD';

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

Referências 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.