0

次のテーブルを使用して予定アプリケーションを作成しようとしています:DoctorsSchedules。テーブルをデザインするのに最も便利な方法を見つけるのに苦労していSchedulesます。それぞれdoctorに独自のものがあるので、その範囲内で数学演算を実行できるように、sの作業と日付のscheduleフィールドを作成すると思いました。daydoctorstartend

医者が休暇中か会議中かを申請書で検討するつもりはありません。しかし、私は昼食のためにその範囲の時間を設定する必要があります。

また、彼が週に3日しか働いていない場合、彼が休んでいる日をどのように処理すればよいですか?

  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#一意のID

start_time#これは非常に重要です。カレンダーからクエリを実行するための各稼働時間の開始時刻が表示されます。16進データタイムスタンプを使用することをお勧めします。

doctor_id#この時間を占める医者。占有されていない場合は、空白です。同じ時間に2人の医師がいる可能性があることに注意してください。したがって、またはは一意ではありstart_timeませdoctor_idんが、一緒に組み合わせると一意になります。

patient_id#この時間を注文した患者。

description#これの説明

次に、ユースケースを示します。

カレンダーでは、特定の日に8時間利用可能であることが示されます。dbにクエリを実行して、各時間の開始時刻にスケジュールがあるかどうかを確認します。存在する場合は、この時間をマークしてスケジュールにリンクします。

患者が数時間連続して医師を求めている場合があることに注意してください。たとえば、3時間の場合、スケジュールテーブルに3つのレコードを追加する必要がありますが、とだけが異なりidますstart_time

また、2人の医師が同じ時間に予定している場合もあります。上記のスキームのように表示するのは簡単です。

アレンジメントは機能するはずです。それが役に立てば幸い。

于 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は、1日の時間が取得されたかどうかを示すbool変数になります。毎回新しい変数を追加したくない場合は、毎日、および医師ごとに24個のテーブルを作成する必要があります。

またはあなたができることはです。

hourone|などの列として24時間を追加します。hourtwoなどを指定し、0または1としてリストします。これにより、毎回新しいレコードを追加する必要がなくなります。

この方法で作成すると、Doctor_IDで整数値を結合するため、システムでテーブルを検索しやすくなります。

于 2013-01-20T04:03:00.570 に答える