N-BOX
TOP
新着情報
フォトギャラリー
デジモノ
おべんきょう
はまりもの
ひとりごと
カメラ
パソコン
掲示板
プロフィール
リンク
メール
afer_88_31.gif
リンクシェア アフィリエイト紹介プログラム
PSX_120_60
デル5_120x60
富士通ショッピングサイト WEB MART

データベースの登録

 開発環境が一応整ったので、実際に開発に取り掛かりたいと思います。
 まず、作りたいのが、タイピングの練習ソフトです。サーブレットでタイピングソフトを作るのは、正直どうかと思ったのですが、とりあえず今回はサーブレットでタイピングの練習が出来るようにしたいと思います。
 もっとも、タイピングゲームのようなものは作れませんので、ここでは文章を入力しミスがないかどうかと入力時間で点数をつけ、数十問の問題を行い結果を出すためのプログラムを考えていきたいと思います。
 まず生徒には、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出力
夏のボーナスキャンペーン 468×60