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,...
![Page 1: Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 1.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/1.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/2.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/3.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/4.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/5.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/6.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/7.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/8.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/9.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/10.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/11.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/12.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/13.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/14.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/15.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/16.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/17.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/18.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/19.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/20.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/21.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/22.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/23.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/24.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/25.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/26.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/27.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/28.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/29.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/30.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/31.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/32.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/33.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc145497959413d8e0a20/html5/thumbnails/34.jpg)
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