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

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

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

Apresentações semelhantes


Apresentação em tema: "Conceitos de SGBD Objeto-Relacional Oracle 10g [1] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina 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 1

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 2

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 3

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 4

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 5

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 6

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 7

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. 8

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 9

10 Sintaxe (Tipos Objetos & Tabelas de Objetos) CREATE TYPE AS OBJECT ( ); CREATE TABLE OF ( ); DROP TABLE ; DROP TYPE ; 10

11 Sintaxe (INSERT & DELETE) INSERT INTO ( VALUES ( ): DELETE FROM WHERE ; 11

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. 12

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', )) 13

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 14

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 15

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. 16

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. 17

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. 18

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 T WHERE 19

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 20

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 21

22 Coleções Coleções modelam: ▫atributos multivalorados ▫relacionamentos 1-m O ORACLE oferece dois tipos de coleções: ▫VARRAYS ▫NESTED TABLES. 22

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 AS VARRAY( ) OF ; 23

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 AS TABLE OF ; 24

25 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

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 AS TABLE OF REF ; CREATE TYPE AS VARRAY( ) OF REF ; 26

27 Caso de estudo 27

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 e tabelas como 28

29 Entendendo o esquema... id Clientenome Cliente endereco_objtelefones_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 roCidadeEstadoCEP Text (VARCHAR2(200)) Text (CHAR(2)) Number (VARCHAR2(20)) P K 29

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

31 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

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

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

34 Referências east.oracle.com/docs/cd/B19306_01/appdev.10 2/b14260/adobjxmp.htmhttp://download- east.oracle.com/docs/cd/B19306_01 R. Elmasri & S. Navathe – Sistemas de Banco de Dados, Addison Wesley, 2005, 4ª edição. 34


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

Apresentações semelhantes


Anúncios Google