Database 在关系数据库中表示工时/计划

Database 在关系数据库中表示工时/计划,database,relational-database,entity-relationship,schedule,Database,Relational Database,Entity Relationship,Schedule,我正在为临时工/兼职人员开发一个可搜索的数据库,我没有实施他们工作时间可用性的经验。我已经为员工、技能、代理和客户开发了模式。现在,我需要捕获员工每小时的可用性 系统应能够表示24/7小时计划的任意组合,即: 周一上午8-9点,周二凌晨1-5点,周三下午3-10点 周一至周五下午1-4点 星期六至星期日上午8时至下午6时 当然,偶尔也会有一些非全职员工,尽管我认为在employee表中会有一个全职布尔字段,并且只有当该员工是兼职员工时,才会参考此计划表/系统 对此的任何经验/指导/指导都将不

我正在为临时工/兼职人员开发一个可搜索的数据库,我没有实施他们工作时间可用性的经验。我已经为员工、技能、代理和客户开发了模式。现在,我需要捕获员工每小时的可用性

系统应能够表示24/7小时计划的任意组合,即:

  • 周一上午8-9点,周二凌晨1-5点,周三下午3-10点
  • 周一至周五下午1-4点
  • 星期六至星期日上午8时至下午6时
当然,偶尔也会有一些非全职员工,尽管我认为在employee表中会有一个全职布尔字段,并且只有当该员工是兼职员工时,才会参考此计划表/系统


对此的任何经验/指导/指导都将不胜感激。

我将通过以下专栏关注每个用户每天的可用性来为其建模:

a) 第(1-7)天,按照MySQL惯例,第1天是星期天,第7天是星期六

b) 开始时间-如果不可用,则开始时间可以为空

c) 结束时间-如果不可用,结束时间可以为空

d) 备注-关于当天可用性的任何备注

e) userid(显示其计划的用户的id)

f) 不可用-是/否


这意味着每个用户将有7条可用性记录。但是,在用户界面上,您可以进行调整,使数据从一天拷贝到另一天

为什么不在一个时间段的时间间隔和用户之间创建关联? 如果你知道,这是一个周期性的一周,你可以选择任何一周。 如果你知道,这是一个月的周期性,你可以选择任何给定的月份等等

StartAvailableDateTime1日期时间,
AvailableDateTime2日期时间,

UserID INT

谢谢,@ssmusoke,正在处理这个问题。
Day
是否为
INT
类型?“MySQL约定”到底是什么意思数据对于一周中的某一天有不同的约定,但是MySQL使用1作为星期天,7作为星期六,然而一些语言使用0作为星期天,6作为星期六。我建议您使用tinyint unsigned(也就是说它只能是+ve),从1到128,因为这将足以满足您的需要。Int增加到20亿,所以您不需要所有这些。aaiyt,我最后做的是添加一个额外的表
emplu Schedule
,它只包含
emplu ID
emplu Day
emplu Time
,所有字段都是未签名的,都作为复合主键<代码>雇员日将有值
1,2..7
emp\u时间
0,1..23
。员工可利用的任何一天的每小时都会有一行条目。最后,在
Employee
表中有一个布尔字段
FullTime
。谢谢,@ssmusokeA一个单独的时间栏没有考虑到,上午8点到9点,下午3点到10点等等,这就是为什么你需要一个开始和结束时间栏。这实际上是可能的:假设员工ID是
12
,周一上午8点到9点,下午3点到10点将
(12,2,8),(12,2,15),(12,2,16),(12,2,17),(12,2,18),(12,2,19),(12,2,20),(12,2,21)