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

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

Aula Prática Objeto-Relacional Monitoria GDI

Apresentações semelhantes


Apresentação em tema: "Aula Prática Objeto-Relacional Monitoria GDI"— Transcrição da apresentação:

1 Aula Prática Objeto-Relacional Monitoria GDI
Oracle 9i Aula Prática Objeto-Relacional Monitoria GDI

2 ORACLE 9i - Object-Relational
Tipo definido pelo usuário Tipos encapsulam uma estrutura de dados através de métodos necessários para sua manipulação Facilita o mapeamento de objetos Java em objetos do banco; Objetos persistentes e transientes 2/19/2019 © CIn/UFPE

3 ORACLE 9i - Object-Relational
Elementos Objeto-Relacionais básicos: Object Types Object Tables Row Objects e Column Objects Coleções Tipos de Dados REF Object Views Herança de Tipos Métodos 2/19/2019 © CIn/UFPE

4 ORACLE 9i - Object Type Interface Pública Implementação Privada
Especificação Declaração de Atributos Interface Pública Especificação dos Métodos Corpo Implementação Privada Corpo dos Métodos 2/19/2019 © CIn/UFPE

5 ORACLE 9i - Object Type Definição de um object type não aloca espaço no banco. Sintaxe resumida: CREATE TYPE <NOME DO TIPO> AS OBJECT ( <LISTA DE ATRIBUTOS E MÉTODOS> ); 2/19/2019 © CIn/UFPE

6 ORACLE 9i - Object Type - Exemplo
Definindo um tipo Endereço CREATE TYPE ENDERECO_TYPE AS OBJECT ( RUA VARCHAR2(40), CIDADE VARCHAR2(40), ESTADO VARCHAR2(2) ); / 2/19/2019 © CIn/UFPE

7 ORACLE 9i - Object Type - Exemplo
Definindo um tipo Pessoa CREATE TYPE PESSOA_TYPE AS OBJECT ( NOME VARCHAR2(15), SOBRENOME VARCHAR2(15), DT_NASC DATE, ); / 2/19/2019 © CIn/UFPE

8 ORACLE 9i - Object Type - Exemplo
Reutilização de um object-type em outros object types ou em tabelas(Column Objects) CREATE TYPE FUNCIONARIO_TYPE AS OBJECT ( MATRICULA NUMBER, DT_ADMISSAO DATE, PESSOA PESSOA_TYPE, ENDERECO ENDERECO_TYPE, ); / 2/19/2019 © CIn/UFPE

9 ORACLE 9i - Object Type - Exemplo
Removendo o tipo funcionário DROP TYPE FUNCIONARIO_TYPE; / Removendo o tipo funcionário que possui dependências de tabela com outros tipos DROP TYPE FUNCIONARIO_TYPE FORCE; 2/19/2019 © CIn/UFPE

10 ORACLE 9i - Object Table Sintaxe resumida:
CREATE TABLE <NOME DA TABELA> OF <NOME DO TIPO> ( <LISTA DE PROPRIEDADES DOS ATRIBUTOS> ); 2/19/2019 © CIn/UFPE

11 ORACLE 9i - Object Tables - Definição
CREATE TABLE FUNC OF FUNCIONARIO_TYPE ( MATRICULA PRIMARY KEY); Uso do OID(OBJECT IDENTIFIER) para identificar unicamente cada instância do object table. Este valor pode ser SYSTEM-GENERATED ou especificado pela chave primária da tabela. 2/19/2019 © CIn/UFPE

12 ORACLE 9i - Object Tables DML
INSERT INSERT INTO FUNC VALUES (1, to_date('03/11/1998','dd/mm/yyyy'), PESSOA_TYPE('Marcelo', 'Silva', to_date('20/05/1975','dd/mm/yyyy')), ENDERECO_TYPE('Av. Boa Viagem', 'Recife', 'PE')); 2/19/2019 © CIn/UFPE

13 ORACLE 9i - Object Tables DML
SELECT SELECT F.PESSOA.NOME, F.ENDERECO.RUA FROM FUNC F WHERE F.PESSOA.NOME = ‘Marcelo’; DELETE DELETE FROM FUNC WHERE MATRICULA = 1 2/19/2019 © CIn/UFPE

14 Exercício Implementar um relacionamento 1:N entre empregado e departamento n 1 Empregado Departamento Um empregado deve possuir matrícula, nome, endereço, e data de admissão Um departamento possui um código e uma descrição 2/19/2019 © CIn/UFPE

15 Exercício - Roteiro Crie os object types envolvidos
Crie as object tables a partir dos tipos Insira dados nas tabelas Liste os empregados e o departamento a que pertencem 2/19/2019 © CIn/UFPE

16 ORACLE 9i - Coleções São um meio de armazenar uma série de entradas de dados associadas a uma linha de um banco de dados Modelam relacionamento 1-para-muitos e atributos multivalorados O Oracle9i oferece dois tipos de coleções VARRAYs Nested Tables 2/19/2019 © CIn/UFPE

17 ORACLE 9i - VARRAY “Varring arrays” conjunto ordenado de elementos
cada elemento possui um índice Tipo de dado multivalorado São, geralmente, armazenados junto com a linha (tupla) que os contém Oferecem boa performance O número máximo de elementos é limitado 2/19/2019 © CIn/UFPE

18 ORACLE 9i - VARRAY Exemplo Definindo um tipo VARRAY
CREATE TYPE tel_array AS VARRAY(3) OF VARCHAR2(15) 2/19/2019 © CIn/UFPE

19 ORACLE 9i - VARRAY Exemplo Utilizando o tipo VARRAY
CREATE TYPE contato_tp AS OBJECT ( nome VARCHAR(40), telefones tel_array ) CREATE TABLE contato OF contato_tp 2/19/2019 © CIn/UFPE

20 ORACLE 9i - VARRRAY Exemplo Inserindo dados no tipo VARRAY
INSERT INTO contato VALUES ( ‘Fernando’, tel_array(‘ ’, ‘ ’, ‘ ’) ) 2/19/2019 © CIn/UFPE

21 ORACLE 9i - VARRAY Exemplo Consultando dados do tipo VARRAY
SELECT t.* FROM contato c, TABLE(c.telefones) t; 2/19/2019 © CIn/UFPE

22 Exercício Crie um tipo objeto chamado Empregado, que possui como atributos: uma matrícula, um nome, um salário e uma lista limitada de dependentes (no máximo 10) Cada dependente deverá possuir um nome e uma data de nascimento Liste todos os dependentes Liste os dependentes de um determinado empregado Empregado Dependentes Salário Matrícula Nome 2/19/2019 © CIn/UFPE

23 ORACLE 9i - Nested Table É, essencialmente, uma tabela adicional
Podem ser manipuladas como tabelas normais SELECT, INSERT, DELETE,... Não possuem um limite para o número de elementos 2/19/2019 © CIn/UFPE

24 ORACLE 9i - Nested Tables
Exemplo Definindo um tipo Nested Table CREATE TYPE EMPREGADO_TYPE AS OBJECT( MATRICULA NUMBER, NOME VARCHAR2(40) ); CREATE TYPE EMP_NESTED AS TABLE OF EMPREGADO_TYPE; 2/19/2019 © CIn/UFPE

25 ORACLE 9i - Nested Tables
Exemplo Utilizando o tipo Nested Table CREATE TYPE DEPARTAMENTO_TYPE AS OBJECT( MATRICULA NUMBER, NOME VARCHAR2(40), EMPREGADOS EMP_NESTED ); CREATE TABLE DEPARTAMENTO_TAB OF DEPARTAMENTO_TYPE NESTED TABLE EMPREGADOS STORE AS EMP_T; 2/19/2019 © CIn/UFPE

26 ORACLE 9i - Nested Tables
Exemplo Inserindo dados do tipo Nested Table INSERT INTO departamento_tab VALUES (1, 'Depto Compras', emp_nested( empregado_type(1, 'Marcelo') ) 2/19/2019 © CIn/UFPE

27 ORACLE 9i - Nested Tables
Exemplo Inserindo dados apenas no tipo Nested Table INSERT INTO THE(SELECT d.empregados FROM departamento_tab d WHERE d.nome = 'Depto Compras') VALUES (2,'Joca') 2/19/2019 © CIn/UFPE

28 ORACLE 9i - Nested Tables
Exemplo Consultando dados no tipo Nested Table SELECT * FROM THE(SELECT d.empregados FROM departamento_tab d WHERE d.nome = 'Depto Compras'); SELECT e.* FROM departamento_tab d, TABLE(d.empregados) e WHERE d.nome = 'Depto Compras‘; 2/19/2019 © CIn/UFPE

29 VARRAYS vrs Nested Tables
Quando utilizar VARRAYS Número pequeno e fixo de elementos Elementos ordenados Recuperação e manipulação da coleção inteira 2/19/2019 © CIn/UFPE

30 VARRAYS vrs Nested Tables
Quando utilizar Nested Tables Número arbitrário de elementos Consultas a subconjuntos dos elementos SELECT Operações de INSERT, UPDATE e DELETE 2/19/2019 © CIn/UFPE


Carregar ppt "Aula Prática Objeto-Relacional Monitoria GDI"

Apresentações semelhantes


Anúncios Google