• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【mysql.php】チェックボックスの処理)

【MySQL】チェックボックスの処理方法まとめ

このQ&Aのポイント
  • データベースにチェックボックスのON、OFF状態を保存する方法として、4つの方法があります。
  • 方法1では、チェックボックスごとにカラムを用意します。
  • 方法2では、ビット演算を使い、チェックボックスの状態を数値で保存します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

あくまで私見ですが参考までに →一般的には(1)が好まれるのではないでしょうか 往々にして選択肢というのはシステムの運用が始まると拡張することがないため 1レコードに個別に埋め込むのが感覚的にももっとも適しているため メリット: 特定のレコードに対する有無だけをチェックする場合はもっとも効率的 データ構造が単純なためイメージしやすい (ようはエクセルちっくなデータだと思えばよいので) デメリット: 項目が増えるといちいちカラムを増やさないといけず、多くの選択肢がある 場合は物理的に対応できないなど、スケーラビリティが低い 冗長なもち方のため集計や抽出の際にあまり効率的なSQLをかけない →次に(2)と(3)はほぼ同様のケースであまりSQLライクではありません とくに(3)のような持ち方だとおおよそSQLとしての集計には向きません (例示の(2)はビット処理じゃないですね?1と2がチェックなら3?) メリット: カラム数がへらせる データの拡張が容易 デメリット: とくにインデックスがききにくいため大量のデータ処理にはむかない データに制限をつけにくい →個人的には(4)を使うケースが多いです メリット: 集計が簡単で簡便なSQL文で表現できる 拡張性はたかい デメリット: かならず集計のSQLが必要になるためなれないとSQL文が書きにくい ただし最初に書いた通り、拡張する必要があるかどうかで(1)の方を選ぶことも 多々ありそれはケースバイケースで設計時点で調整します

yuzuru0024
質問者

お礼

回答有り難うございます。 メリット・デメリットをご丁寧にありがとうございます。 例示2のbit 12は 1100を10進数として挿入したとして考えた場合です。 一長一短あるので、使用するシーンで使い分けていくのがよさそうですね。

関連するQ&A