conceitos de sgbd objeto-relacional oracle 10g [1] monitoria gdi andré braga, daniel penaforte,...

34
Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Upload: internet

Post on 21-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Conceitos de SGBD Objeto-Relacional

Oracle 10g [1]

Monitoria GDI

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

1

Page 2: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

2

Page 3: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

3

Page 4: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

4

Page 5: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Modelo Objeto-Relacional1. 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

5

Page 6: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Modelo Objeto-Relacional4. 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

6

Page 7: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

7

Page 8: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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.

8

Page 9: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

9

Page 10: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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>;

10

Page 11: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Sintaxe(INSERT & DELETE)

INSERT INTO <NOME DA TABELA>(<NOMES DE ATRIBUTOS> VALUES (<VALORES>):

DELETE FROM <NOME DA TABELA>WHERE <CONDIÇÃO>;

11

Page 12: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

ExemploTipos 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 paradefinir o tipo (domínio) dacoluna Endereço da tabela PESSOAS.

12

Page 13: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

ExemploTipos 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))

13

Page 14: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

14

Page 15: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

15

Page 16: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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.

16

Page 17: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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.

17

Page 18: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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.

18

Page 19: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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>

19

Page 20: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

20

Page 21: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

21

Page 22: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Coleções• Coleções modelam:

▫atributos multivalorados▫relacionamentos 1-m

• O ORACLE oferece dois tipos de coleções:▫VARRAYS▫NESTED TABLES.

22

Page 23: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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> ASVARRAY(<tamanho>) OF <TIPO DOS

OBJETOS>;

23

Page 24: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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>;

24

Page 25: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

25

Page 26: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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> ASVARRAY(<tamanho>) OF REF <TIPO DOS

OBJETOS>;

26

Page 27: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Caso de estudo

27

Page 28: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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>

28

Page 29: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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

29

Page 30: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

ResoluçãoCriaçã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;

30

Page 31: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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));

31

Page 32: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

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 );

32

Page 33: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

ResoluçãoCriaçã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)

33

Page 34: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1

Referências

•www.cin.ufpe.br/~if685•http://disciplinas.lia.ufc.br/bdnc061/•http://download-east.oracle.com/docs/cd/B

19306_01/appdev.102/b14260/adobjxmp.htm

•R. Elmasri & S. Navathe – Sistemas de Banco de Dados, Addison Wesley, 2005, 4ª edição.

34