I’m currently developing a monthly checklist system for our organization. A user may login, select a month, then submit a list of yes/no questions relevant to that month for our organization’s purposes. Some of the questions are used in more than 1 month’s checklist, so I’m creating an intersection table to facilitate this one-to-many relationship. The fields are ChecklistMonth and ChecklistQuestionID.
I’m unsure of how to store the ChecklistMonth field, however. If I use a smalldatetime, it seems a bit overkill, as I am only interested in the month. It will also look a bit dated in future years. On the other hand, it seems a bit wasteful to create a table with the fields MonthID and Month in order to identify only the month.
What is everyone’s opinion on this? Thanks in advance.
If it is a month without regard to year, I would just use a TINYINT. I don’t think that you need a separate lookup table since the numbers of the months are pretty distinct and universal (without getting into Chinese or Jewish calendars, etc…).
If you use any sort of datetime then you always need to remember the exact rules around it. Are you storing it as the first day of the month? Middle day of the month? What year? Plus, it’s extra, unnecessary room being used in the DB.
EDIT: I thought that I had already added this to my response, but apparently not… remember to add a check constraint to the column: