Sie sind auf Seite 1von 41

Banco de Dados

Mdulo 10 - ODMG

modulo10.PRZ

11/09/01

Introduo
ODMG - Object Database Management Group Modelo de Objetos ODL - Object Definition Language OQL - Object QueryLanguage

OMG - Object Management Group

modulo10.PRZ

11/09/01

Introduo
ODMG - Object Database Management Group:
Fundao: Objetivo: setembro de 1991 definir um padro para garantir a portabilidade das aplicaes escritas seguindo o modelo OO Presidente: R. G. G. Cattell Web site: www.odmg.org Verses: ODMG 1.2 (1993) ODMG 2.0 (maro 1997) ODMG 3.0 (janeiro 2000)

Padres definidos pelo ODMG:


modelo de objetos linguagem de definio de dados - ODL linguagem de consulta - OQL acoplamento com C++ , Smalltalk e Java
modulo10.PRZ 3 11/09/01

Modelo de Objetos
Literal = valor + comportamento Classificao dos literais:
atomic
corresponde aos tipos de dados simples

estrutured criado usando o construtor Struct collection


criado com os construtores Set<t>, Bag<t>, List<t>, Array<t>, Dictionary<k,t> onde t o tipo de objetos ou literais na coleo e k o tipo da chave, no caso de dicionrios (note que t pode ser um tipo de objeto ou literal)

modulo10.PRZ

11/09/01

Modelo de Objetos
Objeto = OID + nome + estado + comportamento
OID = identificador interno gerado pelo sistema, no sendo visvel ao usurio nome: opcional dever ser nico no BD a que o objeto pertence os objetos nomeados serviro de pontos de entrada para o BD estado = valores das propriedades do objeto, incluindo: atributos do objeto relacionamentos (binrios) entre o objeto e outros objetos comportamento = operaes permitidas sobre o objeto
modulo10.PRZ 5 11/09/01

Modelo de Objetos
Fbrica = objeto utilizado para gerar ou criar outros objetos
possui necessariamente uma operao que gera novos objetos (como novos OIDs)

modulo10.PRZ

11/09/01

Modelo de Objetos
Interface = definio de estrutura + assinaturas de operaes
as interfaces no podem ser instanciadas, ou seja, no podem gerar conjuntos de objetos utilizadas essencialmente para organizar as operaes

modulo10.PRZ

11/09/01

Modelo de Objetos
Classes = definio de estrutura + assinaturas de operaes
as classes podem ser instanciadas, ou seja, podem gerar extenses - conjuntos de objetos - e definir chaves para estas extenses a definio da estrutura inclui a especificao de: atributos:
simples e complexos de referncia, utilizados para representar relacionamentos 1-n entre os objetos da classe e objetos de outra classe

relacionamentos:
utilizados para representar relacionamentos binrios 1-n ou n-m entre os objetos da classe e objetos de outra classe: permitem especificar o relacionamento inverso no devem ser utilizados quando o relacionamento n-m possui atributos
modulo10.PRZ 8 11/09/01

Modelo de Objetos
Herana Comportamental (via ":")
uma interface pode ser uma especializao de outras interfaces, das quais herda as operaes uma classe pode ser uma especializao de outras interfaces, das quais herda as operaes

Herana Comportamental e Estrutural (via Extends)


uma classe pode ser uma especializao de apenas outra classe, da qual herda a estrutura e as operaes

modulo10.PRZ

11/09/01

Modelo de Objetos
Hierarquia de Interfaces Pr-definidas em ODMG:

Object

ObjectFactory

Iterator

Collection

Date

Time

Timestamp

Interval

Set

List

Bag

Array

Dictionary

modulo10.PRZ

10

11/09/01

Modelo de Objetos
Hierarquia de Interfaces Pr-definidas em ODMG (cont.):
operaes de ObjectFactory: new() cria um novo objeto (com um novo OID)

modulo10.PRZ

11

11/09/01

Modelo de Objetos
Hierarquia de Interfaces Pr-definidas em ODMG (cont.):
operaes de Collection: is_empty() insert_element(e) remove_element(e) contains_element(e) create_iterator() retorna um iterator para varrer a coleo excees para Collection: ElementNotFound

modulo10.PRZ

12

11/09/01

Modelo de Objetos
Hierarquia de Interfaces Pr-definidas em ODMG (cont.):
operaes de Iterator: reset() next_position() get_element(e) volta o iterador para o primeiro elemento avana o iterador para o prximo elemeto retorna o elemento corrente

excees para Iterator: NoMoreElements

modulo10.PRZ

13

11/09/01

Modelo de Objetos
Extenso = conjunto de objetos seguindo a definio de uma classe
uma extenso possui um nome uma extenso pode ter uma ou mais chaves, definidas por listas de atributos ou relacionamentos da classe se C uma especializao de D, ento a extenso de C deve ser um subconjunto de D

modulo10.PRZ

14

11/09/01

Modelo de Objetos
Banco de dados:
ODMG prov duas interfaces, com as respectivas operaes, para lidar com bancos de dados:

Interface operaes
DatabaseFactory new() Database bind(p,n) unbind(n) lookup(n)

comentrios
cria novo BD associa o objeto persistente p ao nome n desassocia o nome retorna o objeto de nome n

modulo10.PRZ

15

11/09/01

ODL - Object Definition Language


ODL:
segue o modelo OO definido pelo ODMG, permitindo definir: interfaces classes especializaes estruturais e comportamentais

modulo10.PRZ

16

11/09/01

ODL - Object Definition Language


Leilo
composto-por

Artista
cria

compe

criada-por

Lote
inclui arremado-por incluida-em

Obra

(extends)
arremata

Cliente

Pintura

Escultura

Outra

modulo10.PRZ

17

11/09/01

ODL - Object Definition Language


composto-por Leilo 1 n Lote n m Obra
o1 o2 o3 o4
o1 o2 o3 o4 o1 o2 o3 o4

compe
L1 L2

L1 L2

L1

L2

t1 t2 t3 t4

t1

t2 t3 t4

t1

t2 t3 t4

incluida-em
modulo10.PRZ 18

inclui
11/09/01

ODL - Object Definition Language


class Artista ( extent artistas nome) key ( nome; attribute string DN; attribute date DN; attribute date bio; attribute string relationship set<Obra> cria inverse Obra::criada-por; void cadastra ( in integer nome; in date dn; in date df ) raises(nome_duplicado) )

modulo10.PRZ

19

11/09/01

ODL - Object Definition Language


class Leilo ( extent leiles data) key ( data; attribute date local; attribute string leiloeiro; attribute string relationship set<Lote> composto-por inverse Lote::compe; void cadastra ( in date data; in string local; in string leiloeiro); void remove ( in date data) raises(nao_cadastrado) )

modulo10.PRZ

20

11/09/01

ODL - Object Definition Language


class Cliente ( extent clientes cpf) key ( attribute integer cpf; nome; attribute string end; attribute string relationship set<Lote> arrematou inverse Lote::arrematado-por; void cadastra(in integer cpf; in string nome; in string end); void remove(in integer cpf) raises(nao_cadastrado) )

modulo10.PRZ

21

11/09/01

ODL - Object Definition Language


class Lote ( extent lotes nmero, compe) key ( attribute integer nmero; valor; attribute float relationship Leilo compe inverse Leilo::composto-por relationship Cliente arrematado-por inverse Cliente::arrematou relationship set<Obra> inclui inverse Obra::incluida-em; void cadastra(in integer nmero; in string nome; in string end); void remove(in integer cpf) raises(nao_cadastrado))

modulo10.PRZ

22

11/09/01

ODL - Object Definition Language


class Obra ( extent obras) desc; ( attribute string dim; attribute string ano; attribute date relationship Artista criada-por inverse Artista::cria) class Pintura extends Obra ( extent obras) suporte; ( attribute string tcnica) attribute string class Escultura extends Obra ( extent esculturas) material) ( attribute string class Outra extends Obra ( extent outras) comentrio) ( attribute string
modulo10.PRZ 23 11/09/01

OQL - Object Query Language


Consulta em OQL:
parte dos pontos de entrada do BD (objetos persistentes nomeados) constri, como resposta, um objeto (tipicamente uma coleo) utiliza variveis de iterao para varrer colees utiliza expresses de caminho para chegar aos objetos no nomeados

modulo10.PRZ

24

11/09/01

OQL - Object Query Language


Expresso de caminho:
nome de objeto persistente, ou de varivel de iterao, seguido por zero ou mais nomes de atributos ou de relacionamentos, separados por "." exemplos: seja L uma varivel de iterao varrendo leiles
L.data L.composto-por
retorna a data do leilo apontado por L retorna o conjunto dos lotes do leilo apontado por L, ou seja, um objeto do tipo Set<Lote> L.composto-por.inclui retorna o conjunto das obras dos lotes do leilo apontado por L, ou seja, um objeto do tipo Set<Obra>

L.composto-por.valor no uma expresso de caminho vlida pois o resultado pode ser um objeto do tipo Set<float> ou do tipo Bag<float>
modulo10.PRZ 25 11/09/01

OQL - Object Query Language


Consulta simples:
formulada apenas como uma expresso de caminho, comeando pelo nome de um objeto persistente

Consulta associativa:
segue a sintaxe bsica do SQL select-from-where

modulo10.PRZ

26

11/09/01

OQL - Object Query Language


Exemplos de consultas simples:
"Retorne uma referncia coleo de leiles"

leiles;

Suponha que L20000829 seja o nome de um objeto do tipo Leilo "Retorne uma referncia a todos os lotes do leilo L20000829"

L20000829.composto-por;

modulo10.PRZ

27

11/09/01

OQL - Object Query Language


Exemplos de consultas associativas:
"Liste a data dos leiles, com seus lotes e valores arrematados, para os leiles realizados em 2000"
'2000829'
data L valor

'22K' '100'

t1

composto-por

numero

leiles

L1
composto-por

t2

numero

'101' '10K'

valor

Nota:

leiles = objeto nomeado do BD L = varivel de iterao sobre leiles


28 11/09/01

modulo10.PRZ

OQL - Object Query Language


Exemplos de consultas associativas (cont.):
"Liste a data dos leiles, com seus lotes e valores arrematados, para os leiles realizados em 2000" select struct ( dleilo: L.data, lotes: ( select struct ( num: T.numero, val: T.valor ) from T in L.composto-por ) ) from L in leiles where L.data.year = '2000' ;

modulo10.PRZ

29

11/09/01

OQL - Object Query Language


Exemplos de consultas associativas (cont.):
"Liste a data dos leiles com a mdia dos valores arrematados, para os leiles realizados em 2000" select struct ( dleilo: L.data, mleilo:avg (select T.valor from T in L.composto-por ) )

from L in leiles where L.data.year = '2000' )

modulo10.PRZ

30

11/09/01

OQL - Object Query Language


Vises:
OQL permite a especificao de vises parametrizadas definidas atravs de consultas armazenadas exemplo: "Conjunto das pinturas a leo sobre madeira de um artista A" define OSM(A) as select o from o in obras where o.suporte = 'madeira' and o.tcnica = 'leo' and o.criada-por = A
modulo10.PRZ 31 11/09/01

OQL - Object Query Language


Pertinencia e quantificao:
(e in c) retorna Verdadeiro sse e um elemento da coleo c

(for all v in c: b) retorna Verdadeiro sse todos os elementos da coleo c satisfazem b (exists v in c: b) retorna Verdadeiro sse existe um elemento da coleo c que satisfaz b

modulo10.PRZ

32

11/09/01

OQL - Object Query Language


Exemplos:
'Chalupa Adernada' um OSM de Castagneto? 'Chalupa Adernada' in OSM('Castagneto');

Todos os lotes dos leiles de 2000 tiveram apenas 1 pea? for all t in (select L.composto-por from L in leiles where L.data.year = '2000') : count(t.inclui) = 1;

modulo10.PRZ

33

11/09/01

OQL - Object Query Language


Exemplos:
'Chalupa Adernada' leiloado em 2000? exists t in (select L.composto-por from L in leiles where L.data.year = '2000') : 'Chalupa Adernada' in t.inclui ;

modulo10.PRZ

34

11/09/01

OMG - Object Management Group


OMG - Object Management Group
Fundao: maio de 1989 Objetivo: criar padres, mas no software, para possibilitar a interoperabilidade e portabilidade das aplicaes distribudas utilizando tecnologia OO Membros: mais de 700 organizaes e empresas Web site: www.omg.org Especificaes: Especificaes para anlise e projeto CORBA - Common Object Request Broker Architecture OMA - Object Management Architecture

modulo10.PRZ

35

11/09/01

OMG - Object Management Group


Especificaes para anlise e projeto:
UML - Unified Modeling Language linguagem grfica para especificao OO MOF - Meta-Object Facility repositrio padronizado para metadados utilizado, entre outros, para armazenar modelos em UML XMI - XML Metadata Interchange formato em XML para intercmbio de metadados, incluindo modelos em UML

modulo10.PRZ

36

11/09/01

OMG - Object Management Group


CORBA - Common Object Request Broker Architecture:
especificao de uma arquitetura e infraestrutura abertas para permitir que aplicaes interoperem componentes principais: IDL - Interface Definition Language IIOP - protocolo padro para interoperabilidade ORB - Object Request Broker

modulo10.PRZ

37

11/09/01

OMG - Object Management Group

Client

Object Implementation
Dynamic Skeleton Interface (DSI)

Interface Repository (IR)

Dynamic Invocation Interface (DII)

IDL Stubs

ORB Interface

IDL Skeleton

Object Adapter

ORB Core

modulo10.PRZ

38

11/09/01

OMG - Object Management Group


OMA - Object Management Architecture:
classifica os objetos em: CORBAservices:
oferece funes bsicas de gerncia de objetos

Horizontal CORBAfacilities:
servios comuns a vrias reas de aplicao

Domain CORBAfacilities:
objetos-padro especializados para uma rea de aplicao

Application Objects:
objetos de uma dada aplicao, no sujeitos a padronizao
modulo10.PRZ 39 11/09/01

OMG - Object Management Group


Application Objects Common Facilities
Horizontal CORBAFac. Domain CORBAFac.

Query Processor

CASE Tool

Common Object Request Broker (CORBA)

Naming

Life Cycle

Query

CORBAservices
modulo10.PRZ 40 11/09/01

Resumo
Modelo OO:
Literal = valor + comportamento Objeto = OID + nome + estado + comportamento Fbrica = objeto utilizado para gerar ou criar outros objetos Interface = definio de estrutura + assinaturas de operaes no podem gerar conjuntos de objetos Classes = definio de estrutura + assinaturas de operaes as classes podem gerar extenses e definir chaves Herana Comportamental (via ":") Herana Comportamental e Estrutural (via Extends)

ODL - segue o modelo OO definido pelo ODMG OQL - semelhante a SQL, mas incluindo:
objetos arbitrrios como respostas variveis de iterao para varrer colees expresses de caminho para chegar aos objetos no nomeados vises, pertinncia e quantificao
modulo10.PRZ 41 11/09/01

Das könnte Ihnen auch gefallen