2017-04-20 19 views
0

私のweb-appには、親とベビーシッターがいます。
Babysittersは、可用性テーブルに格納される作業時間(時間間隔)を宣言します。
親は時間間隔で自分のニーズを表現します(現時点では保存する必要はありません)。
は、だから私はこのように私の可用性テーブルをデザイン:あなたはWEEK_DAY = 0(月曜日)のために見ることができるように利用可能時間(時間間隔)テーブルのデータベース設計

+------------+---------------------+------+-----+---------+-------+ 
| Field  | Type    | Null | Key | Default | Extra | 
+------------+---------------------+------+-----+---------+-------+ 
| user_id | bigint(20) unsigned | NO | MUL | NULL |  | 
| week_day | tinyint(1)   | NO |  | NULL |  | 
| hour_start | varchar(10)   | NO |  | NULL |  | 
| hour_end | varchar(10)   | NO |  | NULL |  | 
+------------+---------------------+------+-----+---------+-------+ 

とデータ例が

+---------+----------+------------+------------+ 
| user_id | week_day | hour_start | hour_end | 
+---------+----------+------------+------------+ 
|  10 |  0 | 08:00 a.m. | 10:00 a.m | 
|  10 |  0 | 02:00 p.m. | 04:00 p.m. | 
|  10 |  1 | 10:00 p.m. | 11:00 p.m. | 
|  10 |  2 | 09:00 a.m. | 12:00 a.m. | 
|  10 |  3 | 03:00 p.m. | 05:00 p.m. | 
|  10 |  4 | 10:00 a.m. | 12:00 a.m. | 
|  10 |  5 | 12:30 a.m. | 02:00 p.m. | 
|  10 |  6 | 12:30 a.m. | 02:00 p.m. | 
+---------+----------+------------+------------+ 

あるベビーシッターは、2つのタイムスロットのために利用可能です。
私の質問は:
1)この情報を保存する良い方法はありますか?
2)hour_startの場合はvar_char(10)、hour_end列の場合は正しい形式ですか?
3)私はIDのプライマリ列を追加するといくつかの利点があります(これは私がこれまでクエリとは思わない)?
4)それは私がシリアル化された配列内の列WEEK_DAYhour_starthour_endのためのすべてのデータを保存する場合は良いですか?

+0

time_startとhour_endは、タイムスタンプデータ型または浮動小数点数である必要があります。 hour_startとhour_endは、真夜中から数秒または数分で整数にすることもできます。祝日によっては1日目が日曜日、日曜日が7日目になる可能性があります。 – Shiping

+0

はい。いいえ。いいえ。 – Strawberry

+0

MUL? Eh ???????? – Strawberry

答えて

0

ご質問:

  1. この情報を格納するための良い方法はありますか?
  2. は、hour_startとhour_endカラムのvar_char(10)は正しいフォーマットですか?
  3. IDのプライマリ列を追加するといくつかのメリットがあります(これは私が今までクエリしていないと思います)。
  4. 列week_day、hour_start、hour_endのすべてのデータをシリアル化された配列に格納する方が良いでしょうか?

回答:

  1. はい。時間開始と時間終了はTIMESTAMPとすることができます。あなたは、日付部分を選択し、それぞれの日付部分を使用して日付部分を無視します。また、INTとして分単位で保存することもできます。 1amは60、2amは120などとなります。
  2. いいえ、日付の時刻と比較する必要がある場合は、複雑になる可能性があります。時刻が24時間形式(午前/午後)で保存されていても、それから日時と比較して文字列比較を行っていれば動作します。
  3. 絶対に!エディタをビルドする必要がある場合は、編集中の行と保存時に更新する行を指定することができます。
  4. いいえ、考えられません。それは実際にアプリケーションでどのように使用されているかによって異なります。値を含むSQLクエリを作成する必要がある場合(つまり、2つの日付時刻の間に利用可能なすべてのベビーシッターをリストする)、それは良い考えではありません。