Si vous devez utiliser une année et un trimestre distincts au lieu d'une date (puisque vous semblez avoir des exigences de déclaration spécifiques), j'opterais pour un tinyint
pour trimestre et smallint
pour l'année et stockez-les dans le PAYMENT
tableau lui-même.
Je ne le stockerais pas dans une autre table. C'est mauvais car :
- Vous devez vous assurer que vous avez produit suffisamment d'années/de trimestres
- Vous devez joindre et utiliser une clé étrangère
Si vous stockez les données avec l'enregistrement, cela améliorera les performances lors des lectures. Votre table peut être petite, mais il est toujours bon de garder à l'esprit les performances.
POURQUOI
Imaginons que vous ayez besoin d'obtenir
Dans ce cas, vous auriez besoin d'un index de couverture sur tous les articles et n'aide toujours pas puisque votre requête concerne un trimestre spécifique et non un trimestre. Le fait d'avoir les données sur la table, cependant, aidera avec un plan d'exécution plus léger.