设置时间表的正确方法是什么



我正在尝试使用以下表构建一个约会应用程序:DoctorsSchedules。我很难弄清楚设计Schedules表最方便的方法是什么。每个doctor都有自己的schedule,所以我想我为daydoctor的工作以及startend的日期创建一个字段,这样我就可以在这个范围内进行数学运算。

如果医生正在度假或参加会议,我不会在申请中考虑。但我确实需要设定一个在这个范围内的午餐时间。

此外,如果他一周只工作三天,我该如何处理他休息的日子?

  create_table "schedules", :force => true do |t|
    t.string   "day"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
    t.integer  "doctor_id"
    t.time     "start_time"
    t.time     "end_time"
  end

我会在两个表中都有每个医生的ID,并有天数的数值。

结构应如下所示;

Doctors Table
---------------------------------------------
Doctor_ID | Doctor_name | Practice | etc
---------------------------------------------
Schedules
-----------------------------------------------------------
Day_ID    | Time (hour,minute,second) | Doctor_ID | Istaken
-----------------------------------------------------------

Istake将是一个bool变量,它会告诉你一天中的时间是否被占用。你需要做的是,如果你不想每次都添加新的变量,你需要为每天和每个医生创建24个表格。

或者你能做的是;

将24小时添加为列,如hourone|hour2等,并将其列为0或1。通过这种方式,您将免于每次添加新记录。

如果您以这种方式创建它,系统将更容易搜索表,因为您将在Doctor_ID 上加入整数值

首先,您需要决定时间表中最小的部分。常识是"小时",或者你可以随心所欲地使用"一天"或"半天"。一旦定义,就很难改变。

时间表将包含以下主要元素:

id#唯一id

start_time#这一点非常重要。它显示每个工作小时的开始时间,以便从日历中查询。最好使用十六进制数据时间戳。

doctor_id#占用这一小时的医生。如果未被占用,则为空白。注意,你可能有两个医生占用同一个小时。因此,start_timedoctor_id都不是唯一的,但它们结合在一起是唯一的。

patient_id#订购这一小时的患者。

description#本说明

现在是用例:

在您的日历中,对于给定的一天,您会显示8个小时的可用时间。查询数据库以查找是否有时间表在每个小时的开始时间,如果存在,则标记此小时并链接到时间表。

请注意,在这种情况下,患者可能会连续几个小时要求医生诊治。例如3小时,在这种情况下,您需要向时间表添加三条记录,只有idstart_time有差异。

也可能有两名医生在同一时间安排的情况。它很容易显示为上述方案。

这种安排应该奏效。希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新