关系数据库设计,用于存储每周出勤率

时间:2016-11-08 22:21:40

标签: sql database relational

我需要设计一个表来存储每周出勤率

表格格式为:

今天'日期, 注意(如果每天缺席) 周一Y / N. 周二Y / N. 周三Y / N. 周四Y / N. Fri Y / N

如何设计表格来存储每周记录的信息?

它应该是1个列有列的表 星期一(星期一),星期一(varchar),星期二,星期二等等到星期五?

最好的方法是什么? TIA

1 个答案:

答案 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(工作日,出勤日期)轻松获取一周中的某一天。