-2

Wordpress、jQuery、PHPを使用してテストシステムを作成しました。これはうまく機能しています。私があまり経験のない分野はmysqlデータベースです。

結果をきちんと整理して保存する方法がよくわかりません。

保存したいものは次のとおりです。

  1. ユーザー名。
  2. テスト名。
  3. 質問。
  4. 答え。
  5. スコア。
  6. 合格/不合格。

ポイント1、2、5、6は、データを保存するのにかなり簡単です。混乱には質問と回答が伴います。

これらをきちんとmysqlデータベースに保存するにはどうすればよいですか?

10個の質問があり、それぞれに複数の選択肢があるとしましょう。それぞれをデータベースに保存し、それらを入力したユーザーにリンクさせるにはどうすればよいですか?データベースをきちんと保つ方法がわかりません。これはすぐに制御不能になる可能性があります。

将来的には、それらの質問と回答を検索したいと思うかもしれません。

4

3 に答える 3

4

「きちんとした」はあなたに「正規化」を考えさせるべきです。

関係について考え始め、今のところテーブルについて心配する必要はありません。あなたはすでにそれらのいくつかを明確に述べています:

  • 質問には1つ以上の回答があります
  • 特定の質問に対する1つ以上の回答は、「正しい」と見なすことができます
  • テストには1つ以上の質問があります
  • テストには1つのスコアと1つの名前があります
  • ユーザーは0個以上のテストを受けることができます
  • 0人以上のユーザーがテストを受けることができます
  • 質問は0個以上のテストに表示される可能性があります(?)

それらを整理したら、テーブルを比較的簡単に説明できます。

于 2013-03-26T09:53:13.390 に答える
2

データベース構造を正規化する必要があります。

**Table: users**
id - int
username - varchar
password - varchar
active - enum (y,n)

**Table: questions**
id - int
question - varchar/text

**Table: answers**
id - int
question_id - int (foreign key questions.id)
answer - varchar/text
is_correct_anser - enum (y, n)

**Table: test_master**
id - int
test_name - varchar/text
pass_score - int (minimum score required to pass the test)

**Table: test**
user_id - int (foreign key to users.id)
test_id - int (foreign key to test_master.id)
question_id - int (foreign key to questions.id)
answer_id - int (foreign key to answers.id)

上記の表に基づいて、必要なすべての情報を正規化された方法で保存できます。正規化が常に役立つとは限らず、アプリケーションの要件によって異なることに注意してください。複数のテーブルでの結合を回避するため、テストが完了したら、合計スコアをuser_idおよびtest_idとともに別のテーブルに保存することも理想的です。

于 2013-03-26T10:01:09.170 に答える
0

この中に1つのテーブル質問を作成します。question_id、question、choiceがあります。他のテーブルには、question_id、choice、username、score、testnameなどのみを保存する必要があります。question_idが主キーの質問テーブルになります。

于 2013-03-26T09:54:00.737 に答える