0

私のポイントは次のとおりです
。イベントが保存される MySQL DB があります。これらのイベントは、異なる曜日に発生する可能性があります。次のようになります。

Day | Active
Mon | yes
Tue | yes
Wed | no
Thu | no
Fri | yes
Sat | no
Sun | no

これをDBに保存する方法が完全にはわかりません。もちろん、いくつかの可能性がありますが、私が考えることができるすべてのものに欠点があります。

  • それらをBool型の7つのフィールドとして保存します(そのようなものには多くのフィールドがあるようです)
  • それらを7ビットの数値として保存します(この方法では整数が必要ですが、これには変換するための労力が必要であり、読みやすさに欠けます)

C++ では、これらのデータを std::bitset に格納できます。MySQLでこれに使用できるものがあるに違いない...それを教えてください:)

PS:
重要かどうかはわかりません。データは PHP で読み取られ、JSON として外部に提供されます。

4

3 に答える 3

3

SET タイプ ( http://dev.mysql.com/doc/refman/5.0/en/set.html ) を使用できます。たとえば、テーブルは次のようになります。

+-------------+--------------------+
| event_name  | days               |
+-------------+--------------------+
| some event  | 'monday,friday'    |
+-------------+--------------------+
| another one | 'tuesday'          |
+-------------+--------------------+

この種のテーブルから行を選択するのは簡単で、データベースに潜んでいる人にとっては本当に読みやすいものです。

于 2013-03-05T18:21:55.253 に答える
2

intのアイデアを使用する必要があります。PHPでは、マスクを定数として定義し、ビット演算を使用してどのフラグが設定されているかを把握できます。

だから何かをするのではなく

myvar & 0x010

定数で操作しているように見えます

myvar & IS_MONDAY
于 2013-03-05T18:19:15.700 に答える
0

エントリが、提供した入力を使用して毎週のイベントを保存するだけの場合は、VARCHAR フィールドを作成して JSON 文字列として保存しないでください: { "Mon":"yes", "Tue":"yes", "Wed": "いいえ", "木":"いいえ", "金":"はい", "土":"いいえ", "日":"いいえ" }

于 2013-03-05T18:24:29.950 に答える