Loading...

phpms@googlegroups.com

[Prev] Thread [Next]  |  [Prev] Date [Next]

Re: [phpms] Modelos com relacionamentos dinâmicos Bruno Gasparetto Mon Feb 06 04:00:50 2012

Com a herança no banco de dados o serviço fica mais fácil. Quando li sobre
herança no Postgres ainda haviam muitos comentários divergentes sobre tal
funcionalidade, mas ao que parece agora estão pensando com mais carinho
nessa funcionalidade.

Usando o MySQL eu utilizo uma solução semelhante à do Begnini, com a
diferença que a utilizo uma tabela "genérica" para fazer o relacionamento
da "Balance" com os outros modelos, então nesta tabela guardo o nome do
modelo ao qual o relacionamento se refere, nesta parte de forma parecida ao
que o Cauan faz. Porém tenho o mesmo problema que você, Cauan, na questão
da complexidade em algumas tarefas simples.

Em 5 de fevereiro de 2012 22:36, Humberto Pereira <[EMAIL PROTECTED]>escreveu:

> Vc resolve isso com heranca simples (especializacao).
>
> O seu movimento de caixa (Balance) eh a classe pai, e cada um dos modelos
> relacionados eh uma especializacao (EmployeeBalance, ServiceBalance, etc.)
>
> Alguns bancos de dados (PostgreSQL, por ex.) suportam heranca (sharding eh
> outro nome dessa funcionalidade) naturalmente. Voce tem uma tabela base
> onde todos os dados sao inseridos, e, dependendo de certo campo, sao
> inseridos em uma tabela filha tbm. Qdo vc faz o SQL na tabela pai, voce
> trabalha com todos os dados, e qdo faz em alguma tabela filha, voce ve
> apenas os dados daquele tipo.
>
> Para os bancos que nao suportam voce tem uma tabela base (Balance) e uma
> tabela filha (EmployeeBalance, por ex.) relacionadas 1 p/ 1. Nessa tabela
> filha fica o relacionamento com a outra entidade (Employee, nesse ex.).
> Isso resolve o problema da integridade que provavelmente vc nao esta
> mantendo hoje (qdo apaga um funcionario ou um produto, o q acontece com o
> movimento de caixa?)
>
> []s
> Begnini
>
>
> 2012/2/5 Cauan Cabral <[EMAIL PROTECTED]>
>
>> Tarde pessoal,
>>
>> Corriqueiramente enfrento o seguinte problema: um Modelo (M do MVC)
>> precisa manter relacionamentos
>> com outros Modelos (vários diferentes). Trabalho muito com CakePHP, mas
>> queria deixar a questão de uma
>> forma mais geral, então apesar de fazer algumas referências aqui, não
>> precisam prender a questão ao framework.
>>
>> Pense na situação: tenho um modelo que representa um movimento de caixa,
>> vou chamar de Balance. Esse
>> movimento pode ter como referência um serviço realizado (Service), um
>> funcionário pago (Employee), uma
>> despesa qualquer (não há uma entidade ligada), um produto vendido
>> (Product), etc.
>>
>>  Costumo resolver isso guardando no registro o nome do Modelo à que ele
>> se refere e a chave estrangeira, daí
>> ao ler o registro, vejo o valor e carrego os dados relacionados. Porém
>> isso aumenta muito a complexidade
>> de tarefas simples como busca ou paginação.
>>
>> Já pensei em alternativas como moldar uma interface para o Balance e que
>> tudo que possa gerar um novo fluxo
>> de caixa implemente seus métodos. Ainda assim teria de olhar um a um os
>> registros e carregar os dados relacionados,
>> mas teria uma assinatura uniforme entre os diferentes modelos.
>>
>> Como vocês trabalham com isso? Outra situação que pode exemplificar isso
>> é no log de ações do usuário.
>>
>>  Abraços,
>> --
>> Cauan Cabral
>> ----------------
>> Como falar comigo: Google Talk: [EMAIL PROTECTED] Skype: CauanCabral MSN:
>> [EMAIL PROTECTED]
>> Onde me encontrar: [image: 
>> Linkedin]<http://www.linkedin.com/in/cauancabral>[image:
>> Facebook] <http://www.facebook.com/cauancabral>[image: 
>> Wordpress]<http://cauancabral.net>[image:
>> Twitter] <http://twitter.com/cauancabral>[image: 
>> Orkut]<http://www.orkut.com.br/Main#Profile?uid=7512190439488689375>
>>
>>
>>  --
>> Você recebeu esta mensagem porque está inscrito no Grupo "phpms" em
>> Grupos do Google.
>> As regras de utilização deste grupo encontram-se em:
>> http://www.phpms.org/regras-da-lista
>> Para postar neste grupo, envie um e-mail para [EMAIL PROTECTED]
>> Para cancelar a sua inscrição neste grupo, envie um e-mail para
>> [EMAIL PROTECTED]
>> Para ver mais opções, visite este grupo em
>> http://groups.google.com/group/phpms?hl=pt-PT
>> Para acessar o site do grupo, visite: http://www.phpms.org/
>>
>
>  --
> Você recebeu esta mensagem porque está inscrito no Grupo "phpms" em Grupos
> do Google.
> As regras de utilização deste grupo encontram-se em:
> http://www.phpms.org/regras-da-lista
> Para postar neste grupo, envie um e-mail para [EMAIL PROTECTED]
> Para cancelar a sua inscrição neste grupo, envie um e-mail para
> [EMAIL PROTECTED]
> Para ver mais opções, visite este grupo em
> http://groups.google.com/group/phpms?hl=pt-PT
> Para acessar o site do grupo, visite: http://www.phpms.org/
>



-- 
Bruno Gasparetto

-- 
Você recebeu esta mensagem porque está inscrito no Grupo "phpms" em Grupos do 
Google.
 As regras de utilização deste grupo encontram-se em: 
http://www.phpms.org/regras-da-lista
 Para postar neste grupo, envie um e-mail para [EMAIL PROTECTED]
 Para cancelar a sua inscrição neste grupo, envie um e-mail para [EMAIL 
PROTECTED]
 Para ver mais opções, visite este grupo em 
http://groups.google.com/group/phpms?hl=pt-PT
 Para acessar o site do grupo, visite: http://www.phpms.org/