使用smalldatetime或int在数据库中存储一个月

Chr*_*cia 0 sql database database-design

我目前正在为我们的组织制定月度清单系统.用户可以登录,选择一个月,然后提交与该月相关的是/否问题列表,以用于我们组织的目的.有些问题在超过1个月的清单中使用,因此我正在创建一个交叉表来促进这种一对多的关系.字段是ChecklistMonth和ChecklistQuestionID.

但是,我不确定如何存储ChecklistMonth字段.如果我使用smalldatetime,它似乎有点矫枉过正,因为我只对这个月感兴趣.它在未来几年看起来也会有点过时.另一方面,创建一个包含MonthID和Month字段的表似乎有点浪费,以便仅识别月份.

大家对此有什么看法?提前致谢.

Tom*_*m H 5

如果是一个月而不考虑年份,我会使用TINYINT.我不认为你需要一个单独的查询表,因为月份的数量是非常独特和普遍的(没有进入中国或犹太日历等...).

如果你使用任何类型的日期时间,那么你总是需要记住它周围的确切规则.你是把它存放在这个月的第一天吗?这个月中旬?哪一年?另外,这是在DB中使用的额外的,不必要的空间.

编辑:我以为我已经将此添加到我的回复中,但显然不是......记得在列中添加一个检查约束:

CHECK (month BETWEEN 1 AND 12)
Run Code Online (Sandbox Code Playgroud)