III - Oracle9i Apontadores – Tipo de Dado (REF). Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”)

Slides:



Advertisements
Apresentações semelhantes
Transformação ODMG  Relacional
Advertisements

Estudo de Caso, modelo Oracle 10g
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
Prof.: Bruno Rafael de Oliveira Rodrigues
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Maurício Edgar Stivanello
Sistema Gerenciador de Banco de Dados SGBD
Sistema Gerenciador de Banco de Dados SGBD
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
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.
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 – 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
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
Microsoft SQL Server 2008 SPARSE. Para que serve? –Otimiza o espaço de armazenamento de colunas com valores NULL.
©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.
SEGUNDA FASE / S2B MIC PERNAMBUCO
SCC Bancos de Dados e Suas Aplicações
SQLite Banco de Dados II.
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
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.
Banco de Dados Maria Augusta (Magu).
Linguagem de definição de dados - SQL
Transformação ODMG  Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto  Esquema Relacional.
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
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 - Oracle9i 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

Identificador de Objeto (2) 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

Identificador de Objeto (3) 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

Identificador de Objeto (4) 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)

Tipo de Dado REF REFs e coleções de REFs modelam associações entre objetos, usando OIDs como apontadores –Fácil mecanismo para navegação entre objetos –Colunas de tabelas híbridas podem ser do tipo REF Valor de um tipo REF –OID do objeto referenciado (16 bytes), ou chave (tamanho definido pelo usuário) –OID da “object table” (16 bytes) –ROWID (10 bytes) REF IS ROWID

Tipo de Dado REF Espaço –Caso cada chave (OID) requeira mais de 16 bytes, e havendo um grande número de valores tipo REF, então chave primária será pior que OID com relação a espaço em disco, pois neste caso as chaves vão ser duplicadas nos valores REF

REF com 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”) 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

REF com Escopo (2) 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 REFS com escopo são armazenados de maneira mais eficiente do que REFs sem 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 REFs com escopo facilitam a tarefa do Otimizador de Consultas

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

Indexação de Colunas REF com Escopo (3) 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 –Não 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

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.

Funções com REF (2) 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

Funções com REF (3) 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)

Funções com REF (4) 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

Funções com REF (5) 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

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.