调度数据库设计

时间:2012-09-26 17:20:52

标签: mysql database-design scheduling normalization

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

一些参数:

  1. 时间表至少需要两周时间。
  2. 与其他位置相比,每个位置都有一个独特的时间表。
  3. 时间表必须在15分钟内完成。
  4. 每个位置对于块已满时都有不同的标准。例如,一个位置可以每15分钟为3个客户服务,因此他们的块将是三分之一。另一个位置可以每15分钟为5位客户提供服务,因此在预定5人后,他们的积木将会满员。
  5. 每当我勾勒出这一点时,我都违反了一些数据库规范化规则。主要目标是能够查询特定位置以查看打开的“插槽”并显示它们。任何人都知道我应该如何构建我的表,以便我刚才描述的查询不必更加努力地工作?

2 个答案:

答案 0 :(得分:6)

每个位置都需要一个设置表,其中包含每15分钟可以预订的客户数量,打开和关闭时间等信息。实际上,您可以为每个“插槽”创建一个条目表。有开始和结束时间。

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

event
-----
id
date_start
date_end
location_id

location
--------
id
name
max_customers
start_time
end_time

我建议您阅读Mozilla Calendar SQL Schema。它为形成可靠的调度日历奠定了良好的基础。

答案 1 :(得分:0)

听起来你需要至少三张桌子。我的建议是:

计划 - 存储实际计划。需要id(IE:auto_increment),location_id(对“LOCATIONS”表的引用),time_starttime_end

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

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

现在您有三个表来存储所需的数据,LOCATIONS被其他两个引用。您可以随时在LOCATIONS表中添加“规则”,但如果您确定有其他限制等,那么将其设置为自己的表将为您提供灵活性。