在数据库中构建星期几的最佳方法是什么?

Nic*_*rca 1 sql database-design

这是一个标准化的事情,但我希望我必须掌握一周中的日期信息.用户将选择每一天并设置开始时间和结束时间.我需要将此信息存储在数据库中.我可以简单地在表中添加14个字段,它可以工作(MondayStart,MondayFinish,TuesdayStart等).这似乎没有

Ste*_*age 6

不要将数据库设计为与UI匹配.

我保持系统工作的时间可以为一周中的每一天输入数据.这并不意味着你以这种方式存储它.

您需要一个用户表和一个表

User_T
  User_ID

Time_log_T
   User_ID
   Start_dt (datetime)
   End_dt (Datetime)
Run Code Online (Sandbox Code Playgroud)

一切都可以从中衍生出来.

如果您想每天办理一次登记,请在User_ID上创建一个唯一约束TRUNC(start_DT).这将处理包裹天的第三班.RDBMS无法表示给定User_ID的下一个start_dt对于该用户来说是> MAX(End_DT)...您必须在代码中执行此操作.当然,如果您允许输入或更正前几天的记录,则需要在更复杂的样式中验证它们是否不重叠.

想想你在这些表中抛出的所有查询; 这将在99%的时间内击败14列.