データベース仕様

SQLiteにて下記のデータベースを定義し、PHPから利用します。


WhiskyExaminationデータベース

Questionテーブル

問題集に相当するテーブル。

列名 型 属性 説明
id 整数 serial 問題の識別子
question 文字列 問題文
correct 文字列 正解となる選択肢群。JSONの配列形式。ex) ["answer1", "answer2", "answer3"]
incorrect 文字列 不正解となる選択肢群。JSONの配列形式。ex) ["answer1", "answer2", "answer3"]

Accountテーブル

ユーザごとの認証情報を記録するテーブル。

列名 型 属性 説明
sid 整数 serial アカウントの内部的識別子。
id 文字列 unique アカウントの識別子。ユーザが指定する任意の文字列。ex. g0947424
hash 文字列 パスワードのハッシュ値。
firstname 文字列 ユーザの名前。ex. 太郎
lastname 文字列 ユーザの苗字。ex. 山田
permission 文字列 ユーザの権限種別。「normal」「admin」
memo 文字列 備考欄

Trendテーブル

ユーザ数×問題数のレコードを持つテーブル(傾向管理)

列名 型 属性 説明
sid 整数 serial 本テーブルのシリアルID。システムが一意に払い出す値。ユーザと問題の総当たり数だけ生成される。
user_sid 整数 ユーザのSID。ユーザの識別子
question_id 整数 問題のID。問題の識別子
correct_times 整数 正答回数。ユーザが問題を正答した回数
incorrect_times 整数 誤答回数。ユーザが問題を誤答した回数
rank 整数 ランク。ランクは問題抽出アルゴリズムに従い随時更新される

Historyテーブル

問題が1回解答されたら1レコード生成するテーブル(履歴管理)

列名 型 属性 説明
sid 整数 serial 本テーブルのシリアルID。システムが一意に払い出す値。問題が1回解答されたら1つ値を払い出す。連番を想定。
user_sid 整数 ユーザのSID。ユーザのユーザの識別子
date 文字列 問題が解答された日付
question_id 整数 問題のID。問題の識別子
true_or_false 整数 正誤。正答の場合:1 誤答の場合:0

問題抽出アルゴリズム

→問題抽出個数に従い出題問題候補リストを生成する
 リストをシャッフルし1番最初の問題を取り出し出題する。

列名 型 属性 説明
ランク 正答率(%) 出題率(%) 問題抽出個数(コ)
5 100-81 10 1
4 80-61 30 3
3 60-41 50 5
2 40-21 70 7
1 20-0 90 9