Você está na página 1de 102
Grupo Andrêsa Cibelly Clébia Alves Cleyton Vanut Mouglas Eugênio Ronnie Edson
Grupo Andrêsa Cibelly Clébia Alves Cleyton Vanut Mouglas Eugênio Ronnie Edson
Grupo Andrêsa Cibelly Clébia Alves Cleyton Vanut Mouglas Eugênio Ronnie Edson
Grupo Andrêsa Cibelly Clébia Alves Cleyton Vanut Mouglas Eugênio Ronnie Edson

Grupo

Andrêsa Cibelly

Clébia Alves Cleyton Vanut Mouglas Eugênio Ronnie Edson

2  1 - Modelos de Banco de Dados Roteiro  2 - Banco de
2
 1 - Modelos de Banco de Dados
Roteiro
 2 - Banco de Dados Orientado a Objetos
 3 - Exemplos de Sistemas de Gerência
Banco de Dados Orientado a Objetos
 4 - O Padrão ODMG
 5 - Operações no BDOO
 6 - Técnicas e Ferramentas de Apoio
 7 – Vantagens e Desvantagens
 8 - Tendências
Banco de Dados Orientados a Objetos
Introdução 3 Problemas Falta de abordagens adequada atuais no desenvolvimento de BD Resultados indesejáveis
Introdução
3
Problemas
Falta de abordagens
adequada
atuais no
desenvolvimento
de BD
Resultados indesejáveis
Ineficiência no atendimento
da demanda
Problemas na manutenção
Banco de Dados Orientados a Objetos

Modelos de Banco de Dados

4
4

Consiste de um conjunto

de conceitos utilizados

para descrever a estrutura de um BD, ou seja, os tipos de dados,

relacionamentos e restrições sobre estes dados.

O modelo de dados é

a principal ferramenta

no fornecimento de informações sobre a abstração.

dados é a principal ferramenta no fornecimento de informações sobre a abstração. Banco de Dados Orientados
dados é a principal ferramenta no fornecimento de informações sobre a abstração. Banco de Dados Orientados

Banco de Dados Orientados a Objetos

Modelo Hierárquico Primeiro a ser conhecido como Modelo de Dados Registro: coleção de campos contendo
Modelo Hierárquico
Primeiro a ser conhecido como Modelo de Dados
Registro: coleção de campos contendo somente um valor.
Link: é uma associação entre exatamente dois registros.
Possui estrutura do tipo árvore
Tarciso
505 A
Gama
Valmer
204 C
Paranoá
Cesar
713 B
Ceilândia
3B4
20,00
5B2
52,25
2C3
100,00
8A1
5,00
Banco de Dados Orientados a Objetos
5

Modelo Hierárquico

Tarciso 505 A Gama Valmer 204 C Paranoá 3B4 20,00 5B2 52,25 2C3
Tarciso
505 A
Gama
Valmer
204 C
Paranoá
3B4
20,00
5B2
52,25
2C3
Gama Valmer 204 C Paranoá 3B4 20,00 5B2 52,25 2C3 Cesar 713 B Ceilândia    

Cesar

713 B

Ceilândia

   

8A1

5,00

 
713 B Ceilândia     8A1 5,00   100,00  Os registros filhos só podem ter

100,00

Ceilândia     8A1 5,00   100,00  Os registros filhos só podem ter um pai;

Os registros filhos só podem ter um pai;

Caso um registro necessite ter dois pais, deve ser replicado.

Desvantagens da replicação:

pais, deve ser replicado . Desvantagens da replicação: Inconsistência ao realizar atualizações Desperdício de

Inconsistência ao realizar atualizações

Desperdício de espaço;

A navegação neste modelo deve obedecer os padrões do modelo

Banco de Dados Orientados a Objetos

6

Modelo Hierárquico Dificuldades 1. Não pode haver ciclos no gráfico básico de um diagrama de
Modelo Hierárquico
Dificuldades
1. Não pode haver ciclos no gráfico básico de um
diagrama de estrutura de árvore
2. Restrições nos relacionamentos (links) de muitos
para muitos (N:M) e de muitos para um (N:1)
3. Necessidade de navegação por ponteiros para
acessar a informação desejada
4. Só trabalha com dados primitivos
Banco de Dados Orientados a Objetos
7
Modelo em Rede Este modelo surgiu para suprir algumas deficiências no Modelo Hierárquico Características: 
Modelo em Rede
Este modelo surgiu para suprir algumas deficiências no
Modelo Hierárquico
Características:
 O conceito de hierarquia foi abolido;
 Esse modelo aceita relacionamentos NxM
 Um filho pode ter mais de um pai;
 Utiliza grafos ao invés de árvores;
 Possui uma linguagem própria para definição e manipulação
Concorrência e segurança
Banco de Dados Orientados a Objetos
8

Modelo em Rede

Modelo em Rede Dificuldades • Aumenta significativamente o trabalho do programador , tanto para o projeto

Dificuldades

Modelo em Rede Dificuldades • Aumenta significativamente o trabalho do programador , tanto para o projeto

Aumenta significativamente o trabalho do

programador, tanto para o projeto de um banco de dados quanto para a manipulação dos dados

Necessidade do uso de mecanismo complicados (ponteiros)

Projetista do banco de dados tem que criar tipos de

registros artificiais para implementar simples relacionamentos muitos para muitos (N:M)

Banco de Dados Orientados a Objetos

9

Modelo Relacional Surgiu com o propósito de aumentar a independência dos sistemas gerenciadores de BD.
Modelo Relacional
Surgiu com o propósito de aumentar a
independência dos sistemas gerenciadores de BD.
Características:
 Baseado em funções de álgebra relacional
 Representado por coleções de tabelas;
 Cada tabela possui nome, tuplas, etc.
Restrições:
Não pode haver tuplas repetidas
Restrições de chave;
Banco de Dados Orientados a Objetos
10
Modelo Relacional - OO Junção do modelo Relacional com modelo OO Características:  Segue o
Modelo Relacional - OO
Junção do modelo Relacional com modelo OO
Características:
 Segue o padrão SQL
Possui identidade de objeto, encapsulamento, herança e
polimorfismo;
A semântica da aplicação é modelada através de objetos,
porém a implementação física ainda é feita através de tabelas
Banco de Dados Orientados a Objetos
11
12 Motivação A maioria das aplicação são desenvolvidas em OO; Necessidade de tradução para uma
12
12

Motivação

A maioria das aplicação são desenvolvidas em OO;

Necessidade de tradução para uma linguagem que o BD entenda;

de tradução para uma linguagem que o BD entenda; Dificuldade de trabalhar com objetos complexos no

Dificuldade de trabalhar com objetos complexos no

modelo relacional.

Banco de Dados Orientados a Objetos

Surgimento

13
13
Surgimento 13 Combinação de ideias dos modelos de dados tradicionais e linguagens de Programação OO Crescimento

Combinação de ideias

dos modelos de dados

tradicionais e linguagens de Programação OO

de dados tradicionais e linguagens de Programação OO Crescimento em 2004 O acesso aos dados neste

Crescimento em 2004

O acesso aos dados neste modelo é bem mais rápido, já que o acesso é
O acesso aos dados
neste modelo é bem
mais rápido, já que o
acesso é feito
diretamente aos
objetos.
já que o acesso é feito diretamente aos objetos. A ODMG padronizou uma linguagem para consulta

A ODMG padronizou uma linguagem para consulta de objetos

Banco de Dados Orientados a Objetos

14
14
14 Identidade do Objeto BDOO Conceitos Básicos Um SGBDOO provê um identificador único (IDO) para cada

Identidade do Objeto

BDOO Conceitos Básicos
BDOO
Conceitos
Básicos

Um SGBDOO provê um identificador único (IDO) para cada objeto independente

armazenado no BD.

Propriedade essencial: não mudar Propriedade desejável: um IDO não deve ser

reutilizado.

Então

IDOs não podem depender de

valores de atributos dos objetos.

Banco de Dados Orientados a Objetos

15
15
15 Objeto  Formalmente, um objeto pode ser representado por um trio (triple) (i,c,v), onde: BDOO

Objeto

Formalmente, um objeto pode ser representado por um trio (triple) (i,c,v),

onde:

BDOO Conceitos Básicos
BDOO
Conceitos
Básicos

i: IDO

c: construtor de tipo v: estado (ou valor) do objeto

Exemplo

de tipo  v: estado (ou valor) do objeto Exemplo o1=(i1,atom, „Houston‟) o2=(i2,atom, „Bellaire‟)

o1=(i1,atom, „Houston‟) o2=(i2,atom, „Bellaire‟)

o3=(i3,atom, „Sugarland‟)

Banco de Dados Orientados a Objetos

16
16
16 Objetos complexos BDOO Conceitos Básicos O interesse pela representação de objetos complexos é a principal

Objetos complexos

BDOO Conceitos Básicos
BDOO
Conceitos
Básicos

O interesse pela representação de objetos

complexos é a principal motivação para o

desenvolvimento de sistemas OO.

Não Estruturados

Requerem grande quantidade de memória.

Imagens ou longos objetos textuais

O SGBDOO não conhece sua estrutura (somente a aplicação que deles faz uso pode interpretar

seu significado)

Estruturados

Possuem uma estrutura definida pela repetida aplicação dos construtores de tipo providos pelo SGBDOO.

Banco de Dados Orientados a Objetos

17 São usados em aplicações que utilizam objetos complexos Aplicações complexas • Projetos de engenharia
17
São usados em aplicações que utilizam objetos
complexos
Aplicações complexas
• Projetos de engenharia e arquitetura.
• Experiências cientificas.
Em que
são
usados os
BDOO?
• Telecomunicações.
• Sistemas de informações geográficas.
• Multimídia.
Características das Aplicações complexas
• Transações e duração mais longa
• Novos tipos de dados para
armazenar: imagens ou documentos
de texto
Banco de Dados Orientados a Objetos
Banco de Dados Orientado a Objetos 18  Cada informação é armazenada na forma de
Banco de Dados Orientado a Objetos
18
 Cada informação é armazenada na forma de
objeto;
 Só pode ser manipulada por métodos;
Lembrando
São mais adequados para o tratamento
de objetos complexos (textos, gráficos,
imagens)
Banco de Dados Orientados a Objetos

BDOO x BD Relacional

19
19
BD Relacional
BD Relacional
BDOO
BDOO

Coleção de tabelas com nomes únicos

Integridade referencial e chaves primárias garantem a consistência das informações

chaves primárias garantem a consistência das informações Já um BDOO possui três pilares principais: Herança;

Já um BDOO possui três pilares principais:

Herança; Polimorfismo; e encapsulamento.

Este modelo apresenta maior flexibilidade na manipulação de seu conteúdo e por meio de identificadores de objetos manipula os dados de forma

consistente.

Banco de Dados Orientados a Objetos

20 BDOO‟s diferem dos BD‟s O conceito (OO) forma uma base de aplicações mais Tradicionais
20
BDOO‟s diferem dos BD‟s
O conceito (OO) forma
uma base de
aplicações mais
Tradicionais pela:
avançadas como:
Estrutura de dados mais
complexa;
Aplicações de
engenharia;
Transações duradouras;
SI Geográficos, Multimídia;
Novos tipos de dados para
armazenar imagens e textos;
Sistemas de Interface de
Usuários.
Necessidade de definir
operações não padrões
específica da aplicação.
Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

21
21

Características

Banco de Dados Orientados a Objetos 21 Características Banco de Dados Orientados a Objetos
Banco de Dados Orientados a Objetos 21 Características Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

Modelagem BDOO 22 BDOO requer conceitos próprios; Possui Objetos Persistentes; Objetos armazenados no BDOO
Modelagem BDOO
22
BDOO requer conceitos próprios;
Possui Objetos Persistentes;
Objetos armazenados no BDOO está
associado a um identificador único
chamado de OID (Object Indentifier),
que é gerado pelo SGBDOO;
Banco de Dados Orientados a Objetos
Modelagem BDOO‟s 23 Características do OID  Valor invisível ao usuário;  É imutável; 
Modelagem BDOO‟s
23
Características do OID
 Valor invisível ao usuário;
 É imutável;
 Desejável que seja usado apenas uma vez;
Não pode depender de valor de atributo do
objeto.
Banco de Dados Orientados a Objetos

Estrutura do Objeto

O valor de cada atributo de um o objeto pode ser: - atômico: integer, real,
O valor de cada
atributo de um o
objeto pode ser:
- atômico: integer,
real, character,
booleano, etc.
- complexo: tuple,
set, list, bag e array.

No MOO não existe conceito de

chave primária, existe os OID‟s dos objetos que são criados e mantidos pelo SGBD e não são de

acesso de usuários.

Vantagens de OID’s em relação as

Chaves:

Programadores sem muitas preocupações;

Melhor desempenho;

Banco de Dados Orientados a Objetos

24

Métodos

25
25
Métodos 25  Método consiste de assinatura e corpo;  O comportamento de um objeto em

Método consiste de assinatura e corpo;

O comportamento de um objeto em um BDOO é

representada do por meio de

métodos .

Banco de Dados Orientados a Objetos

26
26
Classes
Classes

São

agrupamentos

de objetos de um mesmo tipo, possuindo

comportamentos

e propriedades em comum.

Exemplo:

de um mesmo tipo, possuindo comportamentos e propriedades em comum. Exemplo: Banco de Dados Orientados a
de um mesmo tipo, possuindo comportamentos e propriedades em comum. Exemplo: Banco de Dados Orientados a

Banco de Dados Orientados a Objetos

Classes

27
27

Os BDOO‟s que novos tipos sejam criados para se adequar ao requerimento da aplicação, sendo combinados com os tipos existentes no sistema e sendo utilizados da mesma maneira.

combinados com os tipos existentes no sistema e sendo utilizados da mesma maneira. Banco de Dados
combinados com os tipos existentes no sistema e sendo utilizados da mesma maneira. Banco de Dados

Banco de Dados Orientados a Objetos

Encapsulamento 28  No BDOO esta noção é mais visível; Determina que somente as operações
Encapsulamento
28
No BDOO esta noção
é mais visível;
Determina que
somente as
operações sobre
A
maioria dos
SGBDOO‟s permitem
os objetos são
visíveis e sua
estrutura é
escondida;
acesso direto aos
atributos, onde é uma
violação do
encapsulamento que
o
BD permite.
Banco de Dados Orientados a Objetos
Herança 29 Na herança uma classe chamada subclasse pode ser definida com base na definição
Herança
29
Na herança uma classe chamada subclasse pode ser
definida com base na definição de outra classe
chamada superclasse.
Banco de Dados Orientados a Objetos
Polimorfismo 30 Os SGBDOO‟s permitem o recurso de polimorfismo de operações conhecido como Sobrecarga de
Polimorfismo
30
Os SGBDOO‟s permitem o recurso de polimorfismo de operações
conhecido como Sobrecarga de operador (overloading) ;
Exemplo:uma operação display que recebe um objeto como
entrada e apresenta o objeto na tela. Se o objeto for:
Uma imagem: deseja-se apresentar a
imagem;
Uma pessoa: deseja-se apresentar os
dados sobre a pessoa (nome,
endereço, etc);
Um gráfico: deseja-se apresentar uma
representação gráfica.
Banco de Dados Orientados a Objetos

Polimorfismo

31
31
Usando um sistema convencional :
Usando um sistema
convencional :
Usando o Sistema OO
Usando o Sistema OO

for x in X do

begin case of type(x) pessoa:

display_pessoa(x); figura: display_figura(x); gráfico:

display_gráfico(x);

end;

end;

for x in X do display(x)

display_gráfico(x); end; end; for x in X do display(x) A operação tem um único nome e
display_gráfico(x); end; end; for x in X do display(x) A operação tem um único nome e

A

operação tem um único nome

e

pode ser chamada por vários

objetos;

O sistema decide qual

implementação usar para a

execução.

Banco de Dados Orientados a Objetos

32 Um banco de dados é usualmente mantido e acessado por meio de um software
32 Um banco de dados é usualmente mantido e acessado por meio de um software
32
Um banco de dados é
usualmente mantido e
acessado por meio de
um software conhecido
como Sistema
Gerenciador de Banco
de Dados (SGBD).
como Sistema Gerenciador de Banco de Dados (SGBD). Definição Podem ser definidos como um BD capaz

Definição

Podem ser definidos como

um BD capaz de armazenar além de dados, outros tipos diferentes de dados que

não podem ser convertidos

somente em arquivos lineares ou bidimensionais

como tabelas, e sim um tipo especial de objeto.

Banco de Dados Orientados a Objetos

SGBDOO 33 Caracteristicas A principal característica de SGBDOO é modelar estruturas complexas armazenando não
SGBDOO
33
Caracteristicas
A principal característica de SGBDOO é
modelar estruturas complexas
armazenando não somente a estrutura
de dados, mas também seu
comportamento.
a noção de objeto é usada no nível
lógico e possui características não
encontradas nas linguagens de
programação tradicionais;
Banco de Dados Orientados a Objetos

SGBDOO no mercado

34
34
SGBDOO no mercado 34 Banco de Dados Orientados a Objetos
SGBDOO no mercado 34 Banco de Dados Orientados a Objetos
SGBDOO no mercado 34 Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

35 Órion  Foi resultado de um projeto desenvolvido no Programa Advanced Computer Architecture da
35
Órion
 Foi resultado de um projeto
desenvolvido no Programa
Advanced Computer
Architecture da MCC
(Microelectronics and
Computer Corporation),
empresa de Austin;
Caracteristicas
Muito usado em perícias;
Mais barato do mercado.
Banco de Dados Orientados a Objetos
36
36

Conta com 1103 veículos de carga;

Órion
Órion
Órion

4121 veículos de passeio e comerciais leves cadastrados em seu banco de dados;

Além de ser o mais barato do mercado. Presente em mais de 640 oficinas, o Órion possibilitou a realização de mais de130 mil perícias, no ano de 2006.

Banco de Dados Orientados a Objetos

37
37
Órion
Órion
Órion

Novas Funcionalidades

Novo layout da agenda de visitas: Possui todas as informações necessárias para o

trâmite de realização de orçamento e

comunicação direta com o perito da seguradora;

Novo layout de fotos: Possibilita a

inserção de mais de 30 fotos por processo;

Consulta eletrônica de peças: Permite a

consulta eletrônica de peças, tanto por descrição como por part-number.

Banco de Dados Orientados a Objetos

Agenda de Visitas Banco de Dados Orientados a Objetos 38
Agenda de Visitas
Banco de Dados Orientados a Objetos
38
Agenda de Visitas Banco de Dados Orientados a Objetos 39
Agenda de Visitas
Banco de Dados Orientados a Objetos
39
Consulta de Peças Banco de Dados Orientados a Objetos 40
Consulta de Peças
Banco de Dados Orientados a Objetos
40

Layout de Fotos

Layout de Fotos Banco de Dados Orientados a Objetos 4 1

Banco de Dados Orientados a Objetos

41

Órion Banco de Dados Orientados a Objetos 42
Órion
Banco de Dados Orientados a Objetos
42
43  Possui uma performance ate 40 vezes maior que qualquer banco de dados relacional;
43
Possui uma performance ate 40 vezes
maior que qualquer banco de dados
relacional;
DB4O
 Processa
aproximadamente
200.000
Poderoso
SGBDOO para
manipulação de
objetos por segundo, seu código é
aberto e seu custo é muito baixo
(praticamente zero).
objetos como
base de dados;
Caracteristicas
Facilidade de uso;
Voltado a objeto;
A ferramenta permite armazenar classes
Java diretamente no banco, sem precisar
utilizar consultas SQL ou qualquer tipo de
ferramenta que faça o mapeamento
objeto-relacional.
Banco de Dados Orientados a Objetos

Implementação com o DB4O em Java:

 
44
44
 
 

/**

   

* Exemplo de utilização do db4o.

* */

/**

public class GravaObjeto {

*

Definição básica de um Carro.

private static final String DB_FILENAME = "exemplo.db"; private static ObjectContainer db; public static void main(String args[]) { // Abrindo o arquivo de dados. db = Db4o.openFile(DB_FILENAME); try { // Instanciando dois objetos da classe Carro. Carro corsa = new Carro("Chevrolet", "Corsa Hatch 1.6"); Carro fiesta = new Carro("Ford", "Fiesta Hatch 1.6"); // Gravando os dois objetos no banco de dados.

db.set(corsa);

*/ public class Carro { private String fabricante; private String modelo;

*

 

//Construtor public Carro(String marca, String modelo) { this.fabricante = marca;

 

this.modelo = modelo;

}

db.set(fiesta); db.commit(); } finally { // Fechando o arquivo de dados. db.close();

//gets e sets

}

}

Banco de Dados Orientados a Objetos

 
45 Caché Disponível para Windows, Open VMS, Linux e a maioria das plataformas UNIX e
45
Caché
Disponível para Windows, Open
VMS, Linux e a maioria das
plataformas UNIX e é entregue em
sistemas que vão de dois a mais de
Banco de
dados mais
rápido do
10,000 de usuários simultâneos.
BD pós-relacional OO, vem
mundo!
conquistando espaço no mercado
devido ao seu desempenho com as
aplicações.
Permite a integração entre a
linguagem padrão de banco de dados:
SQL (Structured Query Language –
Linguagem de Consultas Estruturada)
OQL (Object Query Language –
Linguagem de Consutlas a Objetos).
Banco de Dados Orientados a Objetos
Linguagens de Programação Caché Banco de Dados Orientados a Objetos 46
Linguagens de Programação
Caché
Banco de Dados Orientados a Objetos
46

Vantagens

47
47
Vantagens 47 Aplicações web de alta performance ; Menos trabalho; Custo-efetividade; Banco de Dados Orientados a

Aplicações web de alta

performance ;

Menos trabalho;

Custo-efetividade;

Vantagens 47 Aplicações web de alta performance ; Menos trabalho; Custo-efetividade; Banco de Dados Orientados a

Banco de Dados Orientados a Objetos

48 Um banco de dados objeto nativo para Python ZODB Objetivo principal: transparência para o
48
Um banco de dados objeto nativo para Python
ZODB
Objetivo principal: transparência
para o desenvolvedor Python;
O ZODB (banco de
dados orientado à
objetos para
aplicalções
Não impõe que estruturas de
tabelas e índices sejam usadas
Phyton,
originalmente
criado como um
componente do
servidor de
para armazenar os dados;
Aplicação Zope2
(Z Object
Publishing
Environment).
O desenvolvedor pode utilizar
qualquer estrutura de dados
nativa da linguagem para
armazenar e pesquisar seus
objetos no SGBD como: listas,
dicionários ou árvores B.
Banco de Dados Orientados a Objetos
49
49
GemStone
GemStone

Utiliza a técnica de BD distribuídos;

Oferece uma arquitetura

cliente/servidor;

Trabalha com diversas

linguagens de dados;

uma arquitetura cliente/servidor;  Trabalha com diversas linguagens de dados; Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

50 Oracle 10g Oracle é o mais popular banco de dados relacional do mundo para
50
Oracle 10g
Oracle é o
mais popular
banco de
dados
relacional do
mundo para
aplicações
transacionais;
 Tiram proveito de
características dos sistemas
relacionais e do sistema
orientado a objeto;
Características
O banco de dados mais rápido para
aplicações OLTP;
O banco de dados mais rápido para
aplicações de datawarehouse;
Banco de dados autogerenciável;
Banco de Dados Orientados a Objetos

Padrão ODMG

51
51

O ODMG (Object Database Management Group) era um consórcio de vendedores de banco de

dados orientados a objetos e mapeadores objeto-

relacionais, membros da comunidade acadêmica, e parceiros interessados. A meta era criar um conjunto de especificações que permitiriam a

portabilidade das aplicações que armazenam

objetos em sistemas de gerenciamento de banco de dados.

Banco de Dados Orientados a Objetos

Padrão ODMG

52
52

Padronização vinda através do consórcio de

SGBDO que criou o padrão ODMG (Object Data Management Group), lançando o

ODMG-93 ou ODMG 1.0.

o padrão ODMG ( Object Data Management Group ), lançando o ODMG-93 ou ODMG 1.0 .

Banco de Dados Orientados a Objetos

Linguagens de consulta

53
53

O ODMG definiu sua própria SQL:

OQL (Object Query Language), linguagem de recuperação de objetos;

ODL (Object Definition Language), linguagem para definir e armazenar estes objetos.

Banco de Dados Orientados a Objetos

Características básicas do objeto 54  1 ° - OID – O número de identificação

Características básicas do objeto

54
54

1 ° - OID O número de identificação do objeto;

2 º - nome Uma identificação feita durante

a aplicação.

3 º - tempo de vida Um objeto é persistente (ou seja, um objeto do banco de dados) ou

um objeto transiente (ou seja, próprio do aplicativo);

4 º - estrutura Define se o objeto é atômico

ou uma coleção.

Banco de Dados Orientados a Objetos

Tipos de Dados 55  O tipo de um objeto é definido pelo seu comportamento

Tipos de Dados

55
55

O tipo de um objeto é definido pelo seu comportamento (conjunto de operações que podem ser executadas) e estado (valores que tomam suas

propriedades atributos e relações).

Existem três formas de caracterizar um tipo:

Uma interface define apenas o comportamento abstrato de um tipo de objeto.

Um literal define apenas o estado abstrato de um tipo literal. Uma classe define o comportamento abstrato e o estado abstrato de um tipo de objeto.

Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos 56
Banco de Dados Orientados a Objetos
56
57
57
57 Por que surgiram os bancos de dados OO e por que utilizá-los Banco de Dados

Por que surgiram os

bancos de dados OO e

por que utilizá-los

Banco de Dados Orientados a Objetos

58  Os usuários não precisavam se preocupar com conceitos ligados a maquina  Apenas
58
 Os usuários não precisavam se preocupar com
conceitos ligados a maquina
 Apenas com Objetos e operações
 Beneficio elevar o nível de abstração ao Maximo
 O objetivo de um programa de aplicação
é resolver um problema especifico
Já o BD resolve uma variedade de
problemas diferentes
Banco de Dados Orientados a Objetos
59
59

Em programas de aplicações é bom inserir muita inteligência em OB complexos

Já No BD não é uma boa idéia

Alguns acreditam que técnicas que envolvem modelagem de Objetos são

as mais adequada para

aplicações complexas

envolvem modelagem de Objetos são as mais adequada para aplicações complexas Banco de Dados Orientados a

Banco de Dados Orientados a Objetos

60
60
60 Os SQL‟s clássicos apresentam dificuldades nessas áreas Banco de Dados Orientados a Objetos

Os SQL‟s clássicos apresentam dificuldades nessas áreas

Banco de Dados Orientados a Objetos

Modelo relacional

61
61
Modelo relacional 61 Curso {curso#, titulo} Oferta {curso#, ofer#, dataofer, local} Professor {curso#, ofer#,emp#}

Curso {curso#, titulo} Oferta {curso#, ofer#, dataofer, local}

Professor {curso#, ofer#,emp#}

Matricula{curso#, ofer#,grau} emp{emp#,enome,salario,posição}

Banco de Dados Orientados a Objetos

Exemplo de modelagem 62 Curso Oferta Matricula Professor EMP Banco de Dados Orientados a Objetos
Exemplo de modelagem
62
Curso
Oferta
Matricula
Professor
EMP
Banco de Dados Orientados a Objetos
63
63

Linguagem de dados OPAL

baseada na smallTalk

Banco de Dados Orientados a Objetos

64
64

object subclasse : „emp‟

Nomesvarinst : #[„emp#‟,‟enome‟,‟posição‟]

Restrições : #[ #[#emp#,string], [#enome, string], [#posição, string]].

Restrições : #[ #[#emp#,string], [#enome, string], [#posição, string]]. Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

65
65

Method : emp Get_emp# ^emp#

%

Method : emp

Set_emp# : emp#_parm emp# :=emp#_parm

%

65 Method : emp Get_emp# ^emp# % Method : emp Set_emp# : emp#_parm emp# :=emp#_parm %

Banco de Dados Orientados a Objetos

66 object subclasse : „curso‟ Nomesvarinst : #[„curso#‟,‟titulo‟,‟ofertas‟] Restrições : #[
66
66

object subclasse : „curso‟

Nomesvarinst : #[„curso#‟,‟titulo‟,‟ofertas‟] Restrições : #[ #[#curso#,string],

[#titulo, string],

[#oferta, oset]].

Banco de Dados Orientados a Objetos

67 object subclasse : „oferta‟ Nomesvarinst : #[„ofer#‟,‟odate‟,‟local‟,‟matriculas‟,‟professore
67
67

object subclasse : „oferta‟ Nomesvarinst :

#[„ofer#‟,‟odate‟,‟local‟,‟matriculas‟,‟professore

s‟] Restrições : #[ #[#ofer#,string],

[#odate, datetime],

[#local, string], [#matriculas,nset],

[#professores, tset]].

Restrições : #[ #[#ofer#,string], [#odate, datetime], [#local, string], [#matriculas,nset], [#professores, tset]].

Banco de Dados Orientados a Objetos

68
68

object subclasse : „matricula‟

Nomesvarinst : #[„emp‟,‟grau‟], Restrições : #[ #[#emp,emp],

[#grau, string]].

: #[„emp‟,‟grau‟], Restrições : #[ #[#emp,emp], [#grau, string]]. Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

69
69

Emp subclasse : „professor‟ nomesvarinst : #[„cursos‟],

restrições : #[#[#cursos,cset]].

: #[„cursos‟], restrições : #[#[#cursos,cset]]. Set subclasse :‟ eset ‟ restrições : emp . Banco de

Set subclasse :‟esetrestrições : emp.

Banco de Dados Orientados a Objetos

70
70

Set subclasse :‟nset

restrições : matricula.

Set subclasse :‟cset‟ restrições : curso.

Set subclasse :‟tsetrestrições : professor.

Set subclasse :‟oset‟ restrições : oferta.

Banco de Dados Orientados a Objetos

Como preencher o banco de dados

71
71

Method : eset add_emp# : emp#_parm add_enome# : enome#_parm add_pos# : pos_parm | emp_oid | emp_oid := emp new.

add_pos# : pos_parm | emp_oid | emp_oid := emp new. emp_oid set_emp# : emp#_parm; set_nome :

emp_oid set_emp# : emp#_parm;

set_nome : enome parm;

set_pos

: pos_parm.

Self add: emp_oid.

Banco de Dados Orientados a Objetos

Vamos inserir agora!

72
72

Oid_de_conj_de_todos_os_emps add_emp# : „e009‟

add_enome : „helms‟

add_pos : „zelador‟.

add_emp# : „e009‟ add_enome : „helms‟ add_pos : „zelador‟. Banco de Dados Orientados a Objetos
add_emp# : „e009‟ add_enome : „helms‟ add_pos : „zelador‟. Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

Busca

73
73

| curso_c001, c001_ofers, c001_ni_ofers |

Curso_c001

:= oosoac detect : [:cx | (cx

get_curso#)=„c001‟].

C001_ofers

:= curso_c001 get_ofertas.

C001_ni_ofers

:= c001_ofers select :

curso_c001 get_ofertas. C001_ni_ofers := c001_ofers select : [:ox | (ox get_local )=„nova york ‟]. ^c001_ni_ofers.

[:ox | (ox get_local)=„nova york‟].

^c001_ni_ofers.

Banco de Dados Orientados a Objetos

Excluir

74
74

E001 := oid_de_conj_de_todos_os_emps detect : [:ex | (ex get_emp#)=„e001‟].

oid_de_conj_de_todos_os_emps remove : e001.

detect : [:ex | (ex get_emp#)=„e001‟]. oid_de_conj_de_todos_os_emps remove : e001. Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

Operações no BD

75
75

Linguagem de definição de Objetos (ODL)

Banco de Dados Orientados a Objetos

Declaração de uma classe

76
76

Class <nome> [extends <nome_pai>]

[:<nomes_interfaces>] [(extends <nome_extensão>)] {<elementos: atributos,

relacionamentos e metodos>

[<declaração_chaves>]}

Banco de Dados Orientados a Objetos

Declarações

77
77

Atributos:

Attribute <tipo> <nome>;

Relaciomentos:

Relationship <rangetype> <nome> [inverse

<nome_classe_inv>::<metodo_inv>]

Banco de Dados Orientados a Objetos

78
78

Rangetype

Declaração:

Set <tipo_conj>

Banco de Dados Orientados a Objetos

79
79

Metodos:

<tipo_retorno> <nome_metodo>

(<lista_parametros>) [raizes(<lista_exceçoes>)]

[in | out | inout] <nome_parametro>

[raizes(<lista_exceçoes>)] [in | out | inout] <nome_parametro> Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

80
80

Chaves não são necessárias!

80 Chaves não são necessárias! Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

Modelo entidade relacionamento

nome quanti Id_empresti ssn endereç a mo o tipo cliente emprestant emprestimo e Cliente Pertence
nome
quanti
Id_empresti
ssn
endereç
a
mo
o
tipo
cliente
emprestant
emprestimo
e
Cliente
Pertence
de
_a
agencia idagenci localida de a 81
agencia
idagenci
localida
de
a 81

Banco de Dados Orientados a Objetos

Entidade cliente em ODL

82
82
Entidade cliente em ODL 82 Interface cliente { Attribute string nome; Attribute integer ssn; Attribute string

Interface cliente { Attribute string nome; Attribute integer ssn;

Attribute string addr {string rua, String cidade, int cep}

endereço:

Relationship set<emprestimo> emprestou inverse emprestimo :: emprestou:

Relationship set<agencia> tem_conta_em

inverse agencia :: clientes:

Key (ssn)

}

Banco de Dados Orientados a Objetos

83
83

Linguagem de consulta de Objetos (OQL)

Banco de Dados Orientados a Objetos

84
84

Não tem operações para atualizações

Possível define nome para uma consulta

Contém construtores de objetos

Suporta clausulas

Banco de Dados Orientados a Objetos

Sintaxe OQL igual a SQL

85
85

Exemplo:

Select d.dnome from d in departamento

where d.faculdade=„engenharia‟;

Banco de Dados Orientados a Objetos

86
86

Necessário um ponto de entrada!

Devemos definir uma variável de interação

Banco de Dados Orientados a Objetos

Três variáveis especificar interações

87
87
Três variáveis especificar interações 87 Banco de Dados Orientados a Objetos
Três variáveis especificar interações 87 Banco de Dados Orientados a Objetos
Três variáveis especificar interações 87 Banco de Dados Orientados a Objetos
Três variáveis especificar interações 87 Banco de Dados Orientados a Objetos

Banco de Dados Orientados a Objetos

88
88
88 Uma consulta só precisa de um objeto persistente Banco de Dados Orientados a Objetos

Uma consulta só

precisa de um objeto

persistente

Banco de Dados Orientados a Objetos

89
89

Fazer uma referência desse modo

89 Fazer uma referência desse modo Set <departamento> Banco de Dados Orientados a Objetos
Set <departamento>
Set <departamento>

Banco de Dados Orientados a Objetos

Inclusão de objetos no banco

90
90

João := cliente(nome: “joão”, ssn: 12345, endereco: struct (rua: “rua A”, cidade:

“salvador”, cep: 12345));

Ou Add emprestimo(quantia: 500, id_emprestimo:

1234, tipo: 2) to joão.emprestou;

Ou  Add emprestimo(quantia: 500, id_emprestimo: 1234, tipo: 2) to joão.emprestou; Banco de Dados Orientados a

Banco de Dados Orientados a Objetos

91 Swizzling Clustering Hibernate Doctrine Banco de Dados Orientados a Objetos
91
91

Swizzling

Clustering

Hibernate

Doctrine

Banco de Dados Orientados a Objetos

Swizzling 92 Swizzling é o processo de conversão entre a representação persistente do objeto, na
Swizzling
92
Swizzling é o processo de
conversão entre a
representação persistente
do objeto, na base de
objetos, e sua
representação dinâmica,
na linguagem de
programação orientada a
objetos adotada pela
aplicação, onde o objeto
será efetivamente
manipulado.
Banco de Dados Orientados a Objetos
Swizzling 93 A conversão ocorre: 1. No momento em que o objeto é transferido da

Swizzling

93
93

A conversão ocorre:

1. No momento em que o objeto é transferido da base de objetos para o espaço de memória da aplicação (checkout);

2. Quando o objeto, já transferido para a memória, é referenciado pela primeira vez

pela aplicação;

3. Se a aplicação o solicita explicitamente; e

4. Quando não é possível reaproveitar um

endereço físico designado anteriormente, o

qual é registrado também na base de dados.

Banco de Dados Orientados a Objetos

Clustering 94 Objeto Complexo A D C B Adoção de estratégias de alocação de objetos

Clustering

94
94

Objeto Complexo

A D C B
A
D
C
B

Adoção de estratégias de alocação de objetos no

sistema de

armazenamento de modo a minimizar a

quantidade de páginas

necessárias para manipular objetos.

Banco de Dados Orientados a Objetos

Estratégias de Clustering 95 Referências Objetos complexos Tipos de objetos A B C A B
Estratégias de Clustering
95
Referências
Objetos complexos
Tipos de objetos
A
B
C
A
B
C
AA
AB
AC
Índices
Definição do usuário
A1
A2
A3
A
B (A.atr)
Banco de Dados Orientados a Objetos

Hibernate

96
96

O Hibernate é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos definido pelo desenvolvedor.

A utilização do Hibernate consiste em:
A utilização do Hibernate consiste em:

1. criar as classes ;

utilização do Hibernate consiste em: 1. criar as classes ; 2. mapear cada uma das classes

2. mapear cada uma das classes feitas;

3. criar os arquivo de configuração do hibernate;

Banco de Dados Orientados a Objetos

Doctrine O Doctrine é um mapeador de objeto–relacional que utiliza objetos em PHP. Banco de
Doctrine
O Doctrine é um mapeador de
objeto–relacional que utiliza
objetos em PHP.
Banco de Dados Orientados a Objetos
97

Vantagens

98
98

Capacidade de Armazenamento de Objetos;

Os Objetos se comunicam entre si através de mensagens;

Permitem representar a semântica do problema do

mundo real;

Manipulam objetos complexos;

Objetos podem ser reusados;

Melhor gerenciamento de transação e concorrência;

Linguagem de consulta mais expressiva;

Melhor suporte para trabalho cooperativo.

Linguagem de consulta mais expressiva; • Melhor suporte para trabalho cooperativo. Banco de Dados Orientados a

Banco de Dados Orientados a Objetos

Desvantagens 99  Falta de Padronização das linguagens de manipulação dos dados;  Alto custo

Desvantagens

99
99

Falta de Padronização das linguagens de manipulação dos dados;

Alto custo de aquisição das novas tecnologias;

Curva de aprendizagem e adaptação ao novo ambiente demorada.

Banco de Dados Orientados a Objetos

Tendências 100 Entre as tendências emergentes neste contexto está o armazenamento em memória.  Prevayler
Tendências
100
Entre as tendências
emergentes neste
contexto está o
armazenamento em
memória.
 Prevayler (2006);
 SOA (Service Oriented
Architecture)
Banco de Dados Orientados a Objetos
Conclusão 101 A evolução dos SGBDOO‟s facilitará a forma de se trabalhar com dados mais
Conclusão
101
A evolução dos SGBDOO‟s facilitará a forma de
se trabalhar com dados mais complexos e com
os objetos das LPOO‟s.
O paradigma de objeto relacional ainda não
esta bem consolidado no mercado de trabalho,
porém vem ganhando seu espaço rapidamente
devido ao seu conjunto de características que
facilitam a implementação da persistência.
Banco de Dados Orientados a Objetos

Referências

102
102
Referências 102 • Jefferson A. do Rosario, Hemerson L. S. Carlin e Alexandre S. Cardoso. Bancos

Jefferson A. do Rosario, Hemerson L. S. Carlin e Alexandre S. Cardoso. Bancos de Dados Orientados a Objetos e Objeto/Relacional. UNIOESTE Universidade Estadual do Oeste do Paraná, 2009.

Clodis Boscarioli, Anderson Bezerra, Marcos de Benedicto,

Gilliard Delmiro. Uma reflexão sobre Banco de Dados Orientados a Objetos. UNIOESTE Universidade Estadual do

Oeste do Paraná / FASP - Faculdades Associadas de São Paulo, 2006.

Cattel, R.G.G.

Object-Oriented and Extended Relational

Database Systems. Addison-Wesley, 1994.

Cattell, R.G.G. The Object Database Standard: ODMG-93 - Release 1.2, Morgan Kaufmann Publishers, inc., 1996.

Leonardo Jones, Luis Alberto, Murilo de Lima. Bancos de

Dados Orientados a Objetos. Universidade Federal da Bahia,

2007.

Banco de Dados Orientados a Objetos