1

私は医師のオフィスの予約システムをプログラミングしています。私は医者の毎週の可用性を保存する必要があります。このようなもの:-

        DoctorID | 10AM | 11AM |     12AM  | 1PM | 2PM |    3PM    | 4PM | 
        ------------------------------------------------------------------
 [MON]  5477J    |  1   |  0   | AppointID |   1 |   1 | AppointID | 0   |
        ------------------------------------------------------------------
 [TUE]  5477J    |  0   |  1   | AppointID |   1 |   1 | AppointID | 0   | 
        ------------------------------------------------------------------

タイムスロットを保存しているのでnumeric 1 implies **avaialble** 0 implies **will not be in office**、予約されている予定がある場合、タイムスロットはに置き換えられAppointmentIDます。

在庫状況は毎日異なります。私の質問は、毎日の空き状況を保存するにはどうすればよいですか?毎週のスケジュールごとに5行ある必要があります。誰かが私にいくつかの簡単なスキーマを教えてもらえますか、それともこれを行うためのより良い方法がありますか?

4

1 に答える 1

4

私が過去に使用したモデルの1つは、次のようなものです。

TABLE [AppointmentBlock]
  - [DoctorID] INT
  - [StartTime] DATETIME
  - [EndTime] DATETIME
  - [IsAvailable] BIT
  - [IsRecurring] BIT
  - [AppointmentID] INT

の場合[IsRecurring] = 1、これは毎週同じ時刻に繰り返されるブロックを表し、開始/終了時刻は週の開始から計算されたオフセットであると想定する必要があります。

の場合[IsRecurring] = 0、これは1回限りの発生であり、開始/終了時間は絶対です。

したがって、医師のスケジュールの各ブロックは、1時間ごとに正確に当てはまらない場合でも、考慮されます。オーバーラップが作成されないようにするために、いくつかの厳密なビジネスロジックをこの上に階層化する必要があります(何らかの理由でこれを許可したい場合を除く)。

このモデルに例を当てはめると、次のようになります。

DoctorID | Start    | End      | IsAvailable | IsRecurring | AppointmentId | 
----------------------------------------------------------------------------
5477J    | 10AM Mon | 11AM Mon |           1 |           1 |          NULL |
5477J    | 11AM Mon | 12PM Mon |           0 |           1 |          NULL |
5477J    | 12PM Mon |  1PM Mon |           0 |           1 |     AppointID |
5477J    |  1PM Mon |  3PM Mon |           1 |           1 |          NULL |
5477J    |  3PM Mon |  4PM Mon |           0 |           1 |     AppointID |
5477J    |  4PM Mon |  5PM Mon |           0 |           1 |          NULL |
5477J    | 10AM Tue | 11AM Tue |           0 |           1 |          NULL |
5477J    | 11AM Tue | 12PM Tue |           1 |           1 |          NULL |
5477J    | 12PM Tue |  1PM Tue |           0 |           1 |     AppointID |
5477J    |  1PM Tue |  3PM Tue |           1 |           1 |          NULL |
5477J    |  3PM Tue |  4PM Tue |           0 |           1 |     AppointID |
5477J    |  4PM Tue |  5PM Tue |           0 |           1 |          NULL |
于 2013-02-19T00:23:26.880 に答える