3

ユーザーが教えることができる日時を入力する必要があるサイトがあります。たとえば、教授は月曜日の午後1時から午後2時まで、火曜日の午後2時から午後4時まで入力できます。

現在、シリアル化を使用して、MySQLテーブルの「availability」という列にデータを格納しています。月曜日+1300+1400と火曜日+1400+ 1500を取り、これら2つをシリアル化します。次に、explode()を使用して、月曜日、1300、1400などを抽出します。

これを行うにはもっと良い方法があるはずだと思います。生徒が教師の空き状況を確認するたびにこの情報を抽出する必要がありますが、この現在の方法はこれには効率的ではないと思います。

より良い解決策を教えていただけますか?

4

1 に答える 1

2

現在のソリューションでは、DB 自体の可用性に基づいて検索することはできません。シリアル化されたデータをフェッチし、逆シリアル化してから検査する必要があり、これには非常にコストがかかります。

あなたがすべきことは、次のようなテーブルを設定することです:

User_id | Day | Start_Time | End_Time

ここで、user_id を持つユーザーが月曜日の午後 2 時から 3 時までと金曜日の午後 4 時から 5 時まで空いている場合、このテーブルに 2 つのエントリを追加します。

1  |  Mon  |  1400  |  1500
1  |  Fri  |  1600  |  1700

DB自体で簡単に検索、フィルタリング、ソートなどができるようになりました。

于 2012-12-05T01:04:29.967 に答える