Parte11 - MapeamentoObjetoRelacional

download Parte11 - MapeamentoObjetoRelacional

of 35

Transcript of Parte11 - MapeamentoObjetoRelacional

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    1/35

    Mapeamento de Objetos para

    Tabelas Relacionais

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    2/35

    Sem dvida os SGBDR dominam o mercadocomercial. Oracle MS-SQLServer IBM DB2 Informix Sybase Ingres MySQL PostgreSQL Outros...

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    3/35

    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

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    4/35

    Tipos de objetos

    Os objetos podem ser persistentes outransientes.

    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.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    5/35

    Projeto de banco de dados

    Uma das primeiras atividades do projetodetalhado de um software o desenvolvimentodo banco de dados.

    Essa atividade corresponde aoprojeto do bancode 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

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    6/35

    Conceitos do modelo relacional

    O modelo relacional fundamentado no conceito derelao.

    Cada coluna de uma relao pode conter apenas valoresatmicos.

    chave primria: colunas cujos valores podem ser utilizadospara identificar unicamente cada linha de uma relao.

    Associaes entre linhas: valores de uma coluna fazemreferncia a valores de uma outra coluna. (chaveestrangeira) .

    Uma chave estrangeira tambm pode conter valores nulos ,representados pela constante NULL.

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

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    7/35

    Mapeamento de objetos para omodelo relacional

    a partir do modelo de classes que omapeamento de objetos para o modelorelacional 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).

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    8/35

    Mapeamento de objetos para omodelo relacional

    Os exemplos dados a seguir utilizam umacoluna de implementao como chave

    primria de cada relao.

    Uma coluna de implementao umidentificador sem significado no domnio denegcio.

    Essa abordagem utilizada: para manter uma padronizao nos exemplos

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    9/35

    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 unvocaentre classes e tabelas.

    Para atributos o que vale de forma geral queum atributo ser mapeado para uma ou mais

    colunas. Nem todos os atributos de uma classe so

    persistentes (atributos derivados).

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    10/35

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    11/35

    Mapeamento de associaes

    O procedimento utiliza o conceito de chave estrangeira .

    H trs casos, cada um correspondente a um tipo deconectividade.

    Nos exemplos dados a seguir, considere o seguinte diagramade classes:

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    12/35

    Mapeamento de associaes 1..1

    Raramente acontecem

    Deve-se adicionar uma chave estrangeira emuma das duas tabelas.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    13/35

    Exemplo de mapeamento deassociao 1..1

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    14/35

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    15/35

    Mapeamento de associaes muitos-

    muitos

    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 sirvacomo chave primria simples da relao de

    associao.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    16/35

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    17/35

    Mapeamento de agregaes

    Forma especial de associaomesmoprocedimento para realizar o mapeamento deassociaes pode ser utilizado.

    A diferena semntica influi na forma como oSGBDR deve agir quando um registro da relaocorrespondente ao todo deve ser excludo ouatualizado.

    Remoo ou atualizao em cascata. Pode ser implementado como gatilhos (triggers) e

    procedimentos armazenados (stored procedures) .

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    18/35

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    19/35

    Mapeamento de associaes n-rias

    Associaes n-rias (n 3): procedimentosemelhante ao utilizado para associaesbinrias 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 classeassociativa, os atributos desta so mapeadoscomo colunas da tabela de associao.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    20/35

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    21/35

    Mapeamento de classes associativas

    Mapeamento feito atravs da criao deuma tabela para represent-la.

    Os atributos da classe associativa somapeados para colunas dessa tabela.

    Essa tabela deve conter chaves estrangeirasque referenciem as tabelas correspondentes

    s classes que participam da associao.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    22/35

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    23/35

    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 degeneralizao pode ser considerada a melhor dentretodas.

    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.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    24/35

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    25/35

    Mapeamento de herana

    A 1 alternativa (uma relao para cada classeda hierarquia) a que melhor reflete omodelo OO.

    Desvantagem: desempenho da manipulao dasrelaes.

    Inseres, remoes ejunes.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    26/35

    Mapeamento de herana

    A 2 alternativa de implementao bastantesimples, alm de facilitar situaes em queobjetos mudam de classe.

    Desvantagem: alterao de esquema Adio ou remoo de atributos.

    tem o potencial de desperdiar bastante espao dearmazenamento

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    27/35

    Mapeamento de herana

    A 3 alternativa apresenta a vantagem de agrupar os objetosde uma classe em uma nica relao.

    Desvantagem: quando uma classe modificada, cada uma dastabelas correspondentes as suas subclasses deve ser

    modificada.

    Todas as tabelas correspondentes a subclasses devem sermodificadas quando a definio da superclasse modificada.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    28/35

    Camada de Persistncia

    Para isolar os objetos do negcio de detalhes de comunicaocom o SGBD, uma camada de persistncia pode ser utilizada.

    O objetivo de uma camada de persistncia isolar os objetosdo 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 dobanco de dados torna o software maisflexvel e mais portvel.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    29/35

    Camada de persistncia

    No entanto, as vantagens de uma camada depersistncia 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 complexidadecomputacional da realizao de operaes que seriamtriviais 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 adificuldade de implementao.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    30/35

    Estratgias de persistncia

    H diversas estratgias que podem serutilizadas para definir a camada depersistncia 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

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    31/35

    Acesso direto

    Uma estratgia simples para o mapeamento objeto-relacional cada objeto persistente possuircomportamento que permita a sua restaurao,atualizao ou remoo. H cdigo escrito em SQL para realizar a insero,

    remoo, atualizao e consulta das tabelas onde estoarmazenados 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.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    32/35

    Acesso direto - desvantagens

    Classes relativas lgica do negcio ficam muito acopladas sclasses relativas interface grfica e ao acesso ao banco dedados.

    Mais complicado migrar o software de um SGBD para outro.

    A lgica da aplicao fica desprotegida de eventuaismodificaes na estrutura do banco de dados. A coeso das classes diminui

    cada classe deve possuir responsabilidades relativas aoarmazenamento de seus objetos, alm de ter responsabilidadesinerentes ao negcio.

    Dificuldades de manuteno e extenso do cdigo fontepraticamente probe a utilizao desta estratgia em sistemascomplexos.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    33/35

    Uso de SGBDOO ou SGBDOR

    Um SGBDOO permite a definio de estruturas de dadosarbitrariamente complexas (classes) no SGBDOO.

    Nesse modelo, atributos de um objeto podem contervalores de tipos de dados estruturados

    No modelo relacional, as tabelas s armazenam itensatmicos. 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.

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    34/35

    Uso de SGBDOO ou SGBDOR

    Os principais SGBDR comearam a incorporarcaractersticas 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 degerncia de bancos de dados objeto-relacionais

    (SGBDOR).

  • 7/30/2019 Parte11 - MapeamentoObjetoRelacional

    35/35

    Uso do padro DAO

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

    Nessa estratgia, um software obtm acesso a objetos denegcio atravs de uma interface, a chamada interfaceDAO.

    O software interage com o objeto DAO atravs de umainterface.

    O objeto DAO isola completamente os seus clientes dasparticularidades do mecanismo de armazenamento (fontede dados) sendo utilizado. Ex. JDBC, ODBC, ADO.NET