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
INSERT INTO PESSOAS VALUES
(Fernando Fonseca' , ENDERECO_TY(‘Rua Tal 57',‘Recife', ‘PE', 60160230))
• Método construtor para o tipo
ENDERECO_TY.
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?!
Varray
• Ordem dos elementos é importante
• Número limitado de elementos:
armazena mais eficientemente
• Ex: Telefones
Nested Table
• 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)
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. . .
Tabela Cliente_tab (de Cliente_tipo)
id Cliente
nome Cliente
endereco_obj
telefones_var
Number
(NUMBER)
Text (VARCHAR2(200))
Tipo Objeto
(Endereco_tipo)
Varray (Telefone_vartipo)
PK
VARRAY Telefone_vartipo (de VAR CHAR2)
Telefone
Number(VARCHAR2(20))
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))
PK
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 Endereco_tipo AS OBJECT(
logradouro VARCHAR2(200),
cidade VARCHAR2(200),
estado CHAR(2),
cep VARCHAR2(20)
);
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
);
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://downloadeast.oracle.com/docs/cd/B19306_01/appdev.10
2/b14260/adobjxmp.htm
• R. Elmasri & S. Navathe – Sistemas de
Banco de Dados, Addison Wesley, 2005,
4ª edição.
Download

[2007-2] SGBD Objeto