quarta-feira, 17 de junho de 2009

f (x) => Transação=Z(Atributos)

Esse é o titulo mais sugestivo que eu achei para dizer que Transação = Soma(Atributos), pena que a fonte não ajudou.

Um ponto fundamental de Genexus é o nome escolhido para designar um atributo.

Eramos livres, e de certa forma irresponsáveis, quanto a essa questão e gostavamos de designar nomes bonitos e práticos como CódigoDoCliente, EndereçoDoFornecedor,... E muitas vezes para controlar os registros colocávamos flags, do tipo, RegistroApagado, DataCriação, em todas as nossas tabelas. Coisa chique, e ainda dava um ar de programa bem feito, bem documentado, bem construido, organizado às nossas aplicações.

Com Genexus começamos a tratar os atributos de forma mais responsável, pois este elemento ganha uma responsabilidade maior, pois através do nome do atributo Genexus nos diz se o "conceito" é o mesmo ou não.

Por exemplo, ClienteId é um conceito que representa o código do cliente em toda a aplicação. Cliente é para nós um agrupamento de conceitos (informações, regras, ...), ou um objeto. Em Genexus buscamos organizar os conceitos no objeto colocando o nome do objeto seguido do conceito, assim obtém-se uma referência lógica ou organização.

A regra nos diz que:

* Conceitos Iguais = Nomes Iguais
* Nomes Diferentes = Conceitos Diferentes

Um conceito somente poderá aparecer em uma tabela no sistema todo, a menos que seja um campo chave. Por exemplo: ClienteNome (NomeDoCliente) somente aparecerá em uma tabela no sistema, enquanto que ClienteId (CódigoDoCliente), que é campo chave poderá aparecer em várias tabelas, e quando isso ocorrer haverá relação entre esta tabela com a tabela de Clientes.



Assim começa a mágica da 3a. Forma Normal em ação...