0

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

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

另外,如果他每周只工作三天,我应该如何处理他休假的日子?

  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
4

2 回答 2

1

首先,您需要确定时间表中最小的部分。常识是“小时”,也可以随意使用“天”或“半天”。一旦定义,就很难改变。

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

id#唯一标识

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

doctor_id#占用这个时间的医生。如果没有被占用,它是空白的。请注意,您可能有两个医生占用同一个小时。所以,或者start_time不是doctor_id唯一的,但是结合在一起它们是唯一的。

patient_id#这个小时下单的病人。

description#这个描述

现在是用例:

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

请注意,患者可能会要求医生连续几个小时。例如 3 小时,在这种情况下,您需要将 3 条记录添加到计划表中,差异仅在id和上start_time

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

安排应该奏效。希望能帮助到你。

于 2013-01-20T05:30:51.263 回答
1

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

结构应如下所示;

Doctors Table
---------------------------------------------
Doctor_ID | Doctor_name | Practice | etc
---------------------------------------------

Schedules
-----------------------------------------------------------
Day_ID    | Time (hour,minute,second) | Doctor_ID | Istaken
-----------------------------------------------------------

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

或者你能做的是;

将 24 小时添加为列,例如 hourone | hourtwo 等并将它们列为 0 或 1。这样您就可以避免每次添加新记录。

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

于 2013-01-20T04:03:00.570 回答