Nic*_*rca 1 sql database-design
这是一个标准化的事情,但我希望我必须掌握一周中的日期信息.用户将选择每一天并设置开始时间和结束时间.我需要将此信息存储在数据库中.我可以简单地在表中添加14个字段,它可以工作(MondayStart,MondayFinish,TuesdayStart等).这似乎没有
不要将数据库设计为与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列.