0

状況: ユーザーは、チェックボックスまたは複数選択で最大 10 個のオプションを選択します。1 つから 10 個すべてのオプションが選択される場合があります。次のようなmysqlデータベースにデータを保存するための最良の方法を探しています。

(1) このデータを取得するためのクエリは高速です。データを更新したり、複雑な結合を行ったりする必要はありません。データを取得するだけで済みます。(2) 最小限のストレージスペースが必要です (3) これは、将来チェックボックスに新しいオプションが追加される可能性があるという点で拡張可能です (4) そのためのコードを書くのは面倒ではありません (PHP)

オプション:

  1. データをシリアル化し、単一の列/行に格納します

  2. 選択された各オプションを「オプション名」の単一の列の下に個別の行として保存します

  3. 送信ごとに 1 つの行を保存します。各オプションの列に、そのオプションが選択されているかどうかを示すビットを付けます

何が最善かについて何か考えはありますか?

4

2 に答える 2

0

私があなただったら、良い EER ダイアグラムを作成し、DB を正規化します。さらに、InnoDB と MyISAM エンジンを調べて、各テーブルでどの onr を使用する必要があるかを確認します。クエリが心配な場合は、ツールを使用してクエリをどのように改善できるかを確認することはできますが、すべてを 1 つのテーブル、1 つの行に配置すると、INDEX を使用することさえできず、DB は多くの繰り返し情報で過負荷になります。

于 2012-07-09T17:20:26.663 に答える
0

正規化を使用します。

オプションを格納するための子テーブルをメインテーブルとの外部キー制約で分けて作成します。

于 2012-07-09T17:12:31.073 に答える