Ir para o conteúdo

 Voltar a MDArte Desen...
Tela cheia

Mlehoria - chaves compostas

14 de Janeiro de 2011, 14:20 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 3 vezes
Nós estamos trabalhando em um banco de dados que possui chaves primarias compostas e nao temos como mudar isso.
Precisamos de suporte a chaves primarias compostas para este tipo de situação

Hj o mdarte trabalha apenas com chaves primarias simples (aquele atributo id q ele gera)

 

Grata.

Autor: Debora Andrade de Lima


44 comentários

  • 524d045200366b8d318f898ff5377ab3?only path=false&size=50&d=404Rodrigo Salvador Monteiro(usuário não autenticado)
    18 de Janeiro de 2011, 12:13

     

    Ola Debora,

    vc pretende usar o Hibernate? O MDArte trabalha atualmente com chaves primarias baseadas em um ID desprovido de semantica por dois motivos principais:

    1) Esta eh uma pratica ja consagrada e amplamente difundida em funcao de diversos beneficios

    2) O Hibernate (framework usado pelo MDArte para a camada de dominio) faz uso dessa pratica e possui uma serie de mecanismos e controles internos baseados no ID.

     Imagino que vc possua alguma base de dados legada e esteja querendo usar o MDArte para acessa-la. Se for esse o caso, o acesso a essa base de dados sera somente para leitura ou sera leitura/escrita?

    Se vc puder descrever brevemente o cenario onde pretende usar o MDArte nos ajudaria a projetar uma solucao que venha a te atender.

    Ats,

    Rodrigo.

    • 5fbd02f249b6c95f8802075a79e03979?only path=false&size=50&d=404Debora Andrade de Lima(usuário não autenticado)
      26 de Janeiro de 2011, 13:19

       

      Seria um sistema legado sim e a principio seria somente leitura. Conseguimos porém introduzir uma nova chave, simples, que será usada no lugar da chave composta.

      Temos porém um novo problema. Como o banco é legado e atualmente utilizado por diversas outras aplicações, não podemos alterar o nome de suas colunas. Considere o seguinte exemplo:

      Tabela Usuario com chave primaria idn_usuario (e diversos outros campos).

      Tabela Grupo com chave primaria idn_grupo (e diversos outros campos)

      Tabela Usuario_Grupo para guardar o relacionamento n:m entre as tabelas Usuario e Grupo com chave primaria idn_usuario_grupo e duas chaves estrangeiras idn_usuario e idn_grupo relacionadas as tabelas acima.

      Caso eu modele no MagicDraw a tabela Usuario com um atributo id, com o esteriotipo identifier e o valor etiquetado @andromda.persistence.column  = idn_usuario, consigo o efeito desejado, assim como na tabela Grupo.

      Na tabela Usuario_Grupo porém, mesmo que eu coloque os esteriotipos unique e ExportId nos atributos primarios das tabelas usuario e grupo eu nao consigo fazer com sejam gerados atributos de nome idn_usuario e idn_grupo. Eles sempre sao gerados com o nome usuario_fk e grupo_fk.

       O esteriótipo ExportId ainda funciona? Estou usando a versão 15-RC3 no momento

      • 5fbd02f249b6c95f8802075a79e03979?only path=false&size=50&d=404Debora Andrade de Lima(usuário não autenticado)
        26 de Janeiro de 2011, 16:21

         

        Consegui resolver esse problema usando o tagged value @andromda.persistence.column=idn_usuario na extremidade da tabela usuario do relacionamento entre ambas. Não entendi muito bem o porque funcionou, mas ainda assim é uma solução :) Obrigada pelo apoio Rodrigo.

      • Bb0d54eb9311d61feb3e8ba4b597ea71?only path=false&size=50&d=404Roque Pinel(usuário não autenticado)
        26 de Janeiro de 2011, 16:51

         

        Olá Debora,

        Esclarecendo sobre o 'ExportId'. É representado por uma propriedade do namespace 'hibernate' e um estereótipo do profile 'persistence'. Como pode ser visto nos links anteriores, essa funcionalidade está relacionada a exportação, em que o atributo indicador passaria a representar o 'id'. Devido a código legado, essa funcionalidade ainda está em avaliação, não sendo recomendado o seu uso.

        Visto que isso não resolveria o problema indicado. Podemos considerar um valor etiquetado: @andromda.persistence.column. Ele deve ser aplicado na extremidade da associação.

        Logo, no seu exemplo, teriamos na extremidade do lado da entidade "Usuario" o valor de "idn_usuario" e extremidade do lado da entidade "Grupo" o valor de "idn_grupo".

        Dessa forma, você teria a tabela "Usuario"  e "Grupo" conforme você já tinha conseguido montar, e a "Usuario_Grupo" com as duas FKs renomeadas apropriadamente.

        A partir desse ponto, você terá problemas em alguns detalhes de geração. Por conta do baixo suporte a sistemas que não utilizam PK com nome 'id' em suas entidades, em algumas classes ocorrerá a geração de métodos relacionados a 'id', o que levantará alguns erros durante a compilação. Estamos cientes desse problema e priorizando as próximas correções/evoluções do MDArte.

        Para outras dúvidas que possam surgir, deixo a dica sobre Wiki do MDArte. A Wiki ainda está em evolução, mas já possui informações que podem vir a ser úteis.

         

Checklist para o projeto de interfaces

14 de Dezembro de 2011, 16:00, por Desconhecido

Este é um roteiro básico para verificação dos elementos interface para desenharmos um projeto. Vale lembrar que os projetos do MDArte são basicamente em CRUD (Create, Retrieve, Update e Delete) e não sistemas CMS com outras divisões e exibições. Cada um pode ter a sua lista e seria legal enviar comentários com adendos para ficar cada vez mais completa e padronizada.



Monthly archive for agosto 2010 CSS, Plugins, jQuery Flexigrid – Tabelas inteligentes com CSS e jQuery

14 de Dezembro de 2011, 15:46, por Desconhecido

Essa semana aqui no projeto, estávamos procurando uma solução para algumas tabelas que extrapolavam o tamanho da



Auto-Grid 960

14 de Dezembro de 2011, 15:41, por Desconhecido

Essa dica vai pra quem não tem muita paciência de configurar um js de grid 960 direto no seu código para ver o alinhamento de seus elementos.



Título na tabela do displayTag

14 de Dezembro de 2011, 15:39, por Desconhecido

O MDArte utiliza o displayTag e é possível customiza-lo de diversas maneiras. Uma coisa legal é colocar um título que só será exibido quando a consulta for executada.



CSS3:Textos com sombras

14 de Dezembro de 2011, 15:12, por Desconhecido

Se voce aplicar a propriedade “box-shadow” em um texto, a mesma vai ser aplicada em sua caixa (box). Para isso foi criada a propriedade “text-shadow”.
Seu uso é o seguinte: