DatabaseSpecification » 履歴 » バージョン 8

バージョン 7 (aoki yuji, 2016/05/01 15:07) → バージョン 8/9 (aoki yuji, 2016/05/01 15:13)

h1. データベース仕様

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

{{>toc}}

----

h2. WhiskyExaminationデータベース

h3. Questionテーブル

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

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

h3. Accountテーブル

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

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

h3. *****テーブル

ユーザごとの学習状況/得意・苦手把握/etc... を記録するテーブル。

| 列名 | 型 | 属性 | 説明 |
| T.B.D. | | | |

---

h3. Trendテーブル


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

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

h3. Historyテーブル


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

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



h3. 問題抽出アルゴリズム 問題抽出アルゴリズムの考え方

→問題抽出個数に従い出題問題候補リストを生成する
 リストをシャッフルし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 |



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