Qual a melhor forma de modelar uma tabela de contas a receber?

2 respostas
thimor

Ola senhores,
Postando outra duvida a respeito de modelagem. Travei em uma parte ao modelar uma tabela de contas a receber e gostaria da opinião de voces mais uma vez. A grosso modo o que teriamos nessa tabela seria o numero do titulo, a data do vencimento, o valor, a data que foi pago, o valor pago e se esta baixado ou nao. Ate aqui tudo bem. O problema onde travei vem agora. Nos meus requisitos tanto posso ter contas a receber de cliente como de fornecedor e estes sao tabelas distintas.

Pensei em colocar o atributo idcliente e idfornecedor sem criar a FK. Depois pensei em criar as FK com os atributos quando o titulo fosse de fornecedor o idcliente seria nulo e vice versa.

pergunto Qual dessas duas solucoes é a melhor indicada? Ou teria uma solucao mais indicada para este caso? Obrigado!

2 Respostas

sergiotaborda

thimor:
Ola senhores,
Postando outra duvida a respeito de modelagem. Travei em uma parte ao modelar uma tabela de contas a receber e gostaria da opinião de voces mais uma vez. A grosso modo o que teriamos nessa tabela seria o numero do titulo, a data do vencimento, o valor, a data que foi pago, o valor pago e se esta baixado ou nao. Ate aqui tudo bem. O problema onde travei vem agora. Nos meus requisitos tanto posso ter contas a receber de cliente como de fornecedor e estes sao tabelas distintas.

Pensei em colocar o atributo idcliente e idfornecedor sem criar a FK. Depois pensei em criar as FK com os atributos quando o titulo fosse de fornecedor o idcliente seria nulo e vice versa.

pergunto Qual dessas duas solucoes é a melhor indicada? Ou teria uma solucao mais indicada para este caso? Obrigado!

Se vc poder alterar o modelo do cliente /fornecedor, torne-os uma unica tabela. Ou pelo menos uma tabela unica com derivações. Por exemplo , tabela Pessoas com filhas DetalhesCliente e DetalhesFornecedor. Este modelo é melhor pq vc pode expandir para ter outros tipos de pessoa. Por exemplo vc poderia ter titulos para empregados, por exemplo. Por exemplo quando ha deslocamentos que tem que ser cobrados.

Se não poder mexer no modelo do cliente/fornecedor, crie dois ids.

robinsonbsilva

Boa tarde thimor!!

Uma boa idéia seria você "analisar os processos que geram contas a receber".
Por exemplo, o que geraria contas a receber pára nós seriam os "titulos", assim o vinculo seria entre Titulo -> ContasReceber.
Abaixo segue um exemplo visual:

"titulo" —gera um— "contas receber"
"contas receber" —pode ter mais de uma — "parcela"

CREATE TABLE titulo(
    id_empresa smallint NOT NULL,
    id_titulo bigint NOT NULL,
    id_crc bigint,
    id_cli_for bigint, /*AQUI VC PODE MUDAR O NOME, MAS USA A MESMA COLUNA PARA O ID*/
    id_tipo bigint, /*AQUI VC PODE CONSTANTES, EX: USAR 1= CLIENTE , 2= FORNECEDOR*/
    data_emissao date,
    total_bruto numeric(13,2),
    total_liquido numeric(13,2),
    data_excluido date,
    excluido smallint,
    id_funcionario_exclusao bigint

);

CREATE TABLE contas_receber (
    id_empresa smallint NOT NULL,
    id_crc bigint NOT NULL,
    data_emissao date,
    valor numeric(13,2),
    data_excluido date,
    excluido smallint,
    id_funcionario_exclusao bigint
);

CREATE TABLE parcela_crc (
    id_empresa smallint NOT NULL,
    id_crc bigint NOT NULL,
    id_parcela bigint NOT NULL,
    data_vencto date,
    valor numeric(13,2),
    valor_recebido numeric(13,2),
    data_baixa date,
    id_funcionario_baixa bigint,
    excluido smallint
);
Criado 3 de março de 2010
Ultima resposta 3 de mar. de 2010
Respostas 2
Participantes 3