我需要设计一个表来存储每周出勤率
表格格式为:
今天'日期, 注意(如果每天缺席) 周一Y / N. 周二Y / N. 周三Y / N. 周四Y / N. Fri Y / N
如何设计表格来存储每周记录的信息?
它应该是1个列有列的表 星期一(星期一),星期一(varchar),星期二,星期二等等到星期五?
最好的方法是什么? TIA
答案 0 :(得分:1)
为什么不将实际日期与标志和注释一起存储,而不是为一周中的每一天存储位?像这样:
CREATE TABLE Attendance(AttendanceID int primary key not null identity(1,1), StudentId int not null /* foreign key? */, AttendanceDate date not null, PresenceFlag tinyint not null default(1), Note varchar(max) null);
因此,不是使用单个日期和五天标志,这会使您获得实际日期的逻辑变得复杂,而是存储一周中每一天的实际日期。这将简化许多查询逻辑。
请注意,我使用的是tinyint而不是bit。这是为了允许您执行算术运算。 SUM(PresenceFlag)将为您提供一段时间的总出勤率。您不能使用位数据类型执行此操作。您可以使用CONSTRAINT来确保只允许1和0。
您可以使用DATENAME(工作日,出勤日期)轻松获取一周中的某一天。