Olá a todos, preciso desenvolver um sistema financeiro e tenho algumas dúvidas quanto a modelagem, a principal dúvida é se utilizo apenas uma tabela chamada movimentação ou se divido tudo em duas tabelas(entrada e saida). Bom, no principio imaginei o sistema funcionando da seguinte forma: o usuário poderá cadastrar os lançamentos(que poderão ser receitas ou despesas baseados no plano de contas), além disso, no sistema eu também poderia cadastrar uma compra ou uma venda(a compra ao ser paga geraria uma despesa e a venda ao ser paga geraria uma receita) e além disso eu teria os abastecimentos dos veículos, que não posso tratar como uma outra compra qualquer, nessa situação eu teria a tabela de movimentos:
- movimento_id
- compra_id
- venda_id
- abastecimento_id
- centro_custo_id
- tipo_movimento( RECEITA ou DESPESA)
- data
- valor_previsto
- operacao(COMPRA, VENDA,ABASTECIMENTO)
- descricao
- fornecedor_id
- cliente_id
- forma_pagamento
- situacao_pagamento
- numero_parcelas
- desconto
- valor_pago
neste caso eu teria uma tabela não normalizada, mas seria mais fácil extrair os dados pois eu teria apenas uma tabela, entretanto, dependendo da situação, vou ter muitos campos nulos nesta tabela, não sei até quanto isso pode ser prejudicial ao BD, ou se afeta apenas na organização dos dados mesmo. Conversei com algumas pessoas que me sugeriram trabalhar desta forma com apenas uma tabela de movimentações, mas também conversei com pessoas que me sugeriram desmembrar esta tabela em duas:
======== Receita =========
- receita_id
- venda_id
- data
- valor_previsto
- centro_custo_id
- descricao
- cliente_id
- forma_pagamento
- situacao_pagamento
- numero_parcelas
- desconto
- valor_pago
======== Despesa =========
- despesa_id
- compra_id
- data
- valor_previsto
- centro_custo_id
- descricao
- cliente_id
- forma_pagamento
- situacao_pagamento
- numero_parcelas
- desconto
- valor_pago
Qual a melhor opção a seguir? um tabelão desnormalizado mas que seja fácil extrair informação ou com duas tabelas de receita e despesa? como ficaria essa modelagem em relação aos pagamentos, já que um lançamento pode ser pago de forma integral ou de forma parcial?