[firebase-br] ID tipo CHAR - Performance

Ricardo Ferreira Sobrinho ricardoif em gmail.com
Sex Fev 27 16:00:39 -03 2009


2009/2/27 Kleber Caneva <kdcc em terra.com.br>

> Se fosse você, pensava na hipótese de ter 2 campos e usar 3 sequences.
>
> 1) Campo ID (integer) que seria a chave primeira e usaria a Sequence1.
> Seria
> utilizado para fazer as pesquisas.
>
> 2) Campo CODIGO, seria o descrito por você.  'X'+Sequence2 ou 'Y'+Sequence3
>
> E só uma sugestão, pra saber se é possivel teria que conhecer o problmea
> com
> oum todo.
>
> []´s
>
> Kléber Caneva
>

Boa tarde!

É justamente o que eu havia pensado.

Para explicar melhor, segue um resumo de um financeiro:

A tabela CONTA seria o cadastro único de Fornecedores, Clientes, etc.:

CREATE TABLE CONTA (
    ID         INTEGER NOT NULL,
    NOME       VARCHAR(50),
    IFEDERAL   VARCHAR(14),
    IESTADUAL  VARCHAR(18),
    TIPO       CHAR(1)
);

ALTER TABLE CONTA ADD CONSTRAINT PK_CONTA PRIMARY KEY (ID);

CREATE INDEX CONTA_IDX_NOME ON CONTA (NOME);


A tabela CONTAS_PR seria única para contas a Pagar e a Receber::

CREATE TABLE CONTA_PR (
    ID          INTEGER NOT NULL,
    CONTROLE    CHAR(10),
    EMISSAO     DATE,
    CONTA       INTEGER NOT NULL,
    DOCUMENTO   VARCHAR(20),
    VALOR       NUMERIC(15,2),
    VENCIMENTO  DATE,
    QUITACAO    DATE
);

ALTER TABLE CONTA_PR ADD CONSTRAINT PK_CONTA_PR PRIMARY KEY (ID);

ALTER TABLE CONTA_PR ADD CONSTRAINT FK_CONTA_PR_CONTA FOREIGN KEY (CONTA)
REFERENCES CONTA (ID);


E a tabela CAIXA para o lançamento dos recebimentos:

CREATE TABLE CAIXA (
    ID         INTEGER NOT NULL,
    EMISSAO    DATE,
    VALOR      NUMERIC(15,2),
    D_C        CHAR(1),
    CONTA      INTEGER,
    CONTROLE   CHAR(10),
    DOCUMENTO  VARCHAR(10),
    HISTORICO  VARCHAR(30)
);

ALTER TABLE CAIXA ADD CONSTRAINT PK_CAIXA PRIMARY KEY (ID);

ALTER TABLE CAIXA ADD CONSTRAINT FK_CAIXA_CONTA FOREIGN KEY (CONTA)
REFERENCES CONTA (ID);



-- 
Cordialmente,


Ricardo Ferreira Sobrinho



Mais detalhes sobre a lista de discussão lista