Você está na página 1de 35

Mapeamento de Objetos para Tabelas Relacionais

Sem dvida os SGBDR dominam o mercado comercial.


Oracle MS-SQLServer IBM DB2 Informix Sybase Ingres MySQL PostgreSQL Outros...

Banco de Dados OO
Maiores informaes: http://www.odbms.org/ A informao a ser armazenada o objeto Apenas para nichos especficos
Telecomunicaes espao sade Multimedia CAD/CAM/CAE

Tipos de objetos
Os objetos podem ser persistentes ou transientes. Objetos transientes: existem somente na memria principal.
Objetos de controle e objetos de fronteira.

Objetos persistentes: tm uma existncia que perdura durante vrias execues do sistema.
Precisam ser armazenados e recuperados. Tipicamente objetos de entidade.

Projeto de banco de dados


Uma das primeiras atividades do projeto detalhado de um software o desenvolvimento do banco de dados. Essa atividade corresponde ao projeto do banco de dados. Principais tarefas:
Construo do esquema do banco de dados Armazenamento fsico dos dados Definio de vises sobre os dados armazenados. Atribuio de direitos de acesso Polticas de backup dos dados

Conceitos do modelo relacional


O modelo relacional fundamentado no conceito de relao. Cada coluna de uma relao pode conter apenas valores atmicos.
chave primria: colunas cujos valores podem ser utilizados para identificar unicamente cada linha de uma relao.

Associaes entre linhas: valores de uma coluna fazem referncia a valores de uma outra coluna. (chave estrangeira) .
Uma chave estrangeira tambm pode conter valores nulos , representados pela constante NULL.

O NULL normalmente usado para indicar que um valor no se aplica, ou desconhecido, ou no existe.

Mapeamento de objetos para o modelo relacional


a partir do modelo de classes que o mapeamento de objetos para o modelo relacional realizado.
Semelhante ao mapeamento do MER. Diferenas em virtude de o modelo de classes possuir mais recursos de representao que o MER.

MER e o modelo de classes no so equivalentes!


O MER um modelo de dados; O modelo de classes representa objetos (dados e comportamento).

Mapeamento de objetos para o modelo relacional


Os exemplos dados a seguir utilizam uma coluna de implementao como chave primria de cada relao. Uma coluna de implementao um identificador sem significado no domnio de negcio. Essa abordagem utilizada:
para manter uma padronizao nos exemplos

Mapeamento: Classes e seus atributos


Classes so mapeadas para tabelas.
Caso mais simples: mapear cada classe como uma tabela, e cada atributo como uma coluna. No entanto, pode no haver correspondncia unvoca entre classes e tabelas.

Para atributos o que vale de forma geral que um atributo ser mapeado para uma ou mais colunas. Nem todos os atributos de uma classe so persistentes (atributos derivados).

Mapeamento de associaes
O procedimento utiliza o conceito de chave estrangeira . H trs casos, cada um correspondente a um tipo de conectividade. Nos exemplos dados a seguir, considere o seguinte diagrama de classes:

Mapeamento de associaes 1..1


Raramente acontecem Deve-se adicionar uma chave estrangeira em uma das duas tabelas.

Exemplo de mapeamento de associao 1..1

Mapeamento de associaes muitosmuitos


Uma tabela de associao deve ser criada. Alternativas para definir a chave primria.
definir uma chave primria composta, combinando as chaves primrias das tabelas. criar uma coluna de implementao que sirva como chave primria simples da relao de associao.

Mapeamento de agregaes
Forma especial de associao mesmo procedimento para realizar o mapeamento de associaes pode ser utilizado. A diferena semntica influi na forma como o SGBDR deve agir quando um registro da relao correspondente ao todo deve ser excludo ou atualizado.
Remoo ou atualizao em cascata. Pode ser implementado como gatilhos (triggers) e procedimentos armazenados (stored procedures) .

Mapeamento de associaes n-rias


Associaes n-rias (n 3): procedimento semelhante ao utilizado para associaes binrias de conectividade muitos para muitos .
Uma relao para representar a associao criada. So adicionadas nesta relao chaves estrangeiras. Se a associao n-ria possuir uma classe associativa, os atributos desta so mapeados como colunas da tabela de associao.

Mapeamento de classes associativas


Mapeamento feito atravs da criao de uma tabela para represent-la. Os atributos da classe associativa so mapeados para colunas dessa tabela. Essa tabela deve conter chaves estrangeiras que referenciem as tabelas correspondentes s classes que participam da associao.

Mapeamento de Herana
Trs formas alternativas de mapeamento:
Uma tabela para cada classe da hierarquia Uma tabela para toda a hierarquia Uma tabela para cada classe concreta da hierarquia

Nenhuma das alternativas de mapeamento de generalizao pode ser considerada a melhor dentre todas.
Cada uma delas possui vantagens e desvantagens. Escolha de uma delas depende do software sendo desenvolvido. A equipe de desenvolvimento pode decidir implementar mais de uma alternativa.

Mapeamento de herana
A 1 alternativa (uma relao para cada classe da hierarquia) a que melhor reflete o modelo OO.
Desvantagem: desempenho da manipulao das relaes.
Inseres, remoes e junes.

Mapeamento de herana
A 2 alternativa de implementao bastante simples, alm de facilitar situaes em que objetos mudam de classe.
Desvantagem: alterao de esquema
Adio ou remoo de atributos. tem o potencial de desperdiar bastante espao de armazenamento

Mapeamento de herana
A 3 alternativa apresenta a vantagem de agrupar os objetos de uma classe em uma nica relao. Desvantagem: quando uma classe modificada, cada uma das tabelas correspondentes as suas subclasses deve ser modificada. Todas as tabelas correspondentes a subclasses devem ser modificadas quando a definio da superclasse modificada.

Camada de Persistncia
Para isolar os objetos do negcio de detalhes de comunicao com o SGBD, uma camada de persistncia pode ser utilizada. O objetivo de uma camada de persistncia isolar os objetos do software de mudanas no mecanismo de armazenamento. Se um SGBD diferente tiver que ser utilizado pelo sistema, somente a camada de persistncia modificada; Os objetos da camada de negcio permanecem intactos. Diminuio do acoplamento entre os objetos e a estrutura do banco de dados torna o software mais flexvel e mais portvel.

Camada de persistncia
No entanto, as vantagens de uma camada de persistncia no vm de graa.
A intermediao feita por essa camada entre os objetos do domnio e o SGBD traz uma sobrecarga de processamento . A camada de persistncia pode aumentar a complexidade computacional da realizao de operaes que seriam triviais com o uso direto de SQL.

As vantagens adquiridas pela utilizao de uma camada de software, principalmente em sistemas complexos , geralmente compensam a perda no desempenho e a dificuldade de implementao.

Estratgias de persistncia
H diversas estratgias que podem ser utilizadas para definir a camada de persistncia de um software:
Acesso direto ao banco de dados Uso de um SGBDOO ou de um SGBDOR Uso do padro DAO (Data Access Object ) Uso de um frameworks

Acesso direto
Uma estratgia simples para o mapeamento objetorelacional cada objeto persistente possuir comportamento que permita a sua restaurao, atualizao ou remoo.
H cdigo escrito em SQL para realizar a insero, remoo, atualizao e consulta das tabelas onde esto armazenados os objetos.

Essa soluo de fcil implementao em Linguagens de quarta gerao, como o Visual Basic, e o Delphi. Essa estratgia de mapeamento objeto-relacional justificvel para sistemas simples.

Acesso direto - desvantagens


Classes relativas lgica do negcio ficam muito acopladas s classes relativas interface grfica e ao acesso ao banco de dados. Mais complicado migrar o software de um SGBD para outro. A lgica da aplicao fica desprotegida de eventuais modificaes na estrutura do banco de dados. A coeso das classes diminui
cada classe deve possuir responsabilidades relativas ao armazenamento de seus objetos, alm de ter responsabilidades inerentes ao negcio.

Dificuldades de manuteno e extenso do cdigo fonte praticamente probe a utilizao desta estratgia em sistemas complexos.

Uso de SGBDOO ou SGBDOR


Um SGBDOO permite a definio de estruturas de dados arbitrariamente complexas (classes) no SGBDOO. Nesse modelo, atributos de um objeto podem conter valores de tipos de dados estruturados No modelo relacional, as tabelas s armazenam itens atmicos. possvel definir hierarquias de herana entre classes. A linguagem de consulta para SGBDOO, OQL (Object Query Language), permite consultar e manipular objetos armazenados em um banco de dados.
Tambm possui extenses para identidade de objetos, objetos complexos, chamada de operaes e herana.

Uso de SGBDOO ou SGBDOR


Os principais SGBDR comearam a incorporar caractersticas de orientao a objetos. Esses SGBD passaram a adotar o modelo de dados objeto-relacional, (extenso do modelo relacional), onde so adicionadas caractersticas da orientao a objetos. Hoje em dia os principais SGBD so sistemas de gerncia de bancos de dados objeto-relacionais (SGBDOR).

Uso do padro DAO


O padro DAO uma forma de desacoplar as classes do negcio dos aspectos relativos ao acesso ao armazenamento persistente.
DAO: Data Access Object (Objeto de Acesso a Dados).

Nessa estratgia, um software obtm acesso a objetos de negcio atravs de uma interface, a chamada interface DAO. O software interage com o objeto DAO atravs de uma interface. O objeto DAO isola completamente os seus clientes das particularidades do mecanismo de armazenamento (fonte de dados) sendo utilizado.
Ex. JDBC, ODBC, ADO.NET

Você também pode gostar