• Nenhum resultado encontrado

Conceitos de SGBD Objeto-Relacional Oracle 10g [1]

N/A
N/A
Protected

Academic year: 2022

Share "Conceitos de SGBD Objeto-Relacional Oracle 10g [1]"

Copied!
34
0
0

Texto

(1)

Conceitos de SGBD Objeto-Relacional Oracle 10g [1]

Monitoria GDI

André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina

(2)

Método de análise

• Aula de hoje:

▫ SGBD Objeto-relacional

▫ Operador REF

▫ Coleções

▫ Criação dos tipos e dos relacionamentos

• Próxima aula:

▫ INSERTS e SELECT

▫ Coleções de coleções

▫ Outros Operadores importantes

▫ Herança e Funções

(3)

SGBD Objeto-Relacional

• SGBD Objeto-Relacionais combinam os benefícios do sistema Relacional com a capacidade de modelagem do modelo OO

• Dão suporte a consultas complexas sobre dados complexos

• Atendem aos requisitos das novas aplicações e da nova geração de aplicações de negócios

(4)

Modelos e Linguagens

• O sistema de dados OR é uma extensão do sistema Relacional

▫ As extensões incluem mecanismos para permitir aos

usuários estender o banco de dados com tipos e funções específicas da aplicação

• A linguagem de consulta OR é uma extensão da linguagem SQL para dar suporte ao sistema de objetos

▫ As extensões incluem consultas envolvendo objetos,

atributos multivalorados, TAD, métodos e funções como predicados de busca em uma consulta

(5)

Modelo Objeto-Relacional

1. Permite especificar e utilizar Tipos de Abstratos Dados (TAD) da mesma forma que os tipos de dados pré-definidos

2. TAD são tipos de dados definidos pelo usuário que encapsulam comportamento e estrutura interna (atributos)

3. A tabela convencional é estendida para permitir a referência de objetos (referência de tipos),

TAD e valores alfanuméricos como domínio de colunas

(6)

Modelo Objeto-Relacional

4. Utiliza referências para representar conexões entre os objetos tornando as consultas baseadas em caminhos de referência mais compactas do que as consultas feitas com junção

5. Herança é implementada organizando os tipos em hierarquias

6. Utiliza os construtores set, list, varray ou nested table para organizar as coleções de objetos

(7)

Linguagem de Consultas

• O resultado de uma consulta ainda consiste em tabelas

▫ Um SGBD Objeto-Relacional ainda é relacional pois dá suporte ao armazenamento de dados em tabelas

formadas por linhas e colunas

• A linguagem de consultas para SGBDOR é uma extensão da linguagem SQL, utilizada para

definição e manipulação de dados e consultas

(8)

Tipos de Objetos

• Tipos de Objetos (Object Types)

▫ Objetos são abstrações de entidades do mundo real, como por exemplo, uma ordem de compra, um cliente, um produto...

▫ Um tipo de objeto funciona como um molde para criação de objetos, através da atribuição de valores a essa

estrutura de dados.

(9)

Tipos de Objetos

• Um Tipo de Objeto é um esquema de objeto com 3 componentes:

▫ Nome

▫ Atributos

▫ Métodos

• Um tipo de objeto pode ser usado para:

▫ Definir o domínio de atributos (“column object”) de tabelas

▫ Definir o tipo dos atributos de TAD ( “embedded object”)

▫ Criar uma tabela de objetos

(10)

Sintaxe

(Tipos Objetos & Tabelas de Objetos)

CREATE TYPE <NOME DO TIPO> AS OBJECT (

<LISTA DE ATRIBUTOS E MÉTODOS>

);

CREATE TABLE <NOME DA TABELA> OF <NOME DO TIPO> (

<LISTA DE PROPRIEDADES DOS ATRIBUTOS>

);

DROP TABLE <NOME DA TABELA>;

DROP TYPE <NOME DO TIPO>;

(11)

Sintaxe

(INSERT & DELETE)

INSERT INTO <NOME DA TABELA>

(<NOMES DE ATRIBUTOS>

VALUES (<VALORES>):

DELETE FROM <NOME DA TABELA>

WHERE <CONDIÇÃO>;

(12)

Exemplo

Tipos de Objetos & Tabelas de Objetos

create type ENDERECO_TY as object (Rua VARCHAR2(50),

Cidade VARCHAR2(25), Estado CHAR(2),

Cep NUMBER);

create table PESSOAS (Nome VARCHAR2(25),

Endereço ENDERECO_TY);

ENDERECO_TY é usado para definir o tipo (domínio) da

coluna Endereço da tabela PESSOAS.

(13)

Exemplo

Tipos de Objetos & Tabelas de Objetos

• Inserção na tabela pessoas

• Método construtor para o tipo ENDERECO_TY.

INSERT INTO PESSOAS VALUES

(Fernando Fonseca' , ENDERECO_TY(‘Rua Tal 57',‘Recife', ‘PE', 60160230))

(14)

Tabelas de Objetos

Objetos são diferentes de tabelas

Tipos de Objetos apenas definem uma estrutura lógica

Tabelas armazenam espaço físico

Cria-se tabelas de objetos previamente definidos

Cada tabela recebe instâncias de objetos de apenas um tipo

(15)

Observações (Tabelas de Objetos)

• Cada linha na tabela de objetos é uma instância de um objeto.

• O tipo de objeto é o único atributo da tabela de objetos.

• Recuperação de várias informações com uma consulta simples

(16)

Observações (Tabelas de Objetos)

• É possível criar várias tabelas do mesmo tipo

• Tabelas diferentes com o mesmo tipo podem ter variações entre si.

▫ Ex: os atributos escolhidos para chave estrangeira de cada tabela podem ser diferentes.

(17)

Manipulando Tabelas de Objetos

• Existem diferenças significativas no modo de utilização de uma tabela de objetos.

• Cada linha dentro de uma tabela de objetos possuirá um OID, e essas linhas poderão ser referenciadas como objetos.

(18)

Identificadores de Objetos

• Uma tabela de objetos contém uma coluna gerada pelo SGBD contendo o OID do “row

object”. O oid de um objeto é único e imutável.

• Sobre essa coluna de OID é também criado

automaticamente um índice para prover acesso eficiente sobre o objeto através do OID. A coluna de OID é equivalente a se ter uma coluna extra de 16 bytes para chave primária.

• Um OID permite que um “row object” seja

referenciado em atributos de outros objetos ou em colunas de tabelas relacionais.

(19)

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(T) FROM

<nome_tabela> T WHERE

<condicao>

(20)

Abordagem Objeto-Relacional

• Relacional: quebra de endereços ou vários telefones em colunas não-relacionadas

• OR:

Tipos para representar um endereço inteiro ou uma lista de telefones.

Tabelas Aninhadas para manter atributos dentro do objeto, em vez de armazená-los separadamente

(21)

Objeto Linha x Objeto Coluna

Objetos Linha: instâncias de objetos em uma tabela do seu tipo.

Objetos Coluna: objetos incorporados em outro objeto, o qual é o tipo da tabela.

▫ Não ocupam uma linha da tabela de objetos

(22)

Coleções

Coleções modelam:

▫atributos multivalorados

▫relacionamentos 1-m

O ORACLE oferece dois tipos de coleções:

▫VARRAYS

▫NESTED TABLES.

(23)

Coleções - VARRAY

• Armazenam uma série de entradas de dados associadas a uma linha de um banco de dados

• Modelam relacionamento 1-para-muitos e atributos multivalorados

CREATE TYPE <NOME DO CONJUNTO> AS VARRAY(<tamanho>) OF <TIPO DOS OBJETOS>;

(24)

Coleções – Nested Table

• É uma tabela que é representada como uma coluna dentro de outra tabela.

• É um conjunto não ordenado de elementos do mesmo tipo.

• Tem uma única coluna e o tipo da coluna é um tipo pré-definido ou um tipo de objeto.

CREATE TYPE <TIPO DA NESTED TABLE>

AS TABLE OF <TIPO DO OBJETO>;

(25)

Quando usar?!

• Ordem dos elementos é importante

• Número limitado de

elementos: armazena mais eficientemente

Ex: Telefones

• Fazer consultas SQL em

elementos da NT (não é possível em Varrays)

A ordem não é importante (SQL pode ordenar a saída se

necessário)

Não há limite de elementos

• Adicionar dados na NT (em Varrays não há como)

Varray Nested

Table

(26)

Observações (Coleções)

• Se é necessário eficiência na execução de

consultas sobre coleções, então é recomendado o uso de nested tables.

• Tanto VARRAY quanto NESTED TABLE podem usar o tipo REF como atributo.

CREATE TYPE <TIPO DA NESTED TABLE>

AS TABLE OF REF <TIPO DOS OBJETOS>;

CREATE TYPE <NOME DO CONJUNTO> AS

VARRAY(<tamanho>) OF REF <TIPO DOS OBJETOS>;

(27)

Caso de estudo

(28)

Exercício 1

• Criar os Objects Types necessários

• Criar as Objects Tables a partir dos tipos

Obs: Para melhor compreensão, nomeiem os

tipos criados como <nomeDoTipo_tipo> e

tabelas como <nomeDaTabela_tabela>

(29)

Entendendo o esquema. . .

id Cliente nome Cliente endereco_obj telefones_var Number

(NUMBER) Text (VARCHAR2(200)) Tipo Objeto

(Endereco_tipo) Varray

(Telefone_vartipo) P K

Telefone

Number(VARCHAR2(20))

Tabela Cliente_tab (de Cliente_tipo)

VARRAY Telefone_vartipo (de VAR CHAR2)

Objeto Coluna endereco_obj (de Endereco_tipo)

Lo g radou u ro Cidade Estado CEP

Text

(VARCHAR2(200) )

Text

(VARCHAR2(200) )

Text

(CHAR(2))

Number

(VARCHAR2(20))

P K

(30)

Resolução

Criação dos Tipos Necessários

CREATE TYPE ItemEstoque_tipo AS OBJECT(

idEstoque NUMBER, preco NUMBER,

taxa NUMBER );

CREATE TYPE Item_tipo AS OBJECT(

idItem NUMBER,

estoque_ref REF ItemEstoque_tipo, quant NUMBER,

desconto NUMBER );

CREATE TYPE Item_ntabtipo AS TABLE OF Item_tipo;

(31)

CREATE TYPE Telefone_vartipo

AS VARRAY(10) OF VARCHAR2(20);

CREATE TYPE Cliente_tipo AS OBJECT(

idCliente NUMBER,

nomeCliente VARCHAR2(200), endereco_obj Endereco_tipo, telefones_var Telefone_vartipo, ORDER MEMBER FUNCTION

compPedidosClientes(x IN Cliente_tipo) RETURN INTEGER );

CREATE TYPE Endereco_tipo AS OBJECT(

logradouro VARCHAR2(200), cidade VARCHAR2(200),

estado CHAR(2), cep VARCHAR2(20) );

(32)

CREATE TYPE Pedido_tipo AS OBJECT(

idPedido NUMBER,

Cliente_ref REF Cliente_tipo, dataPedido DATE,

dataEntrega DATE,

item_ntab Item_ntabtipo,

entregarNoEndereco_obj Endereco_tipo,

MAP MEMBER FUNCTION getIdPedido RETURN NUMBER, MEMBER FUNCTION somaItens RETURN NUMBER

);

(33)

Resolução

Criação das Tabelas Necessárias

CREATE TABLE Cliente_tab OF Cliente_tipo

(idCliente PRIMARY KEY);

CREATE TABLE Pedido_tab OF Pedido_tipo ( PRIMARY KEY (idPedido),

FOREIGN KEY (Cliente_ref) REFERENCES C liente_tab)

NESTED TABLE item_ntab STORE AS PedidoItem_ntab;

CREATE TABLE ItemEstoque_tab OF ItemEstoque_tipo

(idEstoque PRIMARY KEY)

(34)

Referências

• www.cin.ufpe.br/~if685

• http://disciplinas.lia.ufc.br/bdnc061/

• http://download-east.oracle.com/docs/cd /B19306_01

/appdev.102/b14260/adobjxmp.htm

R. Elmasri & S. Navathe – Sistemas de Banco de Dados, Addison Wesley,

2005, 4ª edição.

Referências

Documentos relacionados

Predicted values were calculated by measuring the joint probability of effects on isopods’ biomass variation found for single exposures to different soil

A partir deste momento é dada indicação para a seleção da população em estudo e é ativado o envio da medicação pelo promotor, ficando o FH da Unidade de

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Discussion The present results show that, like other conditions that change brain excitability, early environmental heat exposure also enhanced CSD propagation in adult rats.. The

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

 Caminho simples que contém todas as arestas do grafo (e,. consequentemente, todos os

Compreendendo- se que o estudo dos eventos do século XX podem ser relevantes e esclarecedores para a compreensão da história e da sociedade de hoje, e levando-se em conta o