|
データベースの登録
|
開発環境が一応整ったので、実際に開発に取り掛かりたいと思います。
まず、作りたいのが、タイピングの練習ソフトです。サーブレットでタイピングソフトを作るのは、正直どうかと思ったのですが、とりあえず今回はサーブレットでタイピングの練習が出来るようにしたいと思います。
もっとも、タイピングゲームのようなものは作れませんので、ここでは文章を入力しミスがないかどうかと入力時間で点数をつけ、数十問の問題を行い結果を出すためのプログラムを考えていきたいと思います。 |
まず生徒には、IDとパスワードを発行し、生徒の識別を行います。
当然それぞれの生徒の情報が必要になるので、その情報を洗い出します。
生徒テーブル |
student_table |
id |
id |
int |
ユーザーID |
user_id |
char(6) |
パスワード |
pass |
char(8) |
氏名 |
name |
varchar(20) |
学科・学年 |
study_id |
int |
在籍状況 |
enrollment |
smallint |
登録日時 |
set_date |
datetime |
ユーザーIDについては、現在6桁の学生章番号を使ってWindowsにログインしているのにあわせて6桁にしました。パスワードもすべて8桁で統一してありますので、varcharの設定はせずにcharで作成しました。
このテーブルを実際にMySQLに登録するには、下記のようにします。
mysql> create table student_table(
-> id int unsigned not null auto_increment,
-> primary key(id),
-> user_id char(6) not null,
-> pass char(8) not null,
-> name varchar(20),
-> study_id int unsigned,
-> enrollment smallint,
-> set_date datetime);
Query OK, 0 rows affected (0.14 sec)
|
|
次にタイピングの問題を登録するためのテーブルを作りたいと思います。
タイピングテーブル |
type_table |
id |
id |
int unsigned |
タイピングデータ |
type_data |
varcharr(255) |
文字数 |
word_cnt |
smallint unsigned |
タイピング問題を登録するテーブルは、あまりたくさんの項目は必要ないと思いますので、とりあえず上記の内容で考えていきたいと思います。
タイピングデータの所に問題を登録していきます。
文字数を登録しているのは、文章の長さによって得点を変えたいと思っているので、その際に使用するつもりで登録しました。
mysql> create table type_table(
-> id int unsigned not null auto_increment,
-> primary key(id),
-> type_data varchar(255) not null,
-> word_cnt smallint unsigned not null);
Query OK, 0 rows affected (0.03 sec)
|
|
上のタイピングテーブルの内容でタイピングを行った際に結果を保存するためのテーブルを作っています。
このテーブルでは、「誰が」、「どの問題を」、「いつ実行し」、「結果はどうだったのか」を残す必要があるとおもいます。
上記の内容を踏まえてテーブルの内容を考えてみました。
タイピング解答テーブル |
typeans_table |
id |
id |
int unsigned |
生徒テーブルのID |
student_id |
int unsigned |
タイピングテーブルのID |
type_id |
int unsigned |
生徒がタイプしたデータ |
type_data |
varchar(255) |
得点 |
ans_cnt |
tynyint unsigned |
タイピング実行回数 |
type_cnt |
int unsigned |
タイピング実行日時 |
type_date |
datetime |
生徒テーブルのIDとタイピングテーブルのIDを入れることで、誰がどの問題を行ったのかが確認でき、実行日時と実行回数を残すことで、いつ行ったのかが確認できます。
結果は得点で確認できますので、得点の合計を求めることで、最終的な点数をだします。
mysql> create table typeans_table(
-> id int unsigned not null auto_increment,
-> primary key(id),
-> student_id int unsigned not null,
-> type_id int unsigned not null,
-> type_data varchar(255),
-> ans_cnt tinyint unsigned not null,
-> type_cnt int unsigned not null,
-> type_date datetime not null);
Query OK, 0 rows affected (0.03 sec)
|
|
最後に教師のテーブルを作りたいと思います。
現時点では、このプログラムを複数の先生で使うことはないのですが、ある程度汎用性を持たせたいと思っているので、先生がそれぞれの授業内容の編集や成績の管理が出来るようにしたいと思っているので、登録することにしました。
教師テーブル |
teacher_table |
id |
id |
int unsigned |
ユーザーID |
user_id |
varchar(10) |
パスワード |
pass |
char(8) |
氏名 |
name |
varchar(20) |
管理フラグ |
manage_flg |
smallint |
登録日時 |
set_date |
datetime |
生徒テーブルと違い、ユーザーIDは決められたものがないので、varcharにしました。
管理フラグと言うのは、このプログラム全体を管理できるかどうかを判断するためのフラグです。管理者であれば、他の先生の内容を修正することや、生徒の情報や先生の情報を登録できるようにしたいと思っています。
mysql> create table teacher_table(
-> id int unsigned not null auto_increment,
-> primary key(id),
-> user_id varchar(10) not null,
-> pass char(8) not null,
-> name varchar(20),
-> manage_flg smallint,
-> set_date datetime);
Query OK, 0 rows affected (0.05 sec) |
|
今回はまず最低限必要と思うテーブルを登録しました。テーブルの数はもっとたくさんあるのですが、タイピングについてのみ考えれば、これで作成に入れると思います。
作成途中にまだ必要になったり、テーブルの項目が必要になる場合には、追加することもできるようになっています。
しかし、ある程度プログラムが出来上がってから、データベースの項目を追加するのは好ましくないので、出来るだけはじめのうちにどういうものを作るのか、そのためにはどういう項目が必要なのかを考えた方が良いと思います。 |
MySQLのWeb出力 UP DataSourceを使ったMySQLのWeb出力 |
  |
|