spm84
@spm84

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

データベース設計の改善

image.png
JLPT(日本語能力試験)とは外国人の日本語レベルを測るための検定試験であり、
この試験は世界中の多くの国で開催されます。
受験者のテスト結果を保存するオンライン テスト システムのデータベースを設計するとします。

要件:

  • 各質問には4つの選択肢があります。
  • 選択できるオプションは1つだけで、そのオプションはデータベースに保存する必要がある。

私の設計:

Students (student_id, name, email)
Tests (test_id, testname, duration)
Questions (question_id, question, opt1, opt2, opt3, opt4, answer, test_id)
Answers (student_id, question_id, answer)

例えば1 つのテストは 100個の質問で構成され、1,000人の学生がそのテストを受けると、
各学生には質問ごとに 100個のレコードが存在し、1,000人の学生では 100,000 個のレコードが存在します。
これを行うために、もっと良い方法があるのでしょうか。

0
Students (student_id, name,...)
Tests (test_id, testname,申込開始、申込期日、試験日等、募集人数、合格点、出題数、[難易度割合,...]、ジャンル割合,...])
QandA(seq_id, student_id, test_id, [{QAC},..],...)
Questions (question_id, 選択数、ジャンル、難易度、得点、正解、問題,解説)

QAC: {question_id、ジャンル、難易度、正解時得点、正解値、回答値、[ランダム問題順序、...],採点結果}・・・設問数の配列

因みに、ランダム問題順序は、[3,4,1,2]のように出題順序を変更しても採点結果に左右されないための項目です。

出題は回答者が全て同じ問題とは限りません。(横ガン見のカンニング対策)

勿論、データベースはMongoDBで!

最近、NonSQLの台頭でRDBが軽視される風潮があることに危惧してます。
 mariadbもpostgresqlのjson項目を利用でき、json関数も充実しています。

しかし、RDB陣営はER図のように正規化するための、新たなデータベース設計手法を見いだしていないように感じています。

jsonデータベース設計手法が必要な時であると感じているこの頃です。

1Like

Your answer might help someone💌