Se você tiver que usar ano e trimestre separados em vez de uma data (já que parece ter requisitos específicos de relatório), eu usaria um
tinyint
para trimestre e smallint
por ano e armazená-los em PAYMENT
própria mesa. Eu não iria armazená-lo em uma tabela diferente. Isso é ruim porque:
- Você precisa ter certeza de que produziu anos/trimestres suficientes
- Você precisa participar e usar uma chave estrangeira
Se você armazenar os dados com o registro, ajudará o desempenho nas leituras. Sua mesa pode ser pequena, mas é sempre bom ter em mente o desempenho.
POR QUE
Vamos imaginar que você precisa obter
Nesse caso, você precisaria de um índice de cobertura em todos os itens e ainda não ajuda, pois sua consulta é para trimestre específico e não para trimestre. Ter os dados na tabela, no entanto, ajudará com um plano de execução mais leve.