[Cascavel-pm] Exemplo de relacao many-to-many com Class::DBI
Nelson Ferraz
nferraz em gnubis.com.br
Quarta Abril 13 09:50:40 PDT 2005
> Mas não seja por isso, eu ainda estou na dúvida de como usar corretamente o relacionamento da
> Class::DBI. Por exemplo, pegando como base as classes que fiz seria certo eu criar um objeto
> dbUser e acessar todos as outras classes por ele? ex: historico, grupos, etc? Ou eu teria que
> criar um objeto para cada classe? (dá pra mandar um exemplo??) :)
Rod,
Eu estou desenvolvendo uma ferramenta que pode ajudá-lo na criação dos módulos do Class::DBI, bem como scripts de criação da base de dados, templates, e toda a aplicação web. Esta ferramenta se chama AppML, e já recebeu valiosas contribuições do Luis Campos de Carvalho e do Ednardo Lobo.
A idéia é simples: ao invés de escrever o código manualmente, nós criamos uma ferramenta que faz isso por nós.
Como isso é feito? A partir dos conceitos fundamentais de UML, desenvolvemos um dialeto em XML para traduzir as especificações de um sistema de informação. A este dialeto denominamos AppML (Application Markup Language).
Tomando a sua aplicação como exemplo, esta seria uma especificação simplificada:
<project>
<table name="users">
<field name="login"/>
</table>
<table name="groups">
<field name="group_name"/>
</table>
<table name="relationship">
<rel name="user" table="users"/>
<rel name="group" table="groups"/>
</table>
</project>
Na verdade a gente precisa incluir mais alguns detalhes, como os tipos dos campos (para criação das tabelas), e os textos que devem aparecer nos templates. No final, o exemplo ficaria assim:
<project name="teste" title="meu primeiro projeto">
<table name="users" caption="usuários" descriptor="login">
<field name="login" type="varchar" size="40" caption="login do usuário"/>
</table>
<table name="groups" caption="grupos" descriptor="group_name">
<field name="group_name" type="varchar" size="40" caption="nome do grupo"/>
</table>
<table name="relationship">
<rel name="user" table="users" caption="usuário"/>
<rel name="group" table="groups" caption="grupo"/>
</table>
</project>
Agora sim, o AppML é capaz de gerar a base de dados em SQL, os módulos, templates, e todo o código-fonte necessário para que a aplicação seja instalada em um servidor web e acessada por múltiplos usuários simultaneamente.
As principais vantagens dessa abordagem são a consistência, qualidade e produtividade. Como o AppML é um software livre (disponível sob a licença GNU GPL), você também tem a flexibilidade para modificá-lo da maneira como achar necessário.
Você encontra o AppML no seguinte endereço:
http://www.gnubis.com.br/bin/view/English/AppML
[]s
Nelson
Mais detalhes sobre a lista de discussão Cascavel-pm