0

私はtemps /パートタイマーのための検索可能なデータベースを開発しています。私はすでに従業員、スキル、代理店、顧客のスキーマを開発しています。今私は従業員の時間利用可能性を捕捉する必要があります。リレーショナルデータベースの作業時間/スケジュールを表す

システムは、24時間365日の時間ごとのスケジュールの任意の組み合わせを表すことができるはずすなわち:

  • モン8-9am、火の1-5am、水3-10pm。
  • 月〜金1-4pm;
  • Sat-Sun 8 am-6pm;私はフルタイムのブールフィールドになりますが、従業員テーブルに思っているものの

そしてもちろんは、フルタイム利用できるようになります時折外れ値があるでしょう、このスケジュール表/システムは、意志従業員がパートタイムの場合にのみ相談してください。

これに関する経験/指導/指示は非常に高く評価されます。

答えて

1

私は、次の列を持つユーザーごとにそれぞれの日のための利用可能性に着目し、それをモデルになります。

a)の1は日曜日で、7日には、(1-7)のMySQLの規則

次土曜日です

b)の開始時間 - 任意のノートその日の可用性

に -

d)の注意事項利用できない場合は、終了時刻nullにすることができます - 利用できません

c)の終了時間があれば、時間を開始すると、nullにすることができ

利用可能E)ユーザーID(スケジュール表示されているユーザのID)

F)ではない - はい/いいえ

これは、各ユーザが7つの可用性レコードを有することを意味します。しかし、ユーザーの顔では、日々のデータコピーを持つ調整を行うことができます

+0

おかげで、...指定した月などを選択します。 'Day'は' 'INT''型でしょうか?正確に「MySQLの規約」とは何ですか? :D –

+0

週の曜日には異なる規則がありますが、MySQLは日曜日に1を、土曜日に7を使用しますが、一部の言語では日曜日は0、土曜日は6を使用します。私はtinyint unsignedを使用することをお勧めします(つまり、+ veだけであることを意味します)。これは1〜128の間で行われ、必要に応じて十分です。 Intは最大20億円になるので、すべてが必要なわけではありません。 –

+0

aaiyt、私が最後にしたのは、フィールド 'Empl_ID'、' Empl_Day'、 'Empl_Time'だけを持つ余分なテーブル' Empl_Schedule'を追加することでした。 'Empl_Day'は' 1,2..7'と 'Empl_Time'0,1..23'の値を持ちます。従業員が利用可能な任意の日の1時間ごとに1つの行エントリが作成されます。最後に 'Employee'テーブルに' FullTime'というブール値フィールドがあります。ありがとう、@ssmusoke –

0

期間とユーザー間の関連付けを作成するだけではどうですか。 あなたが知っているなら、1週間の反復があり、あなたは任意の週を選択します。あなたが知っている場合 は、それが1ヶ月の再発だ、あなたはこれに取り組んで、@ssmusoke

StartAvailableDateTime1 DATETIME、
AvailableDateTime2 DATETIME、
ユーザーID INT

関連する問題