3

我需要为我工作中的不同地点创建一个调度程序。我需要为每个特定位置从上午 8 点到下午 5 点安排 15 分钟的时间段。我正试图围绕所需的数据库设计。

一些参数:

  1. 时间表需要至少提前两周。
  2. 与其他地点相比,每个地点都有一个独特的时间表。
  3. 时间表必须以 15 分钟为单位。
  4. 每个位置都有不同的块何时满的标准。例如,一个位置可以每十五分钟为 3 位客户提供服务,因此他们的街区将分成三个街区。另一个位置可以每 15 分钟为 5 位客户提供服务,因此他们的街区将在预定 5 人后满员。

每次我草拟这个我都违反了一些数据库规范化规则。主要目标是能够查询特定位置的开放“插槽”并显示它们。任何人都知道我应该如何构建我的表,这样我刚才描述的查询就不必比必要的更努力了吗?

4

2 回答 2

6

您将需要每个位置的设置表,其中包含诸如每 15 分钟可以预订多少客户、开放和关闭时间等信息。您实际上将为每个具有开始和结束时间的“槽”创建一个条目表。

您的其余参数必须在应用层处理,例如计算其他位置的事件数量并查看它们是否已满。

事件
-----
ID
日期开始
日期结束
location_id

地点
--------
ID
姓名
最大客户
开始时间
时间结束

我建议您阅读Mozilla Calendar SQL Schema。它为形成一个坚实的日程安排日历提供了良好的基础。

于 2012-09-26T17:30:25.443 回答
0

在我看来,您至少需要三张桌子。我的建议:

SCHEDULES - 存储实际的时间表。将需要一个id(IE:auto_increment),location_id(参考“LOCATIONS”表)time_start,,time_end

位置 - 存储位置。将需要id(IE: auto_increment) 和其他适用信息,例如实际的location.

RULES - 这将引用 LOCATION 表。您将需要提供您想要存储的所需信息(即:max_occupants)。这将至少需要一个id字段和location_id字段。

现在您有三个表来存储所需的数据,其他两个表引用了 LOCATIONS。您始终可以将“规则”添加到 LOCATIONS 表中,但是如果您决定有其他限制等,则将其设为自己的表可以在将来为您提供灵活性。

于 2012-09-26T17:34:20.913 回答