aula objeto relacional

19
1 Banco de Dados Objeto Relacional características Solange N. Alves de Souza 2 Banco de Dados Objeto- Relacional (BDOR) Banco de dados relacional com extensões para manipulação de objetos e outras fatores de banco de dados orientado a objetos. Classes, Herança, Agregação, Tipos definidos pelo usuário, ... Uso da SQL para acesso aos objetos

Upload: magayver-cassiano-caetano-nunes

Post on 21-Oct-2015

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula Objeto Relacional

1

Banco de Dados Objeto Relacional

características

Solange N. Alves de Souza 2

Banco de Dados Objeto- Relacional (BDOR)

Banco de dados relacional com extensões para manipulação de objetos e outras fatores de banco de dados orientado a objetos.

Classes,Herança,Agregação,Tipos definidos pelo usuário, ...

Uso da SQL para acesso aos objetos

Page 2: Aula Objeto Relacional

2

Solange N. Alves de Souza 3

Banco de Dados Objeto- Relacional (BDOR)Permite especificar e utilizar Tipos Definidos pelo Usuário (TDU ou UDT – User-Defined Type) da mesma forma que os tipos de dados pré-definidos.

Tipos 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), UDTs e estruturas como domínio de colunas (Row type).

uso de referências para representar conexões inter-objetos, isso torna consultas mais compactas que quando feitas com junção;

Herança é implementada organizando todos os tipos em hierarquias;

Utiliza os construtores set, list, multiset ou array para organizar coleções de objetos;

Solange N. Alves de Souza 4

Estruturas de BDOR

Tipo de objetos: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.

Um tipo de objeto pode ser usado para:Criar um UDT

Criar uma estrutura (row type)

Criar tipos coleção (collection type)

Criar uma tabela de objetos

Page 3: Aula Objeto Relacional

3

Solange N. Alves de Souza 5

Criando um tipo e uma tabela com atributos, cujo domínio édo tipo definido

Tipos de objetos – Row Type

1. permite definir atributos multivalorados – estrutura aninhada

2. define uma estrutura de tupla (registro)

Fornecedores

codfornecnomefornecendfornec TEnd

ruanro

cidadeCEP

Row typeDomínio do

atributo é um tipo

* Noção de agregação*

Solange N. Alves de Souza 6

create type TEnd as object(rua varchar (20),nro numeric (4),cidade varchar(20),CEP numeric(9));

TEnd

ruanro

cidadeCEP

Page 4: Aula Objeto Relacional

4

Solange N. Alves de Souza 7

create type TEnd as (rua varchar (20),nro numeric (4),cidade varchar(20),CEP numeric(9));

Create table Fornecedores(codfornec numeric (3),nomefornec varchar (30),endfornec TEnd);

PostGreSQL

Solange N. Alves de Souza 8

insert into fornecedores values (nextval('s_fornec'), 'estrela', row ('Dr. Camisão', 3,'SãoPaulo',21360055));

insert into fornecedores values (nextval('s_fornec'), 'estrela', ('Dr. Camisão', 3,'SãoPaulo',21360000));

update fornecedores set endfornec=('Camisão', 3,'SãoPaulo',21360055)where codfornec=3

Usando o tipo definido no PostgreSQLFornecedores

Page 5: Aula Objeto Relacional

5

Solange N. Alves de Souza 9

select (endfornec).rua from fornecedoreswhere (endfornec).cidade='Osasco';

select * from fornecedoreswhere (endfornec).cidade='Osasco';

("Dr Aragão",12,Osasco,550776210)lua5

("Dr Aragão",12,Osasco,550776210)lua4

endfornecnomeforneccodfornec

Dr AragãoDr Aragão

rua

Consultando a estrutura aninhada

Solange N. Alves de Souza 10

Consultando atributos aninhados - mais

Notação de ponto para navegação nos atributos que fazem parte da estrutura aninhada:

select endfornec..rua from fornecedoreswhere endfornec..cidade='Osasco';

Não no PostgreSQL

Page 6: Aula Objeto Relacional

6

Solange N. Alves de Souza 11

Consultando ... mais

Removendo um tipo

Drop type tEnd

Drop type tEnd cascade

Podem haver campos cujo tipo

seja TEnd

campos aninhados são removidos da

tabela

Solange N. Alves de Souza 12

Tipos de Objetos – tipo coleção

1. Uma coleção é composta por elementos que podem ser de um tipo simples, ou uma UDT, ou row type.

2. Tipos coleção: sets, lists, arrays (coleção ordenada).

Page 7: Aula Objeto Relacional

7

Solange N. Alves de Souza 13

Exemplo - Array

Coleção ordenada

Sintaxe SQL99 (arrays de uma dimensão)

NotaVenda

númeroclientedataitem: ARRAY (10)Qtd: ARRAY (10)

Solange N. Alves de Souza 14

Usando o tipo ARRAY - exemplo

create table notavenda (numero numeric,cliente varchar(30),data date,item integer array[10],qtd_item integer array [10]);

Tipo de dado simples

Page 8: Aula Objeto Relacional

8

Solange N. Alves de Souza 15

Inserindo dados

insert into notavenda values (1, 'João Antônio', '10-10-2007', ARRAY[1,2,3], ARRAY[1,20,4]);

João Antônio{1,20,4}{1,2,3}10/10/20071

clienteqtd_itemitemdatanumero

E se o elemento do array fosse do tipo row type ou

UDT

row type – atributo e tipo de dado

UDT – atributos simpes e complexos e métodos

Solange N. Alves de Souza 16

mais

No PostgreSQL é possível criar arrays bi-dimensionais.

create table notavenda2 (numero numeric,cliente varchar(30),data date,item_e_qtd integer [10][10]);

{{1,2,3}, {1,20,4}}10/10/2007João Antônio1

Item_e_qtddataclientenumero

Page 9: Aula Objeto Relacional

9

Solange N. Alves de Souza 17

Outros tipos de coleções

Alguns SGBDOR’s suportam outros tipos de coleção:

Informix

List, Set e Multiset

Oracle

VARRAY (array variável cujos elementos podem ser objetos)

NESTED TABLE (atributo cujo domínio é uma tabela aninhada)

PostGreSQL

Pode-se definir um atributo cujo domínio é uma tabela

Solange N. Alves de Souza 18

Tipos de Objetos – Criação de Tabelas de objetos

Indicação do tipo a que pertence

Várias tabelas podem ser do mesmo tipo

create type TFornec as (codfornec numeric (3),nomefornec varchar (30))

create table fornecedores of type TFornec;

PostgreSQl não permite a criação de

tabelas de tipos

TFornec

codfornecnomefornecendfornec

Page 10: Aula Objeto Relacional

10

Solange N. Alves de Souza 19

OID (Identificadores de Objetos)

é o valor indicado por atributos de referência

pode ser uma chave primária

CREATE TABLE Fornecedores OF TYPE TFornecREF IS codFornec PRIMARY KEY;

Solange N. Alves de Souza 20

OID - continua

pode ser definido pelo usuário ou pelo sistema

CREATE TABLE Produtos OF TYPE TProdREF IS codProd USER GENERATED;

atributo definido pelo usuário, mas seu valor é controlado pelo sistema (OID)

CREATE TABLE Produtos OF TYPE TProdREF IS SYSTEM GENERATED;

OID gerado e controlado pelo sistema

Page 11: Aula Objeto Relacional

11

Solange N. Alves de Souza 21

Relacionamento entre Objetos

Esquema Modelo Relacional

relacionamento

Solange N. Alves de Souza 22

Esquema de Objetos

TProd

codproddescrprodprecoprod

TFornec

codfornecnomefornecendfornec

TCompra

fornecedorprodutodataqtd

Fornecedores ProdutoCompras

Referencias são usadas para representar

relacionamentos

Page 12: Aula Objeto Relacional

12

Solange N. Alves de Souza 23

Referência de objetos

Definição de relacionamento entre objetos

Não é semelhante a uma chave estrangeira (chave estrangeira pode ser composta)

só referencia uma tabela que tenha definido um OID

Solange N. Alves de Souza 24

SELECT fornecedor -> nomeFornecFROM ComprasWHERE qtde > 1000AND produto -> codProd = 45;

Referência de objetos - exemplo

Acesso a objetos relacionados

create type TCompras as (fornecedor REF (tfornec),Produto REF (tprod),data date,Qtd integer);

CREATE TABLE Compras OF TYPE TCompra;

indica uma referência a um OID e não a um atributo de um componente agregado

Postgre não oferece suporte a referência de objetos

Page 13: Aula Objeto Relacional

13

Solange N. Alves de Souza 25

Em BDR

SELECT f.nomeFornecFROM Compras c join Fornecedor f

on c.codfornec = f.codfornecWHERE qtde > 1000AND codProd = 45;

Solange N. Alves de Souza 26

Criando objetos de referência

Indicação dos valores de OIDs

INSERT INTO ComprasVALUES (REF(‘F102’), REF(1002), ’10/12/03’,1300);

Page 14: Aula Objeto Relacional

14

Solange N. Alves de Souza 27

Escopo de Referência

Uma referência indica um tipo

Deve-se definir o escopo da referência quando mais de uma tabela pertence ao tipo

SCOPE FOR <nome_atributo> IS <nome_tabela>

Solange N. Alves de Souza 28

CREATE TABLE Compras OF TYPE TCompra

SCOPE FOR fornecedor IS Fornecedores;

TProd

codproddescrprodprecoprod

TCompra

fornecedorprodutodataqtd

TFornec

codfornecnomefornecendfornec

Fornecedores ProdutoCompras

fornecedor

Page 15: Aula Objeto Relacional

15

Solange N. Alves de Souza 29

Tipos de Objetos – UDT

Define comportamento para os objetos

Encapsulamento de atributos e métodos

Permite herança de um tipo para um subtipo

CREATE TYPE <nometipo> (<lista de atributos>,[<declaraçãoAssinMétodos>])

[INSTANTIABLE]

[ [NOT] FINAL]

Pode gerar tabelas

Pode ou não ser especializado

Solange N. Alves de Souza 30

CREATE TYPE <nomeobjeto> AS OBJECT(atributo1 tipo_dado, ...,atributoN tipo_dado,

MEMBER PROCEDURE <nomeprocedimeto>[(parâmetro1 [IN | OUT | IN OUT] tipo_dado, ...,parâmetroN [IN | OUT | IN OUT] tipo_dado)],

BEGIN<corpo do procedimento>

END <member nomeprocedimento>)

Page 16: Aula Objeto Relacional

16

Solange N. Alves de Souza 31

Modelagem OR – Tipo definido pelo usuário (UDT)

TEmpregado

RGnome_empend_empgerentesalário_basecomissão

salário()

Empregados

TEnd

ruanro

cidadeCEP

Solange N. Alves de Souza 32

UDT para o modelo

create type TEmpregado (RG integer,nome_emp varchar (40),end_emp TEnd,gerente REF (TEmpregado),salario_base decimal (7,2),comissão decimal (7,2),

METHOD salário () RETURNS decimal (7,2); ...)

INSTANTIABLENOT FINAL;

create table Empregados of type TEmpregado;

Pode gerar tabelas

Pode ou não ser especializado

Lista de atributos

Declaração de assinatura de métodos

Page 17: Aula Objeto Relacional

17

Solange N. Alves de Souza 33

Métodos

Só podem ser definidos dentro de um TAD

Identificação do método a ser executado é determinado em tempo de execução (“late binding”)

Depende do objeto que o invoca ou de parâmetros

Solange N. Alves de Souza 34

Acesso a Métodos ou Funções

Métodos ou funções podem ser usados em consultas:

Select RG, nome_emp

From empregados

Where salario() > 10000.00;

Page 18: Aula Objeto Relacional

18

Solange N. Alves de Souza 35

Herança

Herança múltipla em geral não é permitida

CREATE TYPE <nomeTAD> UNDER <nomeTAD> (...)

CREATE TYPE TProfessor UNDER TEmpregado (titulação varchar(15),gratificação decimal (7,2),OVERRRIDING METHOD salário() RETURNS decimal (7,2);...)InstantiableNot final

Solange N. Alves de Souza 36

LOBs (Large OBjects)

Objetos de tamanho grande

Podem ser definidos como domínios de atributos de tabelas em BDOR.

são agora considerados parte do esquema do BD e não precisam ser mantidos e tratados em arquivos separados.

Page 19: Aula Objeto Relacional

19

Solange N. Alves de Souza 37

Tipos de LOBs

CLOB (Character LOB – texto longo)

BLOB (Binary LOB – imagem)

São definidos em termos de KB, MB e GB

CREATE TABLE empregados (...currículo CLOB(500K),fotografia BLOB(12M),

...)

Solange N. Alves de Souza 38

LOBs - Operações

CONCATENATION, SUBSTRING, POSITION, OVERLAY,

predicados LIKE, ..., funções definidas pelo usuário.

SELECT nomeFROM empregadosWHERE currículo LIKE ‘*UFSC*’

Empregados...

curriculo: CLOB(500K)fotografia:BLOB(12M)

...

PostGreSQLnão suporta

tipos de dados LOBs e suas operações