Boa noite, estou em dúvidas como modelar uma seguinte situação. Tenho 5 tabelas: licitacao, adesao,contratacao_direta, contrato e sub_contrato, cada qual com suas colunas, por exemplo:
licitacao:
licitacao_id, numero,ano,objeto,valor,data_sessao,etc...
adesao:
adesao_id,numero,
ano,
objeto,
licitacao_id,
data_assinatura,
inicio_vigencia,
fim_vigencia,etc..
contratacao_direta:
contrtacao_direta_id,
valor,
data_contratacao,
fornecedor_id,
etc...
contrato:
contrato_id,
objeto,
valor,
data_assinatura,
fornecedor_id,
etc...
sub_contrato:
sub_contrato_id,
contrato_id,
valor,
data_assinatura,
etc...
essas tabelas são de um sistema de acompanhamento de contratações, surgiu agora a necessidade de criar um checklist para apontar os vícios destes procedimentos, eu pensei em criar a tabela checklist e checklist_itens que serão os itens a serem julgados, baseado no tipo de checklist, mas o check list precisa referenciar de qual procedimento ele pertence e é ai que tenho bastante dúvidas.
até pensei em algumas soluções:
1- criar um tabelão checklist: (checklist_id,situacao,licitacao_id,adesao_id,contrato_id,subcontrato_id) bem feio, desnormalizado e com a linha cheia de null
2- criar uma tabela para cada checklist checklist_licitacao,checklist_contrato,checklist_adesao,etc... fica normalizado, mas com muita redundancia
3-essa aqui até que achei interessante, mas não sei se fere alguma normalização de banco de dados, se é comum ou mesmo se é correto,eu teria uma tabela de checklist, um identificador de tipo de checklist e uma coluna para guardar um id: (checklist_id,situacao,tipo_checklist,id_procedimento), então para recuperar o procedimento original eu recuperaria pelo identificador do tipo checklist_id=1,situacao='CUMPRE',tipo_checklist='LICITACAO',id_procedimento='1', assim eu saberia que essa checklist é da licitação de id =1, e assim para os outros procedimentos, isso é correto de fazer?
Bom pessoal, estou bem perdido, qual a melhor maneira de modelar esse tipo de situação?