システムはそれ自体です。講師は、彼らの空き状況(月曜日から日曜日)とその日の利用可能な時間枠(0700から1400)(つまり、午前7時から午後2時)を提供します。
私は、この情報を保存して検索し、利用可能な講師を見つけるための最良の方法を見つけようとしています。検索は、毎日のシステム(つまり、曜日-月、火、水など)でのみ実行する必要があります。
私の計画したインフラストラクチャ:
//Tutor Availability
---------------------------------------------------------------------------
tutorID | monday | tuesday | wednesday | thursday | friday |
---------------------------------------------------------------------------
27 | 0700-1200 | NULL | 1400-1800 | NULL | NULL |
---------------------------------------------------------------------------
35 | NULL | 1400-1600 | NULL | NULL | 1100-1900 |
//Scheduled tutor sessions
------------------------------------
tutorID | day | time |
------------------------------------
27 | monday | 0700-0900 |
------------------------------------
35 | friday | 1300-1500 |
クエリ:SELECT tutorid FROM tutoravailability WHERE 'monday'=
... 0900-1100の間に利用可能であり、スケジュールされたチューターセッションにはありません。
私は、MySQLでこれらの時間間隔を検索(および保存)する方法についてずっと探し続けてきました。これは、1日24時間の時間間隔を保存するための最良の方法ですか?これらの間隔の間を検索することさえ可能でしょうか?私は間違った方法でこれにアプローチしていますか?任意の洞察をいただければ幸いです。
更新されたインフラストラクチャ
//Tutor Availability
-----------------------------------------------------
tutorID | day | start_time | end_time | PK |
-----------------------------------------------------
27 | mon | 0700 | 1200 | 1 |
-----------------------------------------------------
27 | fri | 1400 | 1800 | 2 |
-----------------------------------------------------
35 | tue | 1100 | 1600 | 3 |
//Scheduled tutor sessions
--------------------------------------------------------
tutorID | day | start_time | end_time | PK |
--------------------------------------------------------
27 | mon | 0800 | 1000 | 1 |
--------------------------------------------------------
27 | fri | 1600 | 1800 | 2 |
したがって、このシステムを使用すると、利用可能な時間を検索するのがはるかに簡単になります。しかし、重複がないことを確認するために、スケジュールされたレッスンと可用性を比較する方法については、まだ途方に暮れています。
SELECT tutorID
FROM tutoravailability WHERE day = 'fri'
AND start_time <= '1400'
AND end_time >= '1530'
Scheduled tutor sessions
予約の重複を避けるために、このクエリをテーブルと比較する方法がわかりません。
最終更新
スケジュールされたチューターセッションと重複しないようにするために、MySQLBETWEEN
句を使用して開始時刻と終了時刻を検索します。