【问题标题】:Database Design for Scheduling用于调度的数据库设计
【发布时间】:2012-09-18 09:29:37
【问题描述】:

我需要为我工作的不同地点创建一个日程安排程序。我需要为每个特定位置从上午 8 点到下午 5 点安排 15 分钟的时间段。我正在努力思考所需的数据库设计。

一些参数:

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

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

【问题讨论】:

    标签: mysql database-design scheduling normalization


    【解决方案1】:

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

    SCHEDULES - 存储实际的时间表。需要id(即:auto_increment)、location_id(参考“LOCATIONS”表)、time_starttime_end

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      事件
      -----
      ID
      日期开始
      日期结束
      location_id
      
      地点
      --------
      ID
      姓名
      最大客户
      开始时间
      时间结束
      

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

      【讨论】:

        猜你喜欢
        • 2012-08-18
        • 2012-08-19
        • 2021-05-26
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 2015-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多