Ola a todos estou com uma dúvida na modelagem do meu banco de dados, vcs acham que eu ter na minha tabela dois campos, sendo que apenas um deve ser preenchido de acordo com o valor de outro campo e o outro ficar nulo é gambiarra? vou explicar melhor:
Estou em um projeto que tem como objetivo lançar as movimentações das linhas de onibus nos terminais, essa tabela de movimentação foi desenhada assim:
movimentacao_id; empresa_linha_id; quantidade_passageiros; horario; tipo_movimentação
onde é colocado um flag em tipo_movimentacao : (E)Embarque,(D)Desembarque,(N)Não realizada
e emquantidade_passageiros coloco a quantidade de passageiros do embarque ou desembarque.Temos a necessidade de gerar diversos relatórios de embarques e desembarques por linha,mes,ano,empresa… do jeito que essa tabela está eu não sei se é possivel agrupar embarques e desembarques juntos no mesmo select, emtão eu criei uma tabela chamada movimentacao_diaria
que consolida a movimentacao por dia, de acordo com qualquer operação feita na tabela de movimentação.A tabela movimentacao_diaria está assim:
mov_diaria_id; empresa_linha; qtd_embarques; qtd_desembarques,data
isso tá funcionando mas vou ter muitos registros no banco ,tanto em movimentações quanto em movimentações diarias, se eu tenho 400 empresa_linha(tabela intermedia entre empresa e linha) cadastradas * 365 dias = 146000 registros na tabela de movimentação_diaria por ano.
eu poderia reduzir bastante esse número de registros se utilizasse a tabela de movimentacao dessa forma:
movim_id; empresa_linha_id;qtd_embarque;qtd_desembarque;horario;tipo_movimentação
ai eu conseguiria agrupar os dados mas surge a situação que ou o campo qtd_embarques ou qtd_desembarques vai ficar sempre nulo dependendo do que estiver em tipo_movimentação.
ter esse tipo de modelagem deixando uma coluna nula é comum? é uma má prática? oque vcs me recomendam fazer?