Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte,...
Transcript of Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte,...
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
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
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
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
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
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
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
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
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
Sintaxe(INSERT & DELETE)
INSERT INTO <NOME DA TABELA>(<NOMES DE ATRIBUTOS> VALUES (<VALORES>):
DELETE FROM <NOME DA TABELA>WHERE <CONDIÇÃO>;
11
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
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
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
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
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
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
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
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
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
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
Coleções• Coleções modelam:
▫atributos multivalorados▫relacionamentos 1-m
• O ORACLE oferece dois tipos de coleções:▫VARRAYS▫NESTED TABLES.
22
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
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
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
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
Caso de estudo
27
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
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
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
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
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
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
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