III – Oracle10g Apontadores – Tipo de Dado (REF).

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
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados Prof.: Bruno Rafael de Oliveira Rodrigues.
Prof.: Bruno Rafael de Oliveira Rodrigues
Maurício Edgar Stivanello
SGBD.
Sistema Gerenciador de Banco de Dados SGBD
Transformando o Modelo E-R no Modelo Relacional
Transformando o Modelo E-R no Modelo Relacional
Hierarquia de Visões de Objeto
Restrições de Integridade
Oficina sobre banco de dados
FRB - Maio 2002MCS9–1 Regras (Restrições) de Integridade Sistemas comerciais relacionais são muito finos de restrições para garantir a qualidade dos dados.
SQL Structured Query Language
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.
Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema.
Conceitos de SGBD Objeto-Relacional Oracle 10g [2]
Equipe de monitoria Aula prática 4
Equipe de monitoria Aula prática 4
Bancos de Dados Espaciais
Vânia Maria Ponte Vidal
SQL Server 2012 Tipos de Dados e Tabelas
Design Patterns / Acesso ao banco de dados (java.sql)
Equipe de monitoria Aula prática 4
Primeira aula de PL/SQL Parte II
Especialização em Tecnologia da Informação
Conceitos de SGBD Objeto-Relacional Oracle 10g [1]
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
Banco de dados.
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
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
SEGUNDA FASE / S2B MIC PERNAMBUCO
SQL- Structured Query Language  SQL é uma linguagem de comandos para interagir com uma BD relacional (não é case-sensitive).  A linguagem Java permite.
SQLite Banco de Dados II.
Ricardo Ferreira Schiavo
Curso de Análise e Desenvolvimento de Sistemas Projeto de Banco de Dados Marcelo da Silveira Siedler.
©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
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.
 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.
Banco de Dados Relacional Objeto-
III – O Modelo OR Estudo de Caso, modelo Oracle9i.
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
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
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Prática O-R Fernando Fonseca.
Aula Prática Objeto-Relacional Monitoria GDI
Transcrição da apresentação:

III – Oracle10g Apontadores – Tipo de Dado (REF)

Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”) lógico e globalmente único, que identifica internamente o objeto Por default, o OID é gerado pelo sistema (”system-generated”), e ocupa 16 bytes Não há interface para o acesso à estrutura interna de um OID OID é uma coluna invisível de uma “object table”, com cada valor ocupando 16 bytes

Um OID pode também ser definido como sendo o valor do atributo chave primária do objeto  chave do objeto Isto é possível em um ambiente em que um identificador local pode ser também assumido como sendo globalmente único (“object table” não distribuída, ou não duplicada) Uma vantagem indiscutível de chave primária sobre OID é a seguinte: a criação dos objetos é mais rápida, pois não há perda de tempo com a geração de OIDs

Tanto OID como chave primária oneram o acesso aos objetos: em um caso e outro os endereços são lógicos, necessitando portanto de ser mapeados para endereços físicos dos objetos –Os mapeamentos são feitos com a ajuda de índices, quer para OID quer para chave primária, os quais são automaticamente mantidos pelo sistema

Em termos de economia de espaço, qual seria a melhor escolha, “system- generated” ou chave primária? –Note que, se o OID for a chave de um objeto, a coluna OID da tabela é economizada, ou deixa de existir –Entretanto, não é sempre certo que haverá economia de espaço com chave primária (ver adiante)

Mas, é muito importante saber que um OID pode ser físico –Neste caso, o valor de um OID é o endereço físico (de disco) de um objeto ROWID OIDs físicos contribuem decisivamente para navegações eficientes em BD OR

Tipo de Dado REF REFs e coleções de REFs modelam associações entre objetos, usando OIDs, lógicos ou físicos, como apontadores –Fácil mecanismo para navegação entre objetos Formato de um valor REF –OID do objeto referenciado (16 bytes), ou chave (tamanho definido pelo usuário) + OID da “object table” (16 bytes) + ROWID (10 bytes) Para ativar o campo ROWID REF IS ROWID –Regra de Integridade (RI) de “object table”

Espaço –OID = Chave Primária e Chave > 16 bytes Para “object tables” volumosas, Chave será pior que OID “system-generated”

Tabelas Híbridas São tabelas em que colunas podem ser dos novos tipos nativos –REF –VARRAY –NESTED TABLE Note que Tabela Híbrida  –Tabelas tradicionais –“Object tables”

Regra de Integridade de Escopo Pode ser necessário declarar que um valor REF deva conter somente referências a objetos de uma “object table” específica –REF com escopo (“scoped REF”) Exemplo: tabela híbrida pessoas CREATE TABLE pessoas ( id NUMBER(4), nome VARCHAR2(60), ref_endereco REF endereço_objtyp SCOPE IS endereço_objtab, fones_ntab fone_ntabtyp) NESTED TABLE fones_ntab STORE AS fones_ntab2

Se a “object table” do escopo for de um subtipo (herança), o escopo é estendido para compreender também as “object table”s dos subtipos do subtipo Restrições ao uso de REF com escopo –OID (gerado pelo sistema ou chave primária) –Opção WITH ROWID não é válida Somente colunas REF com escopo podem ser indexadas

Indexação de Colunas REF com Escopo CREATE TABLE endereco_objtab OF endereco_objtyp CREATE TABLE pessoas ( id NUMBER(4) PRIMARY KEY, nome VARCHAR2(60), ref_endereco REF endereço_objtyp SCOPE IS endereço_objtab, fones_ntab fone_ntabtyp) NESTED TABLE fones_ntab STORE AS fones_ntab2

CREATE INDEX endereco_ref_ind ON pessoas (ref_endereco) SELECT id FROM pessoas p WHERE p.ref_endereco.estado = ‘PB’

REF IS ROWID Restrições de uso –A RI pode ser usada com REF com escopo –Nem com REF com regra de integridade referencial –Nem com REF baseado em chave primária

REF ‘Sujo’ É possível que um objeto identificado por um REF se torne indisponível  remoção do objeto, mudança nos privilégios de acesso ao objeto –Tal REF torna-se então ‘sujo’ (“dangling”) –Para testar se um REF é sujo, usa-se o predicado IS DANGLING Um bom projeto lógico (integridade referencial restrita) é o melhor meio para se evitar “dangling pointers”

Funções com REF -- Tratamento de OIDs SQL> CREATE TYPE t_emp AS OBJECT 2 (mat NUMBER, nome VARCHAR(20), salario NUMBER) 3 / Tipo criado. SQL> CREATE TABLE tab_emp OF t_emp 2 (PRIMARY KEY (mat)) 3 / Tabela criada.

SQL> INSERT INTO tab_emp VALUES (10, 'Joao', 5000) 2 / 1 linha criada. SQL> -- Funcao REF (retorna um valor do tipo REF) SQL> SELECT REF(e) FROM tab_emp e 2 / REF(E) C58AF8D AA0129C4B2F AE5 0203BB B A00000

SQL> CREATE TABLE tab_depto 2 (cod NUMBER, 3 gerente REF t_emp SCOPE IS tab_emp) 4 / Tabela criada. SQL> INSERT INTO tab_depto 2 SELECT 10, REF(e) FROM tab_emp e 3 / 1 linha criada. SQL> -- Funcao DEREF SQL> SELECT DEREF(d.gerente) FROM tab_depto d 2 / DEREF(D.GERENTE)(MAT, NOME, SALARIO) T_EMP(10, 'Joao', 5000)

SQL> SELECT DEREF(d.gerente).nome FROM tab_depto d 2 / DEREF(D.GERENTE).NOM Joao SQL> SELECT d.gerente.nome FROM tab_depto d 2 / GERENTE.NOME Joao

SQL> -- Funcao VALUE SQL> SELECT value(e) FROM tab_emp e 2 / VALUE(E)(MAT, NOME, SALARIO) T_EMP(10, 'Joao', 5000) SQL> SELECT value(e).nome FROM tab_emp e 2 / VALUE(E).NOME Joao

SELECT e.nome FROM tab_emp e NOME João

REF WITH ROWID create type teste as object (x number) / tipo criado. create type teste2 as object(y REF teste) / tipo criado. create table teste_tab of teste / tabela criada. create table teste2_tab of teste2 ( y WITH ROWID) / tabela criada.