Вы находитесь на странице: 1из 43

Bancos de Dados

Orientados a Objetos
Claudionor dos Santos
Diego Mota Collao
Estefania Borm
Milleni Maya Petten
Ronaldo Jos Abel
Samuel Grdtner

Introduo

Viso Geral
Conceitos de um BDOO
Padro ODMG
Principais diferenas entre BDR e BDOO
BDOO no mercado
Exemplo-Db4o

Viso Geral
Necessidade de armazenar tipos de dados
cada vez mais complexos
BD implementado respeitando os trs pilares
da OO: herana, polimorfismo e
encapsulamento.
Modelagem intimamente ligada aos
diagramas de classes gerados para a
aplicao OO
Servem ao mesmo propsito dos BDRs
(armazenamento; recuperabilidade ...)

Viso Geral
A dificuldade dos Banco de Dados Relacionais ,
em implementar em algumas aplicaes
complexas como por exemplo, banco de dados
para projetos de engenharia e manufatura
(CAD/CAM e CIM), experimentos cientficos,
telecomunicaes, sistemas de informaes
geogrficas e multimdia.
Uso crescente de linguagens de programao
orientadas a objetos no desenvolvimento de
aplicaes de software.

A necessidade de caractersticas adicionais na


modelagem de dados tambm tem sido
reconhecida por fornecedores de SGDBs
relacionais, e as recentes verses de sistemas
relacionais esto incorporando muitas das
caractersticas que foram propostas para banco
de dados orientados a objetos, o que resultou
em sistemas conhecidos SGBDs objetorelacionais ou relacionais estendidos.
A ltima verso do padro SQL para banco de
dados relacionais inclui algumas dessas
caractersticas.

Conceitos
Orientado a Objetos
remonta das LPOO.
Hoje os conceitos OO so
aplicados a diversas
reas de Banco de Dados,
engenharia de software,
bases de conhecimento,
inteligncia artificial ...

Um objeto possui
tipicamente dois
componentes: ESTADO
(VALOR) e
COMPORTAMENTO
(OPERAES).

Conceitos de um BDOO
Um BDOO armazena os objetos persistentes
permanentemente,em memria secundria,
permitindo o compartilhamento desses objetos entre
vrios programas, e aplicaes.
Isso exige incorporar outras caractersticas bem
conhecidas de SGBDs, como mecanismos de
indexao, controle de concorrncia e recuperao.
O OID (identificador de objeto) fornecido pelo
sistema banco de dados, nico, com intuito de
manter a integridade e identidade do objeto para
garantir a correspondncia direta entre Objeto

Conceitos

Objetos complexos so formados por construtores


(conjuntos, listas, tuplas, registros, colees, arrays)
aplicados a objetos simples (inteiros, booleanos, strings).
Um objeto encapsulado tem seu estado oculto ao usurio
e s pode ser consultado/modificado por meio das
operaes a ele associadas.
Classes so um conjunto de objetos que possui os mesmos
atributos, relacionamentos, operaes
Herana corresponde a transferncia de propriedades
estruturais e de comportamento de uma classe para suas
subclasses.

Conceitos
Estrutura de Objeto normalmente os objetos
so representados pela tripla (i,c,v) onde : i o
OID, c um construtor de tipo (uma indicao
como o estado do objeto construdo) e v o
estado do objeto;
Construtores de tipo basicos : atom, tuple e set
outros exemplos so o list, bag e array.

Conceitos

O1=(i1,atom,florianpolis)
O2=(i2,atom,trindade)
O3=(i3,atom,5)
04=(i4,set,{i1,i2,i3)
O5=(i5,tuple,<DNOME:i7,DNUM:i9,GER:i9,PROJ:i23>)

Conceitos

Overriding a redefinio da implementao da


operao e overloading a associao do resultado
da redefinio a um nico nome. Late binding
resolver o nome das operaes em tempo de
execuo
Extensibilidade estender os tipos j definidos pelo
sistema de modo transparente para a aplicao e
para o desenvolvedor da aplicao
Completude computacional expressar qualquer
funo computvel no modelo de dados usando a
linguagem de manipulao do SGBD

ODMG Object Database


Management Group

Consrcio de pesquisadores e fabricantes concebido para


trabalhar na criao de padres para SGBDOOs a fim de
garantir a portabilidade
Componentes principais:
Framework
- modelo de objetos
- linguagem de definio de objetos (ODL)
linguagem de consulta de objetos (OQL)
Bindings
- mapeamento das construes do padro para as
linguagens de programao (C++, Smalltalk, Java)

Modelo de Objetos ODMG

Modelo de Objetos
- fornece os tipos de dados, de construtores e outros
conceitos que podem ser usados na ODL para especificar
esquemas de BDOO
- construo bsica: objeto (identificador nico) ou literal
(valor nico)
- objeto possui quatro caractersticas:
1 - identificador (OID) nico
2 - nome opcional
3 - tempo de vida persistente ou transiente
4 - estruturaconstruo do objeto (atmico ou
coleo)

Modelo de Objetos ODMG

O modelo de dados inclui normalmente vrios construtures


de tipo:
- atom <valor>: inteiros, reais, strings, booleanos
- set <coleo_objeto>: elementos distintos
- bag <coleo_objeto>: elementos duplicados
- list [i1, i2,...,in]: lista ordenada (mesmo tipo)
- array [i1, i2,...,in]: vetor com tamanho mximo
- tuple <a1:i1, a2:i2,...,an:in>: cada par a:i corresponde a
nome_atributo:OID
- dictionary <k,v>: criao de ndices sobre coleo de
objetos

Modelo de Objetos ODMG

No modelo de objetos, um literal um valor que no possui


OID
Existem trs tipos de literais:
- atmicos: long, short, double, chart, string, boolean, etc
- literais estruturados: Date, Interval, Time, Timestamp
- literais coleo: set, list, array, bag

Modelo de Objetos ODMG

Herana
- todos herdam a interface bsica Object

Modelo de Objetos ODMG

Herana
- de comportamento (somente operaes)

entre interfaces

entre interface e classe

permitida herana mltipla


- extends (comportamento (operaes) e estado (atributos e
relacionamentos))

somente entre classes

no permitida herana mltipla

Modelo de Objetos ODMG

Interfaces
- no so instanciveis
- especificam o comportamento de um objeto
- podem possuir atributos e relacionamentos, mas estes no so
herdados

interface Time : Object {


...
unsigned short
hour();
unsigned short
minute();
unsigned short
second();
unsigned short
milisecond();
...
boolean
is_equal (in Time another_time);
boolean
is_greater (in Time another_time);
...
Time
add_interval (in Interval some_interval);
...
};

Modelo de Objetos ODMG

Objetos Atmicos (definidos pelo usurio)


- na grande maioria so objetos estruturados
- possuem:

atributos valores literais

estruturas simples ou complexas

mtodos para manipular o valor do atributo

relacionamentos

unidirecionais atributo de um objeto A um outro objeto B

bidirecionais atributo de um objeto A um outro objeto B, e


o atributo de um objeto B um objeto A

operaes

mtodos nome do mtodo, argumentos, retorno,


especificao de excees

Modelo de Objetos ODMG

Extenses
- projetista pode declarar uma extenso (extent) para
qualquer tipo de objeto que esteja definido por meio de
uma declarao de classe (class)
- contm todos os objetos persistentes dessa classe
- pode possuir uma ou mais chaves

valores restritos a serem nicos para cada objeto na


extenso

Modelo de Objetos ODMG

Objetos Fbrica
- utilizados para criar novos objetos
- modelo ODMG possui a interface ObjectFactory, com a
operao new( ), que retorna um objeto novo com um OID

ODL
Object Definition Language

No uma linguagem de programao completa


funo:

dar suporte aos construtores semnticos do MO-ODMG

especificar interfaces e classes

definir o esquema do BDOO


- implementao do BDOO:

usurio utiliza um binding especfico com LPs como C+


+, Smalltalk e Java para mapear componentes
- nem todas as LPs implementam todas as especificaes
ODL

OQL Object Query Language

Linguagem de consulta proposta para o modelo de objetos


ODMG
projetada para trabalhar acoplada com as linguagens de
programao com as quais o modelo ODMG define um
binding(C++, Smalltalk, Java)
Uma consulta OQL embutida em uma dessas linguagens
pode retornar objetos compatveis com o sistema de tipos
dessa linguagem

OQL Linguagem de Consulta de Objetos

Sintaxe semelhante a sintaxe SQL, porm com suporte ao


tratamento de
- objetos complexos
- junes por valor ou OID
- invocao de mtodos
- herana
SELECT d.dnome
FROM d in departamentos
WHERE d.faculdade = 'Engenharia;

Em geral necessrio um ponto de entrada para o BDOO


nas consultas

OQL Linguagem de Consulta de Objetos

No precisa seguir necessariamente a estrutura


SELECT...FROM...WHERE

qualquer objeto nomeado persistente por si mesmo uma


consulta
departamentos;

retorna uma coleo de referncias de todos os


objetos persistentes de Departamento cujo tipo seja
set<Departamento>

expresso de caminho (".")


departamentosin.coordenador;

retorna um objeto do tipo Professor, pois o tipo do


atributo coordenador da classe departamento

OQL Linguagem de Consulta de Objetos


Retorno de estrutura complexa
SELECT STRUCT (nome: STRUCT (ultimo_nome:
s.nome.unome,
primeiro_nome: s.nome.pnome),
graus: (SELECT STRUCT (grau: d.grau,
ano: d.ano,
Faculdade: d.faculdade)
FROM d IN s.graus)
FROM s IN departamentosin.coordenador.orienta;

OQL Linguagem de Consulta de Objetos


Vises como consultas nomeadas
DEFINE possui_alunos (nomedepto) AS
SELECT s
FROM s IN alunos
WHERE s.estuda_em.dnome = nomedepto;
Possui_alunos ('Sistemas de Informacao');

OQL
Q1:departamentos
Q2:departamentocc.coordenador.classificacao
Q3a:select f.classificacao from f in
departamentocc.possui_professores
V1:define possui_alunos(nomedepto) as select s
from s in alunos where
s.estuda_em.dnome=nomedepto;

Exemplo de Esquema BDOO

Exemplo de Esquema BDOO


class Pessoa (extent pessoas key ssn){
attribute struct Pnome {string pnome, string mnome, string unome}
nome ;
attribute string ssn;
attribute date datanascimento;
attribute enum Genero{M,F} sexo;
attribute struct Endereco{string rua, short nro, short nroapto,
string cidade, string estado, short CEP} endereco;
short idade();

Exemplo de Esquema BDOO


class Professor extends Pessoa (extent professores) {
attribute string classificacao;
attribute string salario;
attribute string sala;
attribute string telefone;
relationship Departamento trabalha_em
inverse Departamento::possui_professor;
relationship set<Grad_Aluno> orienta
inverse Grad_Aluno::orientado_por;
relationship set<Grad_Aluno> na_banca_de
inverse Grad_Aluno::banca;
void dar_aumento(in float aumento);
void promover(in string nova_classificacao);
};

Exemplo de Esquema BDOO


class Departamento (extent departamentos key dnome){
attribute string dnome;
attribute string dtelefone;
attribute string dsala;
attribute string faculdade;
attribute Professor coordenador;
relationship set<Professor> possui_professores
inverse Professor::trabalha_em;
relationship set<Aluno> forma_especialistas
inverse Aluno::especializa_em;
relationship set<Curso> oferece
inverse Curso::oferecido_em;
};

Exemplo de Esquema BDOO

Projeto conceitual de BDOO


BDOO x BDR Principais Diferenas
Banco de Dados Relacional (BDR)

Banco de Orientado Objetos (BDOO)

Coleo de tabelas, todas com nomes


nicos, compem a base de dados,
podendo estar relacionada a uma ou
mais tabelas. No tem relao direta
com as classes das aplicaes.

Coleo de objetos que encapsulam tanto as


informaes quanto as operaes das classes
de origem.

Chaves primrias identificam


unicamente uma tupla em uma relao.

Identificadores de objetos (OID) identificam


unicamente um objeto na base de dados
inteira

Relacionamentos entre tuplas so


Relacionamentos so tratados pela definio
especificados por chaves estrangeiras,
de atributo de referncia, que inclui o OID do
sendo representados em tabela adicional objeto relacionado

BDOO x BDR Principais Diferenas


Banco de Dados Relacional (BDR)

Banco de Orientado Objetos (BDOO)

Atributos so limitados valores


simples

Atributos multivalorados so comuns

No h estrutura pr-definida para


herana

Estruturas de herana esto imbutidas no


modelo

Definio de operaes pode ser


postergada

Operaes devem ser especificadas


antecipadamente, pois fazem parte das
especificaes das classes.

BDOO x BDR Principais Diferenas


Modelagem de dados para BDR

BDOO x BDR Principais Diferenas


Modelagem de dados para BDOO

BDOO no mercado

Db4o;
Oracle;
ONTOS;
Objectivy;

Exemplo db4objects(db4o)
Permitir que voc faa suas consultas de forma
orientada a objetos, como se estivesse
pesquisando em uma Array, List ou qualquer
outro container de objetos.

Performace
a) No tenho problemas de performance?

Db4o na prtica.
Instalao;
http://www.db4o.com/community/
Dlls, docs, e codigos de exemplo.

Utilizao;
Referenciar a respectiva dll e adicionar um "using
com.db4o;

Criando um database
O arquivo de dados do db4o tem normalmente a
extenso .yap;

Db4o - Mtodos
Set: grava objetos na base
Get: recupera um objeto da base procurando-o atravs
de um template
Delete: apaga um objeto
Query: faz uma pesquisa na base retornando uma
lista do tipo ObjectSet
Query<T>: faz uma pesquisa retornando uma lista
tipada
Commit e Rollback: confirma/anula uma transao
(semelhante ao commit/rollback dos RDBMs)

Bibliografia
Elmasri Navathe ,Sistemas de Banco de Dados 4 Edio
Bertino, E.; Martino, L. (1993). Object-Oriented Database
Systems: Concepts and Architectures. Addison-Wesley, 1993.
Blaha, M.; Premerli, W. Object-Oriented Modeling and Design
for Database Applications. Prentice-Hall, 1998.
Cattel, R.G.G. Object-Oriented and Extended Relational
Database Systems. Addison-Wesley, 1994.
http://www.linhadecodigo.com.br/Artigo.aspx?id=2212;
http://pt.wikipedia.org/wiki/Object_database#Ado.C3.A7.C3.A
3o_de_Banco_de_Dados_Orientado_a_Objetos
http://www.ime.usp.br/~andrers/aulas/bd2005-1/aula3.html
http://www.db4o.com/

Вам также может понравиться