Você está na página 1de 44

Mapeamento de objetos

para o modelo relacional


Prof. David Zanetti
Introduo
Os objetos de um sistema podem ser classificados em
persistentes e 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 quando uma execuo termina, e
restaurados quando uma outra execuo iniciada.
Tipicamente objetos de entidade.
Introduo
Para objetos persistentes, surge o problema de conciliar as
informaes representadas pelo estado de um objeto e pelos
dados armazenados em registros de uma tabela.

O descasamento de informaes (impedance mismatch) um


termo utilizado para denotar o problema das diferenas entre as
representaes do modelo OO e do modelo relacional.
Projeto de Banco de Dados
Projeto de banco de dados
Uma das primeiras atividades do projeto detalhado de um SSOO o desenvolvimento do banco
de dados a ser utilizado, se este no existir.

Principais tarefas:
Construo do esquema do banco de dados

Criao de ndices

Armazenamento fsico dos dados

Definio de vises sobre os dados armazenados.

Atribuio de direitos de acesso

Polticas de backup dos dados

O mapeamento do modelo de classes para o modelo relaciona possibilita a criao do esquema


do banco de dados.
Conceitos do modelo relacional

O modelo relacional fundamentado no conceito de relao.

Cada coluna de uma relao pode conter apenas valores atmicos.

Uma 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.
Conceitos do modelo relacional

Departamento
id sigla nome idGerente
13 RH Recursos Humanos 5
14 INF Informtica 2
15 RF Recursos Financeiros 6

Alocao
Projeto
id idProjeto idEmpregado
id nome verba
100 1 1
1 PNADO R$ 7.000
101 1 2 2 BMMO R$ 3.000
102 2 1 3 SGILM R$ 6.000
103 3 5 4 ACME R$ 8.000
104 4 2
Conceitos do modelo relacional

Empregado
id matrcula CPF nome endereo CEP idDepartamento
1 10223 038488847-89 Carlos Rua 24 de Maio,40 22740-002 13
2 10490 024488847-67 Marcelo Rua do Bispo, 1000 22733-000 13
3 10377 NULL Adelci Av. Rio Branco, 09 NULL NULL

4 11057 0345868378-20 Roberto Av. Apiacs, 50 NULL 14


5 10922 NULL Aline R. Uruguaiana, 50 NULL 14
6 11345 0254647888-67 Marcelo NULL NULL 15
Mapeamento de objetos para o
modelo relacional

Quando utilizamos um SGBD Relacional, temos a


necessidade de realizado o mapeamento dos valores de
atributos de objetos persistentes para tabelas.

a partir do modelo de classes que o mapeamento de


objetos para o modelo relacional realizado.

Importante: o MER e o modelo de classes no so


equivalentes
Mapeamento de objetos para o
modelo relacional

Utilizaremos a seguinte notao simplificada:


Cada relao representada atravs do seu nome e dos
nomes de suas colunas entre parnteses.

Chaves primrias so sublinhadas

Chaves estrangeiras so tracejadas.

Os exemplos dados a seguir utilizam sempre uma coluna


de implementao como chave primria de cada relao.
Mapeamento: Classes e seus atributos

Classes so mapeadas para relaes.


Caso mais simples: mapear cada classe como uma relao, e cada atributo
como uma coluna.
No entanto, pode no haver correspondncia unvoca entre classes e
relaes.

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 classes e seus
atributos

Cliente(id, CPF, nome, telefone, logradouro, dataNascimento, idCEP)


CEP(id, nmero, sufixo)
Cliente(id, nome, telefone, logradouro, dataNascimento, CPF, CEP)
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, sem perda de generalidade, que:
h uma associao entre objetos de duas classes, Ca e Cb.
Ca e Cb foram mapeadas para duas relaes separadas, Ta e Tb.

Considere tambm o seguinte diagrama de classes:


Mapeamento de associaes 1:1

Deve-se adicionar uma chave estrangeira em uma das duas relaes


para referenciar a chave primria da outra relao.

Escolha da relao na qual a chave estrangeira deve ser adicionada com


base na participao.

H trs possibilidades acerca da conectividade:


Obrigatria em ambos os extremos.
Opcional em ambos os extremos.
Obrigatria em um extremo e opcional no outro extremo.
Mapeamento de associaes 1:1

Gerenciado
1
0..1
Empregado
-matrcula : String
Departamento
-CPF : String
-sigla : String -nome : String
-nome : String -endereo : String
-CEP : String

Departamento(id, sigla, nome, idEmpregadoGerente )


Empregado( id, matrcula, CPF, nome, endereo, CEP )
Mapeamento de associaes 1-muitos

Neste caso, deve-se adicionar uma chave


estrangeira em Ta para referenciar a chave
primria de Tb.
Empregado
-matrcula : String
Departamento
-CPF : String
-sigla : String -nome : String
-nome : String -endereo : String
-CEP : String
1
Trabalha
*

Departamento( id, sigla, nome, idEmpregadoGerente ) 16


Empregado(id, matrcula, CPF, nome, endereo, CEP, idDepartamento)
Mapeamento de associaes
muitos-muitos

Uma relao de associao deve ser criada.


Uma relao de associao serve para representar a associao muitos para
muitos entre duas ou mais relaes.

Equivalente aplicao do mapeamento um para muitos duas vezes,


considerando-se os pares (Ta, Tassoc) e (Tb, Tassoc).

Alternativas para definir a chave primria de Tassoc.


definir uma chave primria composta.
criar uma coluna de implementao que sirva como chave primria simples da
relao de associao.
17
Mapeamento de associaes
muitos-muitos

Empregado
-matrcula : String Projeto
-CPF : String Alocado
-nome : String
-nome : String
* * -verba : Decimal
-endereo : String
-CEP : String

Departamento(id, sigla, nome, idEmpregadoGerente)


Empregado(id, matrcula, CPF, nome, endereo, CEP, idDepartamento)
Alocao(idProjeto, idEmpregado, nome, verba)
Projeto(id, nome, verba)
Departamento(id, sigla, nome, idEmpregadoGerente)
Empregado(id, matrcula, CPF, nome, endereo, CEP, idDepartamento)
Alocao(id, idProjeto, idEmpregado, nome, verba)
Projeto(id, nome, verba)

18
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 e procedimentos armazenados.
Mapeamento de associaes reflexivas

Forma especial de associao mesmo procedimento para


realizar o mapeamento de associaes pode ser utilizado.
Em particular, em uma associao reflexiva de conectividade
muitos para muitos, uma relao de associao deve ser criada.

supervisor 1

0..1 Empregado *
matrcula : String
nome : String
marido dataContratao : Data supervisionado

esposa 0..1

Empregado(id, matrcula, nome, dataContratao, idCnjunge, idSupervisor)20


Mapeamento de associaes n-rias

Associaes n-rias (n3): 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 relao de associao.
Mapeamento de associaes n-rias

Alocao
Projeto
Tcnico * *
-nome
-nome
-verba

*
Computador
-modelo

Tcnico( id, nome )


Projeto( id, nome, verba )
Computador( id, modelo )
Alocao( id, idProjeto, idTcnico, idComputador )
Mapeamento de classes associativas

Para cada um dos casos de mapeamento de associaes,


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

23
Mapeamento de classes associativas

lder 1 0..1

* 0..1
Empregado Projeto * * Ferramenta
matrcula sigla
nome
nome nome
descrio
verbaAnual
Trabalho
cargaHorria Utilizao
remunerao dataUso

Empregado(id, matrcula, nome)


Projeto(id, sigla, nome, verbaAnual, idEmpregadoLder)
Ferramenta(id, nome, descrio)
Utilizao(id, idFerramenta, idProjeto, dataUso )
Trabalho(id, idEmpregado, idProjeto, cargaHorria, remunerao)

24
Mapeamento de generalizaes

Trs formas alternativas de mapeamento:


Uma relao para cada classe da hierarquia
Uma relao para toda a hierarquia
Uma relao 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 das do sistema sendo desenvolvido.
A equipe de desenvolvimento pode decidir implementar mais de uma
alternativa.
Mapeamento de generalizaes

Contribuinte
endereo

PessoaFsica
PessoaJurdica
CPF
CNPJ
nome
razoSocial
dataNascimento

Contribuinte(id, endereo)
PessoaFsica(id, nome, dataNascimento, CPF, idContribuinte)
PessoaJurdica(id, CNPJ, razoSocial, idContribuinte)
Pessoa(id, nome, endereo, dataNascimento, CPF, CNPJ, razoSocial, tipo)
PessoaFsica(id, dataNascimento, nome, endereo, CPF)
PessoaJurdica(id, CNPJ, endereo, razoSocial)

26
Mapeamento de generalizaes

A 1 alternativa (uma relao para cada classe da


hierarquia) a que melhor reflete o modelo OO.
classe mapeada para uma relao
as colunas desta relao so correspondentes aos
atributos especficos da classe.
Desvantagem: desempenho da manipulao das relaes.
Inseres e remoes e junes.

27
Mapeamento de generalizaes

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:


hierarquia com vrias classes irms

objetos pertencem a uma, e somente uma, classe da hierarquia.

28
Mapeamento de generalizaes

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 relaes correspondentes as suas
subclasses deve ser modificada.
Todas as relaes correspondentes a subclasses devem
ser modificadas quando a definio da superclasse
modificada.
12.2 Construo da camada de persistncia
Camada de persistncia

Aspectos importantes relativos ao armazenamento de objetos:


Materializao: restaurar um objeto a partir do banco de dados,
quando necessrio.

Atualizao: enviar modificaes sobre um objeto para o banco de


dados.

Remoo: remover um objeto do armazenamento persistente.

Esses aspectos esto relacionados a funcionalidades que


implementam o transporte de objetos da memria principal alocada
ao SSOO para um SGBD e vice-versa.
Camada de persistncia

Para isolar os objetos do negcio de detalhes de


comunicao com o SGBD, uma camada de
persistncia pode ser utilizada.

A diminuio do acoplamento entre os objetos e a


estrutura do banco de dados torna o SSOO 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 certas operaes, que seriam triviais com o uso direto de SQL.

Entretanto, 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

Acesso direto ao banco de dados

Uso de um SGBDOO ou de um SGBDOR

Uso do padro DAO (Data Access Object)

Uso de um framework ORM


Acesso direto
Cada objeto persistente possua 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.

Fcil implementao, justificvel para sistemas simples.


Acesso direto
Desvantagens para sistemas mais complexos.
Classes ficam muito acopladas

Mais complicado migrar o SSOO de um SGBD para outro.

A lgica da aplicao fica desprotegida de eventuais


modificaes na estrutura do banco de dados.

Dificuldades de manuteno e extenso do cdigo fonte


praticamente probe a utilizao desta estratgia em sistemas
complexos.
Uso de SGBDOO ou SGBDOR

Nesse modelo, em vez de tabelas, os conceitos


principais eram classes e objetos.

No incio da dcada de 1990, foram criados


alguns produtos comerciais de sistemas de
gerncia de bancos de dados orientados a
objetos (SGBDOO)
Uso do padro DAO

Forma de desacoplar as classes do negcio dos aspectos


relativos ao acesso ao armazenamento persistente.
DAO: Data Access Object (Objeto de Acesso a Dados).

O SSOO obtm acesso a objetos de negcio atravs de uma


interface, a chamada interface DAO.

O SSOO interage com o objeto DAO atravs de uma interface.


Uso do padro DAO
Estrutura do padro DAO
Frameworks ORM
Conjunto de classes que realiza o mapeamento objeto-relacional
de forma transparente.
ORM: Object-Relational Mapping (mapeamento objeto-relacional).

Demanda a definio da correspondncia entre a estrutura de


objetos da aplicao e o esquema relacional do banco de dados.
Arquivo de configurao, denominado arquivo de mapeamento.
Exerccio

Derive o modelo relacional a partir do

diagrama de classes a seguir:


Exerccio (1)
Exerccio (2)

Derive o modelo relacional a partir do

diagrama de classes a seguir:


Exerccio

Você também pode gostar