![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
現在、ユーザー登録処理の設計を行っております。
ユーザー登録情報に、「趣味」という項目があるのですが、
20個の種類が有ります。
処理速度の速さと、今後、趣味の種類数が増えた時の
ことを重視すると、どのような実装方法が一番効率が
よいのでしょうか?
私が想定しているのは、ユーザーテーブルに
20byte程の「趣味」列を作り、
ブラウザ側でチェックをした種類の値を見て、
その値のbyte目に"1"が立ち、それ以外は
"0"が立つという処理です。
(例)
<input type="checkbox" name="hobby" value="1">
<input type="checkbox" name="hobby" value="2">
<input type="checkbox" name="hobby" value="3">
・
・
・
<input type="checkbox" name="hobby" value="20">
↓(1番目、3番目、20番目にチェックが入った場合)
10100000000000000001 が、「趣味」列に入る
他にも、趣味テーブルを用意するなどを考えたのですが、
そうすると趣味マスターテーブルも必用になることと、
10000人以上のユーザーが存在する場合の処理速度を
考えると、ちょっと微妙な気がします・・・(汗)
何かよい案がおありでしたら、ご教授ください!
お願い致します。。。
No.1ベストアンサー
- 回答日時:
う~ん、他に案は出てこないですね・・・
あえていうなら、前者の方式を使うなら私はバイトじゃなくてビットにします。
前者と後者を比べるなら、私は後者を選びます。
後者の方がデータを扱いやすいというだけの理由です。
前者の場合、何番目のバイトがどの趣味に関連づけられているかはプログラム上でしかわかりませんが、後者の場合、データベースだけで表現できます。
やはり、趣味が増えた時や趣味に区分をつけるなどする時などを考えると明らかに後者の方が変更しやすいです。
処理速度を心配されているようですが、それはどのようにデータを処理するかによるのではないでしょうか?
登録処理や編集処理などと言った処理は普通なら滅多にしませんよね?読み込みも毎回読み込むわけじゃありませんよね?
その上で最大同時処理数や処理負荷を考えると、たいした負荷はかからないと思います。
それでも心配なら、簡単なプログラムを作って処理負荷を計測してみるのもいいかもしれません。
親切なご回答、ありがとうございます。
とりあえず、前者の方式でビットにし、
処理負荷の計測をやってみます。
とても参考になりました。
ありがとうございました。
No.2
- 回答日時:
答える立場になって考えると、チェックボックスがたくさん並んだ登録画面は、見ただけでウンザリしてしまうような気がします。
「趣味」をカテゴリ分けして、別画面に階層化するというUIはいかがでしょう?
上位階層のチェックがOFFなら下位のものはノーチェックで良いわけですし。
こういう構造はbacho39さんが作成しようとしているものには当てはまらないかもしれませんが。
確かに答える側からすれば、ウンザリかもしれませんね(汗)。
でも一画面で選べることも、ユーザーからみれば
つかいやすい内容であるとも思います。
とりあえず、別画面にする設計にはなりそうもないので、
チェックボックスを並べて表示します。
アドバイスいただき、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
インスタンス化に伴うメモリ消...
-
大量チェックボックスの実装方...
-
DBへの書き込みとメール送信を...
-
関数の前にアットマークが付く場合
-
javascriptの値をPHPへ渡したい
-
ページの一部だけリロード
-
DB参照&登録処理、どっちが高速?
-
PHPが処理を途中でやめる。原因...
-
条件分岐 if(elseif) switchの...
-
[php初心者]サイトを見てデータ...
-
onedrive にexcelファイルをア...
-
別ファイルの変数を呼び出した...
-
CFileDialogの最初のディレクト...
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
php文字列中のシングルクオート...
-
3つ以上の論理積は利用可能なの...
-
ファイル選択ダイアログで選択...
-
バッチを用いたフォルダの自動移動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
PHPが処理を途中でやめる。原因...
-
phpの処理中に画面表示ををする...
-
関数の前にアットマークが付く場合
-
PHPで偶数と奇数を判断するには
-
symfonyのCriteriaで実行すると...
-
System関数で変数を受け渡す方法
-
条件演算子
-
入れ子になっているHTMLタグも...
-
文字列の10+10を20と表示したい
-
インスタンス化に伴うメモリ消...
-
PHPExcel処理速度が遅い
-
ページの一部だけリロード
-
携帯サイトの構築について
-
JSPでevalを使いたい
-
PHP内、ボタン押下と同時にリロ...
-
◆バックエンド処理の終了を知り...
-
csvファイルの読込みとソート
-
Cronで同じ処理を複数同時に実...
-
mysql データベース処理が途中...
おすすめ情報