2013-01-20 134 views
0

我試圖用下表建立一個預約申請:Doctors,Schedules。我很難弄清楚設計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 
+0

謝謝sawa和對不起我的英文不好 – evanx

回答

1

我會爲每個醫生在這兩個表中的ID和具有天數的數值。

結構應該如下;

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

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

Istaken將會是一個布爾變量,它會告訴你一天中的小時是否被採用。你需要做的是,如果你不想每次增加新的變量,你需要爲每一天和每個醫生創建24個表。

或者你可以做的是;

將24小時添加爲列,如hourone | hourtwo等等,並將它們列爲0或1.這樣,每次都會保存添加新記錄。

如果您創建這種方式,它會更容易在系統上通過表進行搜索,因爲你將在Doctor_ID

+0

我同意Day_id,但只有一個字段的預約時間?這是否意味着我必須爲醫生可以工作的每個約會創建記錄? – evanx

+0

您可以爲它們全部創建24小時,然後添加另一個布爾列以確定小時是否已滿。 – Taicho

+0

對不起,我不明白 – evanx

1

加盟整數值首先,你需要決定在調度中最小的一塊。常識是「小時」,或者你可以使用「日」或「半日」。一旦定義,就很難改變。

調度表將有以下主要內容:

id #the唯一的ID

start_time#這是非常重要的。它提供了從日曆查詢每個工作小時的開始時間。最好使用十六進制數據時間戳。

doctor_id#醫生誰佔據了這個小時。如果沒有佔用,則爲空。請注意,您可能有兩名醫生佔用同一小時。所以,start_timedoctor_id不是唯一的,但它們是獨一無二的。

patient_id#患者誰訂購了這個小時。

description

#Description現在到了用例:

在你的日曆,對於給定的一天,你顯示可用8小時。您查詢數據庫以查找是否有任何計劃在每個小時的開始時間,如果存在,您將標記此小時並鏈接到計劃。

請注意,病人可能會連續幾小時請求醫生。例如3小時,在這種情況下,您需要添加三個記錄來安排表格,差別僅在idstart_time之間。

也可能有兩個醫生安排在同一個小時的情況。按照上述方案顯示很容易。

應該工作。希望能幫助到你。

相關問題