Fórum Dúvida modelagem de movimentação de estoque #563703
06/10/2016
0
Neste sistema tenho uma tabela chamada "COMPRAS" e uma outra tabela chamada de "REQUISIÇÕES", e toda vez que acontece uma compra ou requisição, também é adicionado uma linha na tabela "MOVIMENTOS", nesta tabela movimentos tenho um campo que guarda a chave tanto para uma compra ou para uma requisição e outro campo que guarda o tipo de operação: entrada ou saída, por exemplo no dia 06/10/2016 realizei uma requisição no valor de R$ 10,00 e uma compra no valor de R$ 36,00:
<table> <tr> <th>movimento_id</th> <th>com_req_id</th> <th>tipo_movimento</th> <th>material_id</th> <th>valor_unitario</th> <th>valor_total</th> <th>data</th> </tr> <tr> <td>1</td> <td>50</td> <td>ENTRADA</td> <td>67</td> <td>2.50</td> <td>10</td> <td>06/10/2016</td> </tr> <tr> <td>2</td> <td>15</td> <td>SAIDA</td> <td>48</td> <td>12</td> <td>36</td> <td>06/10/2016</td> </tr> </table>
este tipo de modelagem segue as boas práticas de modelagem de dados? fere alguma regra de modelagem ou pode me trazer problemas? é comum modelar dessa forma, utilizando uma coluna tanto para um tipo de transação ou outra e outra coluna para especificar o tipo da transação?
Ricardo Pereira
Curtir tópico
+ 0Post mais votado
14/10/2016
Fere de varias maneiras a forma normal, alem de outros princípios de modelagem em banco relacional. E ainda gera um problema de logica.
Primeiro q não eh possível criar uma chave estrangeira que relacione um campo com duas tabelas simultaneamente. Acredito eu q esse campo chave eh só nominal, ou seja, não tem realmente uma restrição criada na tabela e um índice associado a ela o que faz a busca por estoque ser lenta, e calcular estoque eh algo q precisamos calcular quase instantaneamente.
Segundo, esta criando redundância de dados. Se a compra for excluída e a movimentação não for, o estoque estará errado.
Mais um, você esta criando uma brecha para gerar relatórios de vários lugares diferentes. Um vai gerar a partir das movimentações, e outro pode acabar gerando a partir das compras. Assim fica duas fontes diferentes para coletar dados.
Sugiro basear-se tudo nas duas tabelas, construa uma view para juntar as duas tabelas. E questões de estoque use a view para consultar.
Espero ter sido util. Caso tenha sido, de um joinha para eu saber.
Hélio Devmedia
Gostei + 1
Mais Posts
06/10/2016
Luiz Santos
Não existe uma resposta certa ou errada nesse caso.
Temos que entender o processo para ver se está sendo contemplado ou não.
Normalmente um processo de estoque funciona como uma conta corrente, com entradas (depósitos) e saídas (saques) de material(ais).
Grande abraço
Gostei + 0
07/10/2016
Ricardo Pereira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)