Você está na página 1de 19

Banco de Dados Objeto Relacional

caractersticas

Banco de Dados Objeto- Relacional (BDOR)


Banco de dados relacional com extenses para manipulao de objetos e outras fatores de banco de dados orientado a objetos.
Classes, Herana, Agregao, Tipos definidos pelo usurio, ...

Uso da SQL para acesso aos objetos

Solange N. Alves de Souza

Banco de Dados Objeto- Relacional (BDOR)


Permite especificar e utilizar Tipos Definidos pelo Usurio (TDU ou UDT User-Defined Type) da mesma forma que os tipos de dados pr-definidos.
Tipos Definidos pelo Usurio que encapsulam estrutura interna (atributos). comportamento e

A tabela convencional estendida para permitir a referncia de objetos (referncia de tipos), UDTs e estruturas como domnio de colunas (Row type).
uso de referncias para representar conexes inter-objetos, isso torna consultas mais compactas que quando feitas com juno;

Herana hierarquias;

implementada

organizando

todos

os

tipos

em

Utiliza os construtores colees de objetos;

set, list, multiset ou array para organizar


Solange N. Alves de Souza 3

Estruturas de BDOR
Tipo de objetos:
Um tipo de objeto funciona como um molde para criao de objetos, atravs da atribuio 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 coleo (collection type) Criar uma tabela de objetos

Solange N. Alves de Souza

Tipos de objetos Row Type

1. permite definir atributos multivalorados estrutura


aninhada

2. define uma estrutura de tupla (registro)


Fornecedores codfornec nomefornec endfornec Row type

TEnd rua nro cidade CEP

Domnio do atributo um tipo * Noo de agregao*

Criando um tipo e uma tabela com atributos, cujo domnio do tipo definido

Solange N. Alves de Souza

TEnd rua nro cidade CEP

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

Solange N. Alves de Souza

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

Solange N. Alves de Souza

Usando o tipo definido no PostgreSQL


Fornecedores

insert into fornecedores values (nextval('s_fornec'), 'estrela', row ('Dr. Camiso', 3,'SoPaulo',21360055)); insert into fornecedores values (nextval('s_fornec'), 'estrela', ('Dr. Camiso', 3,'SoPaulo',21360000)); update fornecedores set endfornec=('Camiso', 3,'SoPaulo',21360055) Solange N. Alves de Souza where codfornec=3

Consultando a estrutura aninhada


select * from fornecedores where (endfornec).cidade='Osasco';
codfornec nomefornec 4 5 lua lua endfornec ("Dr Arago",12,Osasco,550776210) ("Dr Arago",12,Osasco,550776210)

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

rua Dr Arago Dr Arago

Solange N. Alves de Souza

Consultando atributos aninhados - mais


Notao de ponto para navegao nos atributos que fazem parte da estrutura aninhada:
select endfornec..rua from fornecedores where endfornec..cidade='Osasco';

No no PostgreSQL

Solange N. Alves de Souza

10

Consultando ... mais


Removendo um tipo
Drop type tEnd
Podem haver campos cujo tipo seja TEnd

Drop type tEnd cascade

campos aninhados so removidos da tabela

Solange N. Alves de Souza

11

Tipos de Objetos tipo coleo


1. Uma coleo composta por elementos que podem ser
de um tipo simples, ou uma UDT, ou row type.

2. Tipos coleo: sets, lists, arrays (coleo ordenada).

Solange N. Alves de Souza

12

Exemplo - Array
Coleo ordenada Sintaxe SQL99 (arrays de uma dimenso)

NotaVenda nmero cliente data item: ARRAY (10) Qtd: ARRAY (10)

Solange N. Alves de Souza

13

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

Solange N. Alves de Souza

14

Inserindo dados
insert into notavenda values (1, 'Joo Antnio', '10-10-2007', ARRAY[1,2,3], ARRAY[1,20,4]);

numero 1

data

item

qtd_item

cliente

10/10/2007 {1,2,3}

{1,20,4} Joo Antnio

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 mtodos
Solange N. Alves de Souza 15

mais
No PostgreSQL possvel criar arrays bi-dimensionais.
create table notavenda2 ( numero numeric, cliente varchar(30), data date, item_e_qtd integer [10][10]);
numero 1 cliente data Item_e_qtd

Joo Antnio 10/10/2007 {{1,2,3}, {1,20,4}}

Solange N. Alves de Souza

16

Outros tipos de colees


Alguns SGBDORs suportam outros tipos de coleo:
Informix
List, Set e Multiset

Oracle
VARRAY (array varivel cujos elementos podem ser objetos) NESTED TABLE (atributo cujo domnio uma tabela aninhada) PostGreSQL Pode-se definir um atributo cujo domnio uma tabela
Solange N. Alves de Souza 17

Tipos de Objetos Criao de Tabelas de objetos


Indicao do tipo a que pertence Vrias tabelas podem ser do mesmo tipo create type TFornec as ( codfornec numeric (3), nomefornec varchar (30)) create table fornecedores of type TFornec;
PostgreSQl no permite a criao de tabelas de tipos

TFornec codfornec nomefornec endfornec


18

Solange N. Alves de Souza

OID (Identificadores de Objetos)


o valor indicado por atributos de referncia pode ser uma chave primria

CREATE TABLE Fornecedores OF TYPE TFornec REF IS codFornec PRIMARY KEY;

Solange N. Alves de Souza

19

OID - continua pode ser definido pelo usurio ou pelo sistema


CREATE TABLE Produtos OF TYPE TProd REF IS codProd USER GENERATED;
atributo definido pelo usurio, mas seu valor controlado pelo sistema (OID)

CREATE TABLE Produtos OF TYPE TProd REF IS SYSTEM GENERATED;


OID gerado e controlado pelo sistema

Solange N. Alves de Souza

20

10

Relacionamento entre Objetos


Esquema Modelo Relacional

relacionamento
Solange N. Alves de Souza 21

Esquema de Objetos

Referencias so usadas para representar relacionamentos

Fornecedores

Compras

Produto

TCompra TFornec codfornec nomefornec endfornec fornecedor produto data qtd

TProd codprod descrprod precoprod


22

Solange N. Alves de Souza

11

Referncia de objetos
Definio de relacionamento entre objetos No semelhante a uma chave estrangeira (chave estrangeira pode ser composta) s referencia uma tabela que tenha definido um OID

Solange N. Alves de Souza

23

Referncia de objetos - exemplo


create type TCompras as ( fornecedor REF (tfornec), Produto REF (tprod), data date, Qtd integer); CREATE TABLE Compras OF TYPE TCompra;
Postgre no oferece suporte a referncia de objetos

Acesso a objetos relacionados


SELECT fornecedor -> nomeFornec FROM Compras WHERE qtde > 1000 AND produto -> codProd = 45;

indica uma referncia a um OID e no a um atributo de um componente agregado

Solange N. Alves de Souza

24

12

Em BDR

SELECT f.nomeFornec FROM Compras c join Fornecedor f on c.codfornec = f.codfornec WHERE qtde > 1000 AND codProd = 45;
Solange N. Alves de Souza 25

Criando objetos de referncia


Indicao dos valores de OIDs

INSERT INTO Compras VALUES (REF(F102), REF(1002), 10/12/03,1300);

Solange N. Alves de Souza

26

13

Escopo de Referncia
Uma referncia indica um tipo
Deve-se definir o escopo da referncia quando mais de uma tabela pertence ao tipo

SCOPE FOR <nome_atributo> IS <nome_tabela>

Solange N. Alves de Souza

27

Fornecedores

Compras fornecedor TCompra

Produto

TFornec codfornec nomefornec endfornec

fornecedor produto data qtd

TProd codprod descrprod precoprod

CREATE TABLE Compras OF TYPE TCompra SCOPE FOR fornecedor IS Fornecedores;


Solange N. Alves de Souza 28

14

Tipos de Objetos UDT


Define comportamento para os objetos
Encapsulamento de atributos e mtodos

Permite herana de um tipo para um subtipo CREATE TYPE <nometipo> ( <lista de atributos>, [<declaraoAssinMtodos>]) [INSTANTIABLE] [ [NOT] FINAL]
Pode gerar tabelas Pode ou no ser especializado
29

Solange N. Alves de Souza

CREATE TYPE <nomeobjeto> AS OBJECT (atributo1 tipo_dado, ..., atributoN tipo_dado, MEMBER PROCEDURE <nomeprocedimeto> [(parmetro1 [IN | OUT | IN OUT] tipo_dado, ..., parmetroN [IN | OUT | IN OUT] tipo_dado)], BEGIN <corpo do procedimento> END <member nomeprocedimento> )

Solange N. Alves de Souza

30

15

Modelagem OR Tipo definido pelo usurio (UDT)


TEmpregado RG nome_emp end_emp gerente salrio_base comisso salrio()

TEnd rua nro cidade CEP

Empregados
Solange N. Alves de Souza 31

UDT para o modelo


create type TEmpregado ( RG integer, nome_emp varchar (40), end_emp TEnd, gerente REF (TEmpregado), salario_base decimal (7,2), comisso decimal (7,2), METHOD salrio () RETURNS decimal (7,2); ...) INSTANTIABLE NOT FINAL;
Pode gerar tabelas Pode ou no ser especializado
32

Lista de atributos

Declarao de assinatura de mtodos

create table Empregados of N. Alves de Souza type TEmpregado; Solange

16

Mtodos
S podem ser definidos dentro de um TAD Identificao do mtodo a ser executado determinado em tempo de execuo (late binding)
Depende do objeto que o invoca ou de parmetros

Solange N. Alves de Souza

33

Acesso a Mtodos ou Funes


Mtodos ou funes podem ser usados em consultas: Select RG, nome_emp From empregados Where salario() > 10000.00;

Solange N. Alves de Souza

34

17

Herana
Herana mltipla em geral no permitida CREATE TYPE <nomeTAD> UNDER <nomeTAD> (...)

CREATE TYPE TProfessor UNDER TEmpregado ( titulao varchar(15), gratificao decimal (7,2), OVERRRIDING METHOD salrio() RETURNS decimal (7,2); ...) Instantiable Not final Solange N. Alves de Souza 35

LOBs (Large OBjects)


Objetos de tamanho grande Podem ser definidos como domnios de atributos de tabelas em BDOR.
so agora considerados parte do esquema do BD e no precisam ser mantidos e tratados em arquivos separados.

Solange N. Alves de Souza

36

18

Tipos de LOBs
CLOB (Character LOB texto longo) BLOB (Binary LOB imagem) So definidos em termos de KB, MB e GB CREATE TABLE empregados (... currculo CLOB(500K), fotografia BLOB(12M), ...)
Solange N. Alves de Souza 37

LOBs - Operaes
CONCATENATION, SUBSTRING, POSITION, OVERLAY, predicados LIKE, ..., funes definidas pelo usurio. Empregados ... curriculo: CLOB(500K) fotografia:BLOB(12M) ... SELECT nome FROM empregados WHERE currculo LIKE *UFSC*
Solange N. Alves de Souza 38

PostGreSQL no suporta tipos de dados LOBs e suas operaes

19

Você também pode gostar