quando tenho uma requisição(saída), eu seto a chave estrangeira requisicao_id e mantenho compra_id nula,assim também ficaria fácil saber se foi compra ou requisição, é só verificar qual campo está nulo, mas essa abordagem me preocupa em relação à integridade, performance, espaço em disco, não sei se um monte de campo null teria um impacto negativo em meu banco.
MOVIMENTO
MOVIMENTO_ID COMPRA_ID REQUISICAO_ID ITEM QUANTIDADE PRECO DATA
Na abordagem 2, eu teria um campo flag indicando se é entrada(E) ou saída (S) e guardaria o id da compra ou da requisição no campo COM_REQ_ID, esta abordagem fere alguma regra de modelagem?
MOVIMENTO
MOVIMENTO_ID COM_REQ_ID REQUISICAO_ID ITEMQUANTIDADE PRECOTIPO_MOVIMENTODATA
Qual das duas abordagens é melhor? existe outra maneira melhor de fazer?