電子書籍の厳選無料作品が豊富!

現在、ユーザー登録処理の設計を行っております。
ユーザー登録情報に、「趣味」という項目があるのですが、
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人以上のユーザーが存在する場合の処理速度を
考えると、ちょっと微妙な気がします・・・(汗)

何かよい案がおありでしたら、ご教授ください!
お願い致します。。。

A 回答 (2件)

う~ん、他に案は出てこないですね・・・


あえていうなら、前者の方式を使うなら私はバイトじゃなくてビットにします。

前者と後者を比べるなら、私は後者を選びます。
後者の方がデータを扱いやすいというだけの理由です。
前者の場合、何番目のバイトがどの趣味に関連づけられているかはプログラム上でしかわかりませんが、後者の場合、データベースだけで表現できます。
やはり、趣味が増えた時や趣味に区分をつけるなどする時などを考えると明らかに後者の方が変更しやすいです。

処理速度を心配されているようですが、それはどのようにデータを処理するかによるのではないでしょうか?
登録処理や編集処理などと言った処理は普通なら滅多にしませんよね?読み込みも毎回読み込むわけじゃありませんよね?
その上で最大同時処理数や処理負荷を考えると、たいした負荷はかからないと思います。
それでも心配なら、簡単なプログラムを作って処理負荷を計測してみるのもいいかもしれません。
    • good
    • 0
この回答へのお礼

親切なご回答、ありがとうございます。
とりあえず、前者の方式でビットにし、
処理負荷の計測をやってみます。

とても参考になりました。
ありがとうございました。

お礼日時:2005/08/10 20:31

答える立場になって考えると、チェックボックスがたくさん並んだ登録画面は、見ただけでウンザリしてしまうような気がします。


「趣味」をカテゴリ分けして、別画面に階層化するというUIはいかがでしょう?
上位階層のチェックがOFFなら下位のものはノーチェックで良いわけですし。
こういう構造はbacho39さんが作成しようとしているものには当てはまらないかもしれませんが。
    • good
    • 0
この回答へのお礼

確かに答える側からすれば、ウンザリかもしれませんね(汗)。
でも一画面で選べることも、ユーザーからみれば
つかいやすい内容であるとも思います。

とりあえず、別画面にする設計にはなりそうもないので、
チェックボックスを並べて表示します。

アドバイスいただき、ありがとうございました。

お礼日時:2005/08/12 20:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!