0

这是一个设计决策,我真的想要一些建议。我正在尝试记录员工的员工休息时间。此外,员工可能会在任何一天休息很多次。我应该采用什么策略?

我最初的想法是一名员工可能需要多次休息,而一名员工可能需要一次休息。一对多。

但是,(理论上)员工也有可能多次休息,而许多员工也可以休息一次 - 多对多。例如,John 和 Fred 在中午 12 点休息,然后在下午 1 点返回。

尽管我倾向于选择一对多,但我们开始分道扬镳。例如,约翰在下午 12 点休息,弗雷德在 12 点离开,他们都在不同的时间段返回,比如下午 1 点和 1 点 3 点。

你能为这种类型的场景提供一些好的数据库设计实践吗?下面图片中的想法:

多对多 一对多

4

2 回答 2

0

我会推荐一对多的方法。一旦您在数据库中获得数据,您就可以分析它们并找出谁与谁休息。

此外,由于您可能有穿孔卡片或类似的东西来自动化整个过程,所以一对多是您想要的方式。

于 2013-08-09T09:45:42.070 回答
0

去一对多。确实

您可以添加一个“标准休息”​​表,您可以在其中存储标准值,例如“12 到 1”作为午休时间。当一名员工(或一组员工)使用这些“标准休息时间”之一时,相应的“休息时间”行将添加到“休息时间”表中。

最终,在一个更复杂的模型中,这个“标准休息”​​表与一个“默认时间表”表相关联,例如,办公室员工从“午休”中受益。

您的表格可能如下所示:

Tbl_Break:
    id_Break (primary key)
    id_Employee (not null)
    breakStartTime (not null)
    breakEndTime (not null)        
    id_StandardBreak (nullable)

Tbl_StandardBreak:
    id_StandardBreak (primary key)
    standardBreakStartTime (not null)
    standardBreakEndTime (not null)
    standardBreakDescription (not null)
    id_Schedule (not null)

在此配置中,您将管理员工和休息之间的一对多关系,或者管理员工和默认休息之间更复杂的多对多关系,这取决于字段 Tbl_Break.id_StandardBreak 的值是否为空。

于 2013-08-09T09:44:10.590 回答