A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Conceitos de SGBD Objeto-Relacional Oracle 10g [1]"— Transcrição da apresentação:

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: Próxima aula: 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
Permite especificar e utilizar Tipos de Abstratos Dados (TAD) da mesma forma que os tipos de dados pré- definidos TAD são tipos de dados definidos pelo usuário que encapsulam comportamento e estrutura interna (atributos) 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
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 Herança é implementada organizando os tipos em hierarquias 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
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', ))

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 Nested Table 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)

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
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) P K 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 (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 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
east.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.


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

Apresentações semelhantes


Anúncios Google