2010-11-29 17 views
0

申し訳ありませんがこれがカバーされている - 私は何時間も探していますが、私は単に効果的に検索するための語彙が不足していると思います。MySQL:各ユーザーのプロファイル情報はどこのWebサイトに保存しますか?

私は各ユーザーのプロファイル情報をどのように保存するかを判断しようとしています。プロフィール情報では、私は電子メールなどの情報を意味するのではなく、私が取り組んでいるサイトに関するより多くの好みを意味します。

これは言語学習サイトであり、ユーザーは「進歩」を保存して、学習したレッスンにフラグを付けることができるようにしたいと考えています。

私はまた、彼らが行ったことのない練習だけを提供しようとするように、彼らが行った練習を追跡したい(または、練習問題を使い果たしたとき、 。私はこの情報をどこに保存するか分かりません。

ユーザーをレッスンにリンクするルックアップテーブルを用意する必要がありますか?私はユーザーとテーブルの数が増えるにつれてこれが大きくなることを恐れる。その単なるブール値であると見て、私は各ユーザにレッスンを表すint(そして後でもっとint型の配列)を与え、それらのビットに対してビット単位の演算子を実行して、保存したレッスンに関する情報を取得することを考えました。それは将来的に面倒かもしれないように聞こえるが。

私がmysqlに保存しようとすると、実行した練習を覚えておくと、これにより膨大な無駄が発生する恐れがあります。私はこれをクッキーを使用してユーザーのコンピュータ上で実行しようとすることができますか?クッキーを無効にしている人は、繰り返し運動に関する質問に対処するだけですか?

多分私は他のテーブルや他のデータベースについて考えるべきです!知りません!

残念なことに、すべてのナンセンスは申し訳ありません。少なくとも、私が読んでおく必要があるものに向けて、いくつかの指針をお読みになっていただければ幸いです。

答えて

3

ユーザーと演習のルックアップテーブルは、最もシンプルで柔軟性があり、心配する必要はありませんそれのサイズについて。ユーザーID、エクササイズID、およびある種の進捗変数があるので、(必要に応じて)行ごとに10バイト以下のスペースになる可能性があります。 100万行は10MBのスペースを占有しません。

私はおそらく、ユーザーが特定の練習で何らかの進歩を遂げたときに、レコードがテーブルに作成されるだけです。だから、あなたがエクササイズでユーザの進歩を調べようとしていて、行が見つからなければ、彼らはそのエクササイズで何もしていないことを意味します。そうすれば、進捗を表すために行を作成するだけで済むので、全体の数をかなり低く抑える必要があります。

+0

+1私もそれをビートします。 –

+0

Ok、クール、私はちょうどmysqlデータベースの完全な規模に慣れていないと思います。私はそれに乗り、感謝します! –

+0

@マイケル:あまりにもあまりにも多くのことをあまり気にしないでください。どんな方法でも作業が簡単で柔軟性があり、アプリケーションでボトルネックや問題が発生した場合は後で変更することを心配してください。あなたが実際にそれが必要であることを知る前に、自分自身をより困難にする理由はありません。 –

0

さまざま演習(多対多の関係)に、各ユーザをリンクするジャンクションテーブルをする必要があります:あなたはすべての可能な組み合わせのエントリを持っている必要はありません

user_id(int) exercise_id(int) learned(boolean) 

、あなたが追加することができます各組み合わせはレッスンに学習済みのフラグが付いているときに使用します。

ビットごとの方法が悪い道を下っているので、レッスンごとにちょっとしたことが必要です。スケーラビリティはありません。

関連する問題