[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