0

非常にシンプルなスケジューリング アプリの作成

私はユーザーに、彼らが何曜日に働いているか、そして特定の日に朝、昼、夜のどれで働いているかを教えてほしいと頼んでいます

したがって、特定のユーザーのデータは、次のマトリックスのポイントの 1 つまたはすべてになる可能性があります。

        morning    lunch    evening
mon
tue
wed
thr
fri
sat
sun 

この情報をすばやく取得して、仕事に行く時間になったことをユーザーに警告できるようにする必要があります。私は多くのユーザーを持つでしょう。

特定の日付や時間は気にしません。1 日から 7 日までの個別の日と、各日内の 3 つのスロットだけです。確かに、可能な組み合わせはたくさんあります。

この情報をどのように保存するかを検討しています。そして、ビットマスクが適切/実行可能/「このようなものを使用する方法」であるかどうか疑問に思っていますか? これにどのようにアプローチしますか?

ありがとう!

4

4 に答える 4

3

ビットマスクは確実に機能しますが (7 日間 X 3 シフト = 21 ビットを採用)、これらに関する私の経験では、常に変更が必要です。つまり、夜勤が追加されるか、シフトが変更されます。

それを踏まえて、アプリにある程度の柔軟性を組み込むことをお勧めします。ビットマスクのアイデアを、ビットが表すものを定義するテーブルと組み合わせます。そうすれば、好きなように再定義および変更できます。シフトを追加する場合は、定義テーブルにレコードを追加して、各従業員のマスクを更新するだけです。

于 2011-11-17T22:41:38.290 に答える
1

ビットマスクを気にしないでください。今すぐ簡単なこと (おそらく正規化された DB スキーマなど) を行い、後で問題の測定を開始する場合にパフォーマンスを最適化します。

于 2011-11-17T23:18:08.643 に答える
1

2 番目の質問に答えるには: 何百万もの行がない限り、ビットマスクはパフォーマンス上の大きな利点にはならず (ネットワーク I/O がボトルネックになります)、最適化が時期尚早になる可能性があります。つまり、すべてのユーザー オプションを 1 つの 32 ビット整数に格納できます。

于 2011-11-17T22:42:10.427 に答える
0

1 日に 1 つのオプションしか選択できない場合は、データを 16 ビット int の 14 ビットにパックできます。または、1 日に複数のオプションを選択できる場合は、21 ビットの 32 ビット int にパックできます。

于 2011-11-17T22:38:58.430 に答える