PSSdev/データベース仕様書

データベース情報

version

データベースのバージョン情報

versionsubversion
DB のバージョン番号DB のサブバージョン番号
DB のバージョン
"7"〜
DB のサブバージョン番号
"1"〜
CREATE TABLE version (
  version INTEGER NOT NULL,
  subversion INTEGER NOT NULL
)
versionsubversion備考
71初期リリース
72memory_rate テーブル追加

問題集データベース

テーブル名内容PRIMARY KEY への NULL autoimcrement 挿入
question問題とその内容
element_info問題集IDやフォルダIDと、問題集名、作成日、更新日、その他の情報
folder問題集やフォルダとそれが含まれているフォルダの対応表×
section問題集と問題×

question

問題データ

qidquestionanswerhintdescriptionwavfilenamepronouncemodectimeutimeext1ext2ext3ext4ext5
問題ID問題文正解文ヒント説明文WAV ファイル発音記号学習可能モード作成時刻更新時刻予約項目1(URL)予約項目2予約項目3予約項目4予約項目5
mode
「学習可能モード」がフラグとして格納される。LSB が mode=0 である
CREATE TABLE question (
  qid INTEGER PRIMARY KEY,
  question TEXT NOT NULL,
  answer TEXT NOT NULL,
  hint TEXT NOT NULL,
  description TEXT NOT NULL,
  wavfilename TEXT NOT NULL,
  pronounce TEXT NOT NULL,
  mode INTEGER NOT NULL,
  ctime INTEGER NOT NULL,
  utime INTEGER NOT NULL,
  ext1 TEXT NOT NULL,
  ext2 TEXT NOT NULL,
  ext3 TEXT NOT NULL,
  ext4 TEXT NOT NULL,
  ext5 TEXT NOT NULL
)
CREATE INDEX question_answer ON question( answer )
  • Ver.8.1 以降では、ext1 は URL として使用。

element_info

フォルダ、問題集、バインダーの情報

idtypenameauthorwriterdescriptionctimeutimeext1ext2
問題集ID、フォルダID、バインダーIDフォルダ(0)or問題集(1)orバインダー(2)の区別名前著作権者作成者説明文作成日更新日予約項目1予約項目2
CREATE TABLE element_info (
  eid INTEGER PRIMARY KEY,
  type INTEGER NOT NULL,
  name TEXT NOT NULL,
  author TEXT NOT NULL,
  writer TEXT NOT NULL,
  description TEXT NOT NULL,
  ctime INTEGER NOT NULL,
  utime INTEGER NOT NULL,
  ext1 TEXT NOT NULL,
  ext2 TEXT NOT NULL
)

folder

フォルダ構成

eidfid
問題集IDまたはフォルダIDid が含まれる先のフォルダ(親フォルダ)
CREATE TABLE folder (
  eid INTEGER PRIMARY KEY NOT NULL REFERENCES element_info(eid),
  fid INTEGER NOT NULL REFERENCES element_info(eid)
)

ルートフォルダの fid には 0 を用いる。

section

問題集

sidqid
問題集ID問題ID
CREATE TABLE section (
  sid INTEGER NOT NULL REFERENCES element_info(eid),
  qid INTEGER NOT NULL REFERENCES question(qid),
  UNIQUE( sid, qid )
)

履歴データベース

テーブル名内容PRIMARY KEY への NULL autoimcrement 挿入
user_info各ユーザの情報
log_idユーザと問題集、モードの組に与えられる履歴ID
question_log各ユーザの各問題に対する履歴情報×
looped_questions各ユーザの各問題集における今回のループで学習済み問題群×
section_log各ユーザの各問題集に対する履歴情報×
daily_logある一回の学習に関する情報
daily_question_logある一回の学習で学習した問題の履歴×

user_info

各ユーザの情報

uidname
ユーザID名前
CREATE TABLE user_info (
  uid INTEGER PRIMARY KEY,
  name TEXT NOT NULL UNIQUE
)

log_id

ユーザと問題集、モードの組に与えられる履歴ID

liduideidmid
履歴IDユーザID問題集IDモードID
CREATE TABLE log_id (
  lid INTEGER PRIMARY KEY REFERENCES log_id(lid),
  uid INTEGER NOT NULL,
  eid INTEGER NOT NULL,
  mid INTEGER NOT NULL,
  UNIQUE( uid, eid, mid )
)

question_log

各ユーザの各問題に対する履歴情報

qiduidmidnc1ni1nc2ni2nc1pmni1pmnc2pmni2pmLastStudyTime?LastMistakeTimeOnFirstReply?ReplySec?ext1ext2
問題IDユーザIDモードID正解数不正解数正解数(再回答)不正解数(再回答)正解数の調整値不正解数の調整値正解数(再回答)の調整値不正解数(再回答)の調整値最終学習日時最終不正解日時学習時間予約項目1予約項目2
CREATE TABLE question_log (
  qid INTEGER NOT NULL REFERENCES question(qid),
  uid INTEGER NOT NULL REFERENCES user_info(uid),
  mid INTEGER NOT NULL,
  nc1 INTEGER NOT NULL,
  ni1 INTEGER NOT NULL,
  nc2 INTEGER NOT NULL,
  ni2 INTEGER NOT NULL,
  nc1pm INTEGER NOT NULL,
  ni1pm INTEGER NOT NULL,
  nc2pm INTEGER NOT NULL,
  ni2pm INTEGER NOT NULL,
  LastStudyTime INTEGER NOT NULL,
  LastMistakeTimeOnFirstReply INTEGER NOT NULL,
  ReplySec INTEGER NOT NULL,
  ext1 TEXT NOT NULL,
  ext2 TEXT NOT NULL,
  PRIMARY KEY(qid,uid,mid)
)

looped_questions

各ユーザの各問題集における今回のループで学習済み問題群

lidqid
履歴ID問題ID
CREATE TABLE looped_questions (
  lid INTEGER NOT NULL REFERENCES log_id(lid),
  qid INTEGER NOT NULL REFERENCES question(id)
)

element_log

各ユーザの各問題集に対する履歴情報

lidFirstReplyDate?nRunTotalReplySec?TotalStrokes?nAccomplishext1ext2
履歴ID初回学習時刻学習回数総学習時間総ストローク数達成回数予約項目1予約項目2
CREATE TABLE element_log (
  lid INTEGER PRIMARY KEY NOT NULL REFERENCES log_id(lid),
  FirstReplyDate INTEGER NOT NULL,
  nRun INTEGER NOT NULL,
  TotalReplySec INTEGER NOT NULL,
  TotalStrokes INTEGER NOT NULL,
  nAccomplish INTEGER NOT NULL,
  ext1 TEXT NOT NULL,
  ext2 TEXT NOT NULL
)

daily_log

ある一回の学習に関する情報

didlidStartTime?EndTime?Strokesext1ext2
デイリーID履歴ID開始時刻終了時刻ストローク数予約項目1予約項目2
CREATE TABLE daily_log (
  did INTEGER PRIMARY KEY,
  lid INTEGER NOT NULL REFERENCES log_id(lid),
  StartTime INTEGER NOT NULL,
  EndTime INTEGER NOT NULL,
  Strokes INTEGER NOT NULL,
  ext1 TEXT NOT NULL,
  ext2 TEXT NOT NULL
)

daily_question_log

ある一回の学習で学習した問題の履歴

CREATE TABLE daily_question_log (
  did INTEGER NOT NULL REFERENCES daily_log(did),
  qid INTEGER NOT NULL REFERENCES question(id),
  nc1 INTEGER NOT NULL,
  ni1 INTEGER NOT NULL,
  nc2 INTEGER NOT NULL,
  ni2 INTEGER NOT NULL,
  ReplySec INTEGER NOT NULL,
  ext1 TEXT NOT NULL,
  ext2 TEXT NOT NULL,
  PRIMARY KEY( did, qid )
)

Ver.7.1 追加テーブル

memory_rate

忘却度管理テーブル

CREATE TABLE memory_rate (
  qid INTEGER NOT NULL REFERENCES question(qid),
  uid INTEGER NOT NULL REFERENCES user_info(uid),
  rate INTEGER NOT NULL,
  level INTEGER NOT NULL,
  l1_time INTEGER NOT NULL,
  l2_time INTEGER NOT NULL,
  l3_time INTEGER NOT NULL,
  l4_time INTEGER NOT NULL,
  l5_time INTEGER NOT NULL,
  l6_time INTEGER NOT NULL,
  l7_time INTEGER NOT NULL,
  l8_time INTEGER NOT NULL,
  l9_time INTEGER NOT NULL,
  l10_time INTEGER NOT NULL,
  PRIMARY KEY( qid, uid )
)
rate
レベルが level になったときのレート.
level
現在のレベル
l1_time 〜 l10_time
level1〜level10 の各レベルになったときの時刻.
level よりも少ない level の time が 0 の場合は,そのレベルをスキップしたことを表す.
0 の場合はそのレベルに達していない.

Ver.8.2 追加テーブル

section_trash

問題のゴミ箱

スキーマ

sidqiddelete_date
元の問題集ID問題ID削除日時
CREATE TABLE section_trash (
  sid INTEGER NOT NULL REFERENCES section(sid),
  qid INTEGER NOT NULL REFERENCES question(qid),
  delete_date INTEGER NOT NULL,
  UNIQUE( sid, qid )
)

解説

「問題のゴミ箱」の実装用テーブル。

ある問題集 sid にある、問題 qid を削除した場合、section sid からは qid が削除され、このテーブル(section_trash) に [sid,qid,delete_date] が追加される。

Ver.8.3 追加テーブル

user_property

ユーザの追加情報

スキーマ

uidsl_foldersl_sectionoption_filenamemidext1ext2ext3ext4ext5
ユーザIDスマート学習用フォルダIDスマート学習リストの問題集IDオプションファイルのファイル名デフォルトの学習モード予備データ1予備データ2予備データ3予備データ4予備データ5
CREATE TABLE user_property (
  uid INTEGER PRIMARY KEY REFERENCES user_info(uid),
  sl_folder INTEGER NOT NULL REFERENCES element_info(eid),
  sl_section INTEGER NOT NULL REFERENCES element_info(eid),
  option_filename TEXT NOT NULL,
  mid INTEGER NOT NULL,
  ext1 TEXT NOT NULL,
  ext2 TEXT NOT NULL,
  ext3 TEXT NOT NULL,
  ext4 TEXT NOT NULL,
  ext5 TEXT NOT NULL
)

項目

uid
ユーザID
sl_folder
このユーザのスマート学習用フォルダ
sl_section
このユーザのスマート学習用問題集ID
option_filename
このユーザに切り替えたときに適用されるオプションファイル名。
オプションファイル格納フォルダからの相対パス名とする。
通常はファイル名(例:default.ini)のみ。
切り替え先なしの場合は、""とする。
mid
デフォルトの学習モードID。
このユーザに切り替えたときにこの学習モードに変更する。
「切り替えない」場合の値は、-1 とする。
このエントリーをはてなブックマークに追加

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-19 (月) 18:11:40 (4920d)