 Introdução  Definindo Visões de Objeto  Usando Visões de Objeto  Atualizando Visões de Objeto.

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
VI- Implementação Objeto-Relacional
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados Prof.: Bruno Rafael de Oliveira Rodrigues.
Banco de Dados SQL TRIGGERS (Gatilhos)
Visões Marilde Santos.
Maurício Edgar Stivanello
Sistema Gerenciador de Banco de Dados SGBD
Hierarquia de Visões de Objeto
Restrições de Integridade
Introdução à Engenharia da Computação
SCC Bancos de Dados e Suas Aplicações
Banco de Dados Objetos Relacionais
Banco de dados Profª Kelly Medeiros.
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.
Vânia Maria Ponte Vidal
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
SEQUENCE, PROCEDURE, FUNÇÃO, TRIGGER
Desenvolvendo um script SQL
Linguagem SQL.
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Revisão ER /SQL / PL.
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
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
SQL- Structured Query Language  SQL é uma linguagem de comandos para interagir com uma BD relacional (não é case-sensitive).  A linguagem Java permite.
Cálculo Relacional.
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
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
III - Oracle9i Apontadores – Tipo de Dado (REF). Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”)
Conceitos de SGBD Objeto-Relacional Oracle 10g [2] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina.
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.
Visões Visão tabela derivada a partir das tabelas do BD tabela virtual
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.
Banco de Dados Relacional Objeto-
Esquema Relacional Aplicando um Modelo de Objetos para Dados Relacionais.
III – O Modelo OR Estudo de Caso, modelo Oracle9i.
ODMG - Object Database Management Group Padrão para SGBDOO Consórcio de pesquisadores e fabricantes Objetivo –integração e padronização de funcionalidades.
Objetos em Bancos de Dados Relacionais Alcides Calsavara.
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
Linguagem de definição de dados - SQL
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
Banco de Dados II Prof: Márcio Soussa Curso de Sistemas de Informação Faculdades Jorge Amado.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Prática O-R Fernando Fonseca.
Aula Prática Objeto-Relacional Monitoria GDI
Prática O-R Fernando Fonseca.
Transcrição da apresentação:

 Introdução  Definindo Visões de Objeto  Usando Visões de Objeto  Atualizando Visões de Objeto

 Mecanismo de Visão para suportar Visão de Objetos.  Uma Visão de Objeto é uma visão com “row objetos” (objetos com identificador).  Da mesma forma que podemos definir “column objects” e “row Objects” em tabelas, podemos defini-los em visões.  Estes objetos (column e row) podem existir fisicamente no banco de dados (em tabelas de objetos) e podem ser “sintetizados” de dados no formato relacional ou de objetos em outro formato.

 Provê um caminho de migração gradual para “legacy data”.  Dados Relacionais podem ser mapeados em objetos e aplicações podem manipula-los como estruturas nativas.  Provê a co-existência de aplicações relacionais e OO.  Provê a flexibilidade de ver o mesmo dado relacional ou OO de mais de uma maneira.  Como os objetos da visão são processados no Servidor, não no cliente, isto pode resultar em menos tráfico na rede

1. Defina um tipo de Objeto para ser representado pelas linhas de uma visão de Objetos. 2. Escreva uma consulta que especifique quais dados em quais tabelas contem os atributos para os objetos daquele tipo. 3. Especifique um identificador de objeto, baseado nos atributos dos dados do BD, para permitir REFs para os objetos da visão de Objetos. (usa uma chave). 4. Se é permitido atualização através da visão então escreva triggers INSTEAD OF para ORACLE executar sempre que um programa de aplicação tentar realizar uma atualização atraves da visão.

DEPTO_REL codigo nome rua cidade estado cep EMP_REL número nome salario depto (FK)

Depto_ty codigo nome Endereço_ty rua cidade estado cep endereço Emp_ty número nome salario depto empregados  Crie a visão dept_view de objetos do tipo Depto_ty

CREATE TYPE Emp_lista_ty AS TABLE OF Emp_ty; CREATE TYPE Emp_ty AS OBJECT( Numero NUMBER, Nome VARCHAR2(20), Salario NUMBER); CREATE TYPE Endereço_ty AS OBJECT( Rua VARCHAR2(20), Cidade VARCHAR2(20), Estado VARCHAR2(20)); CREATE TYPE Depto_ty AS OBJECT( Codigo NUMBER, Nome VARCHAR2(20), endereço Endereço_ty, empregados Emp_lista_ty );

CREATE VIEW dept_view OF Depto_ty WITH OBJECT IDENTIFIER (codigo) AS SELECT d.codigo, d.nome, Endereço_ty( d.rua, d.cidade, d.estado, d.cep), CAST( MULTISET (SELECT e.numero, e.nome, e.salario FROM EMP_REL e WHERE e.depto = d.codigo) AS Emp_lista_ty ) FROM DEPT_REL d ; Criando Visões de “Row Objects”

 MULTISET  Indica que o resultado da consulta é uma lista e não um único valor.  Operador CAST  Põe o conjunto do resultado no formato do tipo apropriado (no caso o tipo coleção employee_list_t)

CREATE VIEW dept_view OF dept_t WITH OBJECT IDENTIFIER DEFAULT AS SELECT....  Se a visão é baseada em uma tabela ou visão de objetos, então o identificador da tabela ou da visão pode ser usado. Neste caso a cláusula WITH OBJECT IDENTIFIER pode ser omitida ou especificada com valor DEFAULT

A maior vantagem de definir visões de “row objects” é que estes objetos podem ser referenciados. emp_ty dept_ty emp_view dept_view > deptref

CREATE TYPE Emp_ty AS OBJECT( Numero NUMBER, Nome VARCHAR2(20), Salario NUMBER Dept_ref REF Dept_ty); CREATE TYPE Endereço_ty AS OBJECT( Rua VARCHAR2(20), Cidade VARCHAR2(20), Estado VARCHAR2(20), CEP VARCHAR(8)); CREATE TYPE Depto_ty AS OBJECT( Código NUMBER, Nome VARCHAR2(20), Endereço Endereço_ty ); Tipo REF

CREATE VIEW dept_view OF Depto_ty WITH OBJECT IDENTIFIER (codigo) AS SELECT d.codigo, d.nome, Endereço_ty( d.rua, d.cidade, d.estado, d.cep) FROM DEPTO_REL d ; Cria Visão Referenciada dept_view

CREATE VIEW Emp_view OF Emp_ty WITH OBJECT IDENTIFIER(numero) AS SELECT e.numero, e.nome, e.salario, MAKE_REF(dept_view, e.depto) FROM EMP_REL e; MAKE_REF: Usa o valor da chave estrangeira para criar o identificador de objeto que corresponde a um dado objeto da visão referenciada MÉTODO 1:

CREATE VIEW Emp_view OF Emp_ty WITH OBJECT IDENTIFIER(numero) AS SELECT e.numero, e.nome, e.salario, REF(d ) FROM EMP_REL e, dept_view d WHERE e.depto = d.codigo; Usa REF para obter a referência para um objeto da visão. MÉTODO 2

SELECT e.numero, e.salario, e.deptref.nome FROM emp_view e WHERE e.dept_ref.endereço.cidade = `Fortaleza’; Encontre os empregados cujo departamento está localizado na cidade de Fortaleza

emp_ty dept_ty emp_view dept_view > dept_ref empregados

CREATE TYPE Emp_lista_ty AS TABLE OF REF Emp_ty; CREATE TYPE Emp_ty AS OBJECT( Numero NUMBER, Nome VARCHAR2(20), Salario NUMBER Dept_ref REF Dept_ty); CREATE TYPE Dept_ty ; CREATE OR REPLACE TYPE Dept_ty AS OBJECT( Código NUMBER, Nome VARCHAR2(20), endereço Endereço_ty, empregados Emp_lista_ty ); Tipo incompleto CREATE TYPE Endereço_ty AS OBJECT( Rua VARCHAR, Cidade VARCHAR, Estado VARCHAR,);

MÉTODO 1 1. Cria a visão A sem referenciar a visão B 2. Cria a Visão B que referencia a visão A 3. Redefine a visão A com referência para a visão B

CREATE VIEW Emp_view OF Emp_ty WITH OBJECT IDENTIFIER(numero) AS SELECT e.numero, e.nome, e.salario, NULL FROM EMP_REL e;

CREATE VIEW dept_view OF Depto_ty WITH OBJECT IDENTIFIER (codigo) AS SELECT d.codigo, d.nome, Endereço_ty( d.rua, d.cidade, d.estado, d.cep), CAST( MULTISET (SELECT MAKE_REF(emp_view, e.numero) FROM EMP_REL e WHERE e.depto = d.codigo) AS Emp_lista_ty ) FROM DEPT_REL d ;

CREATE OR REPLACE VIEW Emp_view OF Emp_ty WITH OBJECT IDENTIFIER(numero) AS SELECT e.numero, e.nome, e.salario, MAKE_REF(dept_view, e.depto) FROM EMP_REL e;

MÉTODO 2 1. Cria a visão A com uma referencia para a visão B usando FORCE 2. Cria a Visão B que referencia a visão A 3. Quando a visão A é usada, ela é validada e recompilada.

CREATE FORCE VIEW Emp_view OF Emp_ty WITH OBJECT IDENTIFIER(numero) AS SELECT e.numero, e.nome, e.salario, MAKE_REF(dept_view, e.depto) FROM EMP_REL e;

SELECT DEREF(t.COLUMN_VALUE) FROM TABLE( SELECT e.empregados FROM dept_view e WHERE e.codigo = 100) t; COLUMN_VALUE denota a referência para um objeto do tipo emp_t na nested table empreflist.

SELECT e.COLUMN_VALUE.eno FROM TABLE (SELECT e.empreflist FROM dept_view e WHERE e.dno = 100) e WHERE e.COLUMN_VALUE.ename like `John%';

SELECT e.deptref.dno, DEREF(f.COLUMN_VALUE) FROM emp_view e, TABLE(e.deptref.empreflist) f WHERE e.deptref.dno = 100 AND f.COLUMN_VALUE.ename like `John%';

1. Defina um tipo de Objeto para ser representado pelas linhas de uma visão de Objetos. 2. Escreva uma consulta que especifique quais dados em quais tabelas contem os atributos para os objetos daquele tipo. 3. Especifique um identificador de objeto, baseado nos atributos dos dados do BD, para permitir REFs para os objetos da visão de Objetos. (usa uma chave). 4. Se é permitido atualização através da visão então escreva triggers INSTEAD OF para ORACLE executar sempre que um programa de aplicação tentar realizar uma atualização atraves da visão.

 Uma atualização de visão é simplesmente uma atualização que é especificada em uma visão, mas ela deve ser traduzida em uma sequência de atualizações no banco de dados. Chamamos esta sequência de atualizações do banco de dados de tradução da atualização da visão requisitada.

 - Os triggers para cada tipo de atualização da visão (que são permitidas) devem ser definidos em tempo de projeto da visão.  - A semântica necessária para remover ambiguidades deve ser obtida através de diálogo com o usuário na hora da definição da visão.  - Uma vez que o tradutor é escolhido, os usuários especificam o trigger correspondente, e o trigger converte estas atualizações em atualizações do banco de dados, sem que seja necessário nenhum diálogo adicional para remover ambiquidades.

CREATE TRIGGER dept_ins INSTEAD OF INSERT ON Dept_view DECLARE dept_var dept_t; emp_count integer; BEGIN INSERT INTO DEPTO_REL VALUES (: NEW.codigo, :NEW.nome, :NEW.endereço.rua, :NEW. endereço.cidade, :NEW. endereço.estado, :NEW. endereço.CEP); END;

CREATE TRIGGER emp_ins INSTEAD OF INSERT ON Emp_view DECLARE dept_var depto_ty; emp_count integer; BEGIN -- obtenha o numero do departamento da referência UTL_REF.SELECT_OBJECT (:NEW.depto_ref, dept_var) INSERT INTO EMP_REL VALUES (: NEW.numero, :NEW.nome :NEW.salario, dept_var.codigo); END; UTL_REF: obtem o objeto referenciado