[firebase-br] Identificador para tabelas
Eduardo Jedliczka
eduardo em gerasoft.com.br
Ter Maio 3 17:09:58 -03 2005
Edson,
Para o seu caso, a melhor solução seria criar uma VIEW. - Recomendo a
leitura dos PDFs do Interbase 6 sobre Views e Joins.
Dependendo do seu componente de acesso, poderia gravar os campos na tabela
real e consultar pela view, em outros casos, poderia criar algumas Triggers
na view para realizar o insert, delete e update...
Posso dar mais detalhes à noite...
[s]
==========================
Eduardo Jedliczka
Gerasoft Informática
Apucarana - Pr
==========================
----- Original Message -----
From: "Edson T. Marques" <marques em oriontec.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, May 03, 2005 4:16 PM
Subject: Re: [firebase-br] Identificador para tabelas
> Ok!
>
> Sem querer ser chato... e já sendo, vamos a um exemplo prático.
>
> Meu banco de dados possui uma tabela de produtos com 70 campos. Essa
> tabela de produtos se relaciona com 10 outras tabelas:
> Grupos, SubGrupos, Classificações1, Classificações2, Classificações3,
> Classificações4, Fabricantes, Unidades, CategoriasDimensionais e
> ClassificaçãoFiscal.
> Em cada uma dessas tabelas existe uma chave primária que tem um
> relacionamento com a tabela de produtos e existe outro campo VARCHAR com
> a descrição.
> A tabela de produtos, portanto, possui um índice de fk para cada chave
> do relacionamento.
>
> Atualmente, então, minha tabela de produtos possui os 70 campos que
> falei mais 10 campos com as chaves das tabelas com que se relaciona.
> Alem disso mais 10 campos calculados com select (daquele jeito) para me
> dar as descrições dos registros das tabelas com as quais a tabela de
> produto se relaciona.
>
> Assim:
>
> CREATE TABLE PRODUTO (
> CHAVEPRO INTEGER NOT NULL,
> CHAVEGRU CHAR(3),
> CHAVESGR CHAR(3),
> CHAVECL1 CHAR(3),
> CHAVECL2 CHAR(3),
> CHAVECL3 CHAR(3),
> CHAVECL4 CHAR(3),
> CHAVEFAB CHAR(3),
> CHAVECDI NUMERIC(2,0) DEFAULT 0,
> CHAVECLF VARCHAR(2),
> UNIDADE VARCHAR(3) NOT NULL,
> REFERENCIA VARCHAR(15),
> NOME VARCHAR(50) NOT NULL COLLATE WIN_PTBR,
> NOMEECF VARCHAR(30),
> COMPLEMENTO VARCHAR(256),
> COR VARCHAR(10),
> ...
>
> FABRICANTE COMPUTED BY ((select Nome from Fabricante F where
> F.ChaveFab = Produto.ChaveFab)),
> GRUPO COMPUTED BY ((select Nome from Grupo G where G.ChaveGru =
> Produto.ChaveGru)),
> SUBGRUPO COMPUTED BY ((select Nome from SubGrupo S where S.ChaveSGr =
> Produto.ChaveSGr)),
> CLASSIFIC1 COMPUTED BY ((select Nome from Classific1 C where
> C.ChaveCl1 = Produto.ChaveCl1)),
> CLASSIFIC2 COMPUTED BY ((select Nome from Classific2 C where
> C.ChaveCl2 = Produto.ChaveCl2)),
> CLASSIFIC3 COMPUTED BY ((select Nome from Classific3 C where
> C.ChaveCl3 = Produto.ChaveCl3)),
> CLASSIFIC4 COMPUTED BY ((select Nome from Classific4 C where
> C.ChaveCl4 = Produto.ChaveCl4)),
> DESCRCDIM COMPUTED BY ((select Descricao from CatDimens C where
> C.ChaveCDi = Produto.ChaveCDi)),
> CLASSFISC COMPUTED BY ((select CODIGO from CLASSFISC C where
> C.ChaveClF = Produto.ChaveClF)),
> ...
> );
>
> Então, na interface (cliente) eu só dou um select nessa tabela e tenho
> todos os campos que necessito.
> Aí beleza, É o que eu tenho atualmente.
> Neste caso você me orientaria a mudar essa estrutura, eliminar os campos
> calculados e fazer joins para obter o campos na interface. Dessa forma
> eu teria uma performance muito melhor?
>
> Seria isso?
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas:
http://search.gmane.org/search.php?group=firebase
>
>
Mais detalhes sobre a lista de discussão lista