Vous êtes sur la page 1sur 8

Orientação a Objetos no Banco de Dados Oracle

Luis dos Santos Souza

Escola de Informática – Universidade Católica de Pelotas (UCPEL)


Pelotas – RS – Brasil
souza_l@uol.com.br

Resumo. Este artigo tem o objetivo de descrever as características do banco


de dados Oracle com enfoque em orientação a Objetos, fazendo um prevê
introdução a Orientação a Objetos seus conceitos, suas características,
sistemas gerenciadores de banco de dados Orientado a Objetos, e a
orientação do BC Oracle..

Palavras-chave. Banco de Dados, Orientação a Objetos, Oracle.

Abstract. This article has the objective to describe the characteristics of the
data base Oracle with approach in orientation the Objects, being made one
foresees introduction the Orientation the Objects its concepts, its
characteristics, systems gerenciadores of data base Guided Objects, and the
orientation of the BC Oracle.

Keywords: Database, Objects to Orientation, Oracle.

1. Introdução
O artigo tem como seu objetivo descrever a utilização da orientação a objetos no banco
de dados objeto-relaciona Oracle, descrevendo suas vantagens e desvantagens em
relação a banco de dados relacionais. O artigo está disponibilizado da seguinte forma,
uma breve introdução de OO, banco de dados orientado a objetos, vantagens e
desvantagens, as características do SGBOOS, comportamento do banco de dados
Oracle, e por fim conclusões.

2. Orientação a objetos
Orientação a objetos corresponde a organizações de objetos que fazem parte de uma
estrutura de dados e componentes, cujos seu principiais conceitos são apresentados a
seguir.
2.1. Conceitos
Objeto é uma abstração que representar algo real ou virtual. O objeto e descrito por
atributos que somente podem ser acessados por operações descritas nos métodos.
Métodos são as especificações e o comportamento dos objetos eles são
responsáveis pela manipulação do objeto no qual ele esta descrito ou de outros objetos
nos quais são filhos, eles são divididos em vários tipos, os mais comuns são os
construtores, destrutores, gets e sets.
Encapsulamento características fundamental dos objetos, no qual os atributos e
os detalhes da implementação dos métodos estão escondidos de outros objetos.
Mensagens é o meio de comunicação entre os objetos, trocar de mensagens
significa chamar um método do objeto.
Classes especificação na qual se cria os objetos. Todos os objetos criados a partir
de uma classe possuem os mesmos atributos e os mesmos comportamento da classe de
que herdou .
Overloading capacidade de existir na mesma classe métodos com o mesmo
nome, mas com argumentos diferentes.
Herança relacionamento entre classes numa hierarquia, capacidade de criar uma
nova classe a partir de uma outra existente.
Herança múltipla é quando uma classe herda características de varias subclasses.
Interface é a especificação de uma classe sem nenhuma instrução para os
métodos, ficando a cargo da classe que implementa interface definir o conteúdo dos
métodos.
Polimorfismo é a capacidade de existir diferentes implementações para métodos
com mesmo nome em diferentes classes de mesma hierarquia e herança.

3. BD com tecnologia OO
São divididos em dois grupos Pure object_oriented DBMS (ODBMS), que baseia-se
somente no modelo de dados Orientado a Objetos. Usam declarações de classes muito
semelhantes das linguagens orientadas a objetos. Ex BD Jasmini .
Object Relacional DBMS (ORDNMS) , são bancos relacionais que possibilitam o
armazenamento de objetos, permitem a relação de relacionamentos, herança , object
identifier é um identificador interno do banco para cada objeto, são atribuídos somente
pelo DBMS e não pelos usuários. Não tem padrão único de implementação como os BD
relacionais. Ex DB Oracle, Postgres, Informix, BD2, Titanium.

4. Vantagens do OO
Em relação a bancos de dados relacionais temos como vantagens qualidade do software,
reutilização, portabilidade, facilidade de manutenção, escabilidade. No relacional diversas
vezes a linguagem de programação é completamente diferente a utilizada na RDBMS.
A estrutura utilizada nos bancos e usadas na programação são diferentes não possuindo
correspondência direta. Tem necessidade de implementar a camada persistente,
utilizando maio tempo de desenvolvimento para mapear estruturas de programação em
estrutura do banco de dados. Os bancos de dados relacionais (RDBMS) usam uma
arquitetura tabular onde os dados são referenciados através de linhas e colunas, enquanto
os bancos de dados orientados a objetos (ODBMS) podem ter combinações de lógica e o
dados. Nos relacionais as tabelas são definidas (teoria da normalização) evitando a
redundância dos dados e facilitando a pesquisa e atualizações. Os orientados a objetos
possuem métodos, classes e outros mecanismos do modelo de orientação por objetos. Os
objetos são ativos já que podem conter lógica, enquanto os relacionais são passivos
necessitando de um programa para manipular os dados.
Os dados dos bancos relacionais utiliza a linguagem SQL no qual permite que os
sistemas relacionais desenvolvidos por muitos fornecedores possam se comunicar entre si
e acessar banco de dados comuns. Em contra partida, os bancos de dados orientados a
objetos não possuem uma linguagem padrão dificultando a interoperacionalidade entre os
bancos de dados de diferentes fornecedores. Para definir as tabelas dos bancos
relacionais é utilizado o processo de normalização, que consiste em definir nas tabelas
apenas os dados que sejam únicos para a entidade descrita e definindo relacionamentos
para outras tabelas também normalizadas. Os bancos relacionais estão fundamentados em
uma forte teoria matemática e ferramentas bem desenvolvidas. Enquanto os bancos
orientados a objetos não possuem um forte teoria como apoio e não existem ferramentas
que descrevam o modelo de objetos. Embora, o Jasmine da Computer Associates possua
boas ferramentas de desenvolvimento. A vantagem do banco orientado a objetos é a
lógica contida no objeto e a possibilidade de ser reutilizado várias vezes em diversas
aplicações.

5. Características de SGBDOO
Em um SGBDOO os objetos da base de dados são tratados como objetos da linguagem
de programação, possuem características de e princípios do paradigma de orientação a
objetos. Estas características serão brevemente descritas.
Persistência, os dados de um processo ou transação persistem após o término da
execução do mesmo. A persistência é requisito evidente para bases de dados, a
persistência deve permitir que qualquer objeto, independente de seu tipo, torne-se
persistente.
Gerenciamento de armazenamento secundário provê independência entre o
sistema lógico e o sistema físico. Usualmente suportada através de mecanismos de
gerenciamento de índices, fuffer de dados, seleção de caminhos de acesso, alocação de
espaço em disco, transferência de dados para a memória principal.
Controle de concorrência gerenciamento de múltiplos usuários interagindo
simultaneamente com o sistema.
Recuperação de falhas capacidade de retornar o sistema e seus dados a um
estado anterior consistente.
Mecanismo de consulta a consulta deve ser especificada através de uma
expressão de alto nível, alem de ser eficiente em termos de tempo de resposta e
independente da aplicação.
Objeto complexos, suporte a objetos grande em tamanhos e a objetos
estruturados, como tuplas, vetores e listas. Tornando-se a necessidade de suporte as
operações que manipulam estes objetos.
Identidade de objeto, cada objeto da base possui um identificador único e
imutável, gerado automaticamente pelo sistema.
Encapsulamento , o objeto da base de dados encapsula dados que definem sua
estrutura interna e operações que definem sue comportamento, a estrutura interna e a
definição do comportamento de um objeto ficam escondidas, e o objeto é acessado
através das operações pré definidas para seu tipo.
Tipos, classes e herança , suporte a hierarquias de tipos ou hierarquias de classes
através do conceito de herança , o que permitem que novos tipos sejam definidos a partir
de tipos de classes pré definidos. Os subtipos subclasses herdam os atributos e as rotinas
das superclasses, podendo no entanto possuir atributos e rotinas próprios.
Polimorfismo também chamadas de sobrecarga, permite que um mesmo nome de
operação seja utilizado para implementações diferentes, dependendo do tipo de objeto ao
qual a operação é aplicada.
Binding atrasado ou dinâmico realiza a tradução de nomes das operações em
endereços de programas em tempo de execução. O binding realizado em tempo de
compilação, ao contrario , é chamado de binding estático, o binding atrasado, embora
seja lento e dificulte a checagem de tipos é necessário para viabilizar a utilização de
sobrecarga de operações.
Extensibilidade é o conjunto de tipos pré definidos do sistema que deve ser
extensível, permitindo que o programados defina novos tipos. No entanto o tratamento
de tipos definidos pelo usuário seja diferente do sistema, esta diferença deve ser
imperceptível para o programados e para a aplicação.
A arquitetura utilizada nos SGBDOO são construídas com base me três
abordagens principais: Sistemas baseados em linguagens de programação orientadas a
objetos nos quais sua linguagem e seu banco de dados e todo voltado para o orientação a
objetos. Sistemas relacionais estendidos seu modelo de dados e relacional e linguagem de
consulta estendidos de forma a incorporar os conceitos da orientação a objetos, como no
banco de dados Postgres e Oracle. Sistemas baseados em modelos de dados orientados a
objetos é baseado em modelos de dados originalmente orientados a objetos. Os sistemas
que seguem essa abordagem são construídos a partir dos princípios do modelo de dados,
de modo a suportar os conceitos formalizados no modelo.

5. Transações, concorrência, recuperação e vercionamento de BDOO


A transação é a execução de um programa inteiramente ou então não executado, devem
mapear bancos de dados de um estado coerente para outro. Para manter a coerência, as
transações devem passar pelo ACID, Atomicidade, coerência, isolamento e durabilidade.
Atomicidade como uma transação é executada inteiramente ou entoa noa é
executado, ou a seqüência completa de operações é aplicada ao banco de dados ou então
nenhuma. Esse recurso chama-se atomicidade, as transações são atômicas, indivisíveis.
Coerência quando todas as suas restrições de integridade são satisfeitas,
pressupões-se que na execução de uma transação, na ausência de interferência de outras
transações concorrentes o banco de dados seja levado de um estado coerente para outro.
Isolamento como as transações são executados concorrente no mesmo banco de
dados, elas deve ser isoladas das outras operações, do contrario a operação intercalada
de que fornece segurança contra interferências entre as transações concorrentes.
Durabilidade está relacionada à capacidade de se recuperar de falhas no sistema e
no meio, as atualizações de uma transação efetivada devem ser preservadas e registradas
em algum meio durável. Deve-se manter redundância suficiente para que se reconstrua
um banco de dados coerente.
Transações aninhadas as transações de aplicações de banco de dados orientadas
a objetos são normalmente mais demoradas que as de aplicações comercias
convencionais. Alonga duração das transações em aplicações avançadas é uma
característica das aplicações de banco de dados da próxima gravação. Varias estratégias
relacionadas á longa duração das transações foram propostas na pesquisa de banco de
dado. Algumas estratégias influenciaram as implementações de bancos de dados
orientados a objetos. As transações aninhadas são utilizadas para resolver alguns
problemas associados as transações de longa duração, podendo conter subtransações,
sendo que todas as subtransações devem ser efetivadas para que a transação de alto nível
se efetive.
Concorrência Vários algoritmos de controle podem ser usados para garantir a
capacidade de serialização das transações e a coerência do banco de dados, nos bancos
de dados orientados a objeto, o bloqueio pode ser associado a vários grânulos que são
manipulados pelos usuários, incluindo classes, instancias e objetos complexos. Podemos
sitar dois tipos de bloqueio: Bloqueio de Hierarquia de classe e Bloqueio de Objeto
complexo.
Recuperação uma das estruturas mais utilizadas para o gerenciamento de
recuperação é o log. O log é utilizado para registrar e armazenar as imagens anteriores e
posteriores dos objetos atualizados. A imagem anterior é o estado do objeto antes da
atualização da transação, e a imagem posterior é o estado do objeto após a atualização
da transação. Quase todos os bancos de dados orientados a objeto suportam a
recuperação. A maioria dos SGBDOO utiliza o logging para a recuperação do banco de
dados a um estado coerente. Alguns utilizam a duplicação ou espelhamento de dados.
Vercionamento o gerenciamento de versão em um banco de dados orientados a
objeto consiste em ferramentas e construções que automatizam ou simplificam a
construção e a organização de versões ou configurações. Sem essas ferramentas, caberia
ao usuário organizar e manter as versões. Podemos considerar a configuração como um
grupo de objetos tratados como uma unidade para bloqueio e Vercionamento. Os
objetos individuais dentro da configuração podem sofrer modificações, de modo que
cada objeto pode Ter um histórico das versões. Vários objetos dentro da configuração
são atualizados em momentos diferentes e não necessariamente na mesma freqüência.

6. Banco de dados Oracle


O banco de dados oracle com sua opção de objetos ,permite a manipulação e criação de
objetos assim podemos classifica-lo como um banco Objeto_relacional.
As entidades do mundo real são definidas pelos usuários, podendo possuir
métodos implementados no servidor, todos os objetos criados terao um identificados
único que nunca terá o valor alterado durante todo o ciclo de vida do objeto. As
referencias são os ponteiros no banco de dado e definem relacionamentos entre objetos
que torna o acesso navegacional mais rápido do que o acesso padrão.
Possui suporte a coleções na forma de arrays de tamanhos variáveis e tabelas
aninhadas, essas coleções podem consistir de tipos nativo, tipis definidos pelo usuário e
de referencias, podendo ser utilizado como atributos dos tipos de objetos.
Outra característica do banco de dados oracle é o cache de objetos, que são as
copias do objetos que podem ser levados para um cache do cliente diminuindo o tráfego
na rede. Podendo-se carregar os objetos complexos com um único acesso ao banco de
dados.
As visões de objetos, permitem criar abstrações de objetos sobre os banco de
dados relacionais. Em adição ao mecanismo tradicional de visões.
Podemos citar tambem ferramentas de auxilia a programação o OTT ( provêm
um mapeamento dos tipos do banco de dados para estruturas em C que podem ser
utilizadas na aplicação) eo ProC/C++( pré compilador que a partir de um programa que
utilize SQL do Oracle, gere programas C/C++).

7. Exemplo de Implementação Oracle 9i

Create type telfone_typ as object(


" declaração dos atributos"
Codtel number,
Numero varchar2(10),
Tipo varcahr2(30),
DDD varchar2(3),
" declaração das operações"
Member function obtemfone return varchar2);

Create type body telefone_typ as


Member function obtemfone return varchar2
Is
Begin
Retrun ´(´ || ddd || ´)´ || ´-´ || numero;
End;
End;

Create type pessoa_typ as object(


Codpessoa number,
Nome varchar 2(50),
Email varchar2(100),
Telefone telefone_typ, ..
) not final;
Create type pessoajuridica_typ under pessoa(
Razaosocial varchar2(80), ...
);

Create table pessoasjuridicas of pessoajuridica_typ;


Create table Clientes (
Pessoa pessoajuridica_typ,
Detalhes clob
);

insert into clientes(pessoa, detalhes)


values (pessoajuridica_typ(1,´terra Brasil´, ...),
´cliente desde 1989 ...´);

select * from clientes;

select c.pessoa from clientes c


where c.pessoa.codpessoa = 1;

8. Conclusão
Após o estudo dos bancos de dados relacionais e orientados a objetos, foi notado que a
utilização de banco de dados OO tem uma grande significação em termos de velocidade,
estrutura de programação, seu código fica mais limpo sua implementação fica mais
visível , no entanto hoje temos poucos banco de dados puramente orientados a objetos,
na sua grande maioria ele são objeto_realcional.
Entrei em contato com analista de sistemas que faz toda a modelagem em OO e a
programação também voltada para OO no entanto ele desenvolveu uma ferramenta para
fazer a inserção no banco utilizando OO. "Faço a modelagem do projeto em OO,
inclusive com toda programação voltada a OO, e na camada em que a classe acessa os
dados, modelamos de forma relacional. Utilizamos uma ferramenta que projetei
chamada Dédalos escrita em Delphi que faz isso." Elci Machado Coordenador de
Informática elci@ipiranga.com.br Refinaria Ipiranga S/A. Rio Grande - RS - Brasil.
9. Referencias
http://geocities.yahoo.com.br/kellyne_se/uml/uml.htm
http://www.sdsi.uri.br/geoob/
http://www.mundooo.com.br/php/index.php
Molz, K W - "Um framework para construção de aplicações OO sobre SGBD
relacional" , Dissertação de Mestrado - UFRGS , Porto Alegre, fevereiro 1999.
http://www.javafree.com.br/home/index.php
http://www.ufpa.br/sampaio/curso_de_sbd/bdoo/apostila/per1.html
http://www.oracle.com/br/
http://www.ucb.br/latosensu/cursos/SistemasOO/Disciplinas/analise/proj/proj5.htm
http://metropole.inf.ufrgs.br/versoestempo/cmp151/MaterialAulas/aula03-
ModelosOO.pdf

Vous aimerez peut-être aussi