会員制サイトのテーブル設計
会員制の学習支援サイトをcakephp2.7で作りたいのですが、具体的にどういうテーブル設計にすればよいかよくわかりません。
まず会員制なので会員テーブル(usersテーブル)でusernameカラムとpasswordカラムを用意。
cookbookのチュートリアルにあるようにこの命名規則に従うと「ユーザーログインを 実装するにあたってほとんどのことを CalePHP が自動的に設定します」ということでチュートリアルを進めた結果確かにログイン機能はできました。
次に、問題演習のための問題文テーブル(questionsテーブル)。
カラムは問題IDカラム、q_body(問題文)カラム。
この問題文テーブルに10問(10行)データが入っているとします。
やりたいことは、会員登録したユーザ毎の進捗度の管理です。
今考えているのは、ユーザ毎に進捗度テーブルを作って管理する方法です。
進捗度テーブルには、問題IDカラム、1回目の結果を書き込むtry1カラム。2回目の結果を書き込むtry2カラム。…を用意するつもりです。
ユーザーが、初めて問題1を解いたら進捗度テーブルの問題1の行のtry1カラムに結果を書き込む。
ユーザーが、再び問題1を解いたら進捗度テーブルの問題1の行のtry2カラムに結果を書き込む。
というようなことを実現したいです。
この場合会員1人につき進捗度テーブルを一つ用意することになると思うのですが、具体的にやるとなるとどうしていいかよくわかりません。
- 会員登録時にその人用の進捗度テーブルを作る方法。
- ①ができない場合、あらかじめ進捗度テーブルを連番でいっぱい作っておいて、会員登録した順に会員番号と進捗度テーブルを結びつける。
と、いうことも考えたのですが、いずれにしても会員番号とその人用の進捗度テーブルを結びつける方法が必要。
つまり会員Aは会員A用進捗度テーブルには書き込めるが、他の会員用の進捗度テーブルには書き込めないような仕組みが必要。
そのためには会員Aがログインした場合A用進捗度テーブルに書き込むためのフォーム(ページ)が表示されるようにする必要がある。
これって会員制サイトのいわゆるマイページにあたるものだと思うのですが、どうすれば実現できるでしょうか?
とりあえずテーブル設計の考え方は上記の方針で問題ないでしょうか(これでやりたいことが実現可能でしょうか?)
上記の方法では無理あるいは著しく非効率なので普通はこうする、みたいなのがあればお願いします。