<第2回>

データベースを作る

兵庫県立西宮香風高等学校 松本吉生

ymatsumoto@hyogo-c.ed.jp

 
<<前のページへ
 

Accessのテーブルを作る

   
 

出欠管理と成績管理のための基本的なテーブルをアクセスで作る。ここで決めたテーブル構造によって、必要な処理ができなくなったり、同じ処理をするにも手間がかかったり複雑になったりするので、慎重に考えなければならない。特にInfoPathから行うクエリ操作の上で、テーブル構造に工夫が必要な面もある。

データベースを構築する際の考え方として「正規化」があるが、実際の業務運用上は完全に正規化しないほうがうまく運用できる場合もある。正規化について知っておく必要はあるが、必ずしも正規化しなければならないと思いこまないほうがいいだろう。

   

成績処理システムの前提となるモデル

   
 

ここで作る成績処理システムの前提となるモデルは、一般的な全日制普通科の小規模高校として、最も単純化したものを想定した。

(1)第一学年
(2)30人学級が3クラス
(3)週5日制、6時間授業
(4)授業はクラス単位で展開
(5)ホームルームと総合学習の時間がそれぞれ週1時間
(6)教員数11名

(1)については、まず第一学年の処理を作れば、次に全学年に広げることは簡単だろう。(2)と(6)については規模の問題なので、大きくても同じ処理ができる。(3)では7時間授業や土曜日授業のケースも考えられるが、処理としては同じものでできるだろう。(4)は、芸術などで選択授業の場合もあるが、基本的なクラス展開の処理ができれば、受講の方法を工夫することで処理することができるはずだ。(5)についても多くの学校でみられるケースだろう。

   

テーブルの概要

   
 

まず生徒や教員、講座の情報を管理するための基本的なテーブルを、次のように設計する。

(1)生徒テーブル・・・生徒の個人情報を記録する。
(2)教員テーブル・・・教員の情報を記録する。
(3)講座テーブル・・・講座の情報を記録する。
(4)クラステーブル・・・クラスの情報を記録する。

次に、出欠管理をするために必要なテーブルを、次のように設計する。

(5)時間割テーブル・・・講座が何曜日の何時限にあるかを記録する。
(6)授業日テーブル・・・年度の日付データと授業のあるなしを記録する。
(7)出欠テーブル・・・生徒の出欠データを記録する。

そして成績処理をするために必要なテーブルを、次のように設計する。

(8)成績テーブル・・・生徒の講座ごとの成績を記録する。

   

Accessによるテーブル作成

   
 

Microsoft Access 2003でデータベースを新規作成し、デスクトップに「成績管理」という名前で保存する。そして次のようにテーブルを作成する。

   
 

(1)生徒テーブル

 
  フィールド名 データ型 説明
主キー 学籍番号 テキスト型(7) 7桁の学籍番号とする。
  生徒氏名 テキスト型(50) 生徒の氏名
  クラス番号 テキスト型(2) 生徒が所属するクラスの番号
 

(2)教員テーブル

 
  フィールド名 データ型 説明
主キー 教員番号 テキスト型(6) 6桁の教員番号とする。
  教員氏名 テキスト型(50) 教員の氏名
 
(3)講座テーブル
 
  フィールド名 データ型 説明
主キー 講座番号 テキスト型(6) 6桁の講座番号とする。
  科目名 テキスト型(50) 科目の名称
  クラス番号 テキスト型(2) 講座の対象となるクラス番号
  担当教員番号 テキスト型(6) 授業を担当する教員の番号
 
(4)クラステーブル
 
  フィールド名 データ型 説明
主キー クラス番号 テキスト型(2) 2桁のクラス番号とする。
  クラス名 テキスト型(50) クラスの名称
 
(5)時間割テーブル
 
  フィールド名 データ型 説明
主キー ID オートナンバー型 アクセスがウィザードで自動的に作成したオートナンバー型のID
  講座番号 テキスト型(6) 時間割を登録する講座番号
  曜日 テキスト型(1) 開講する曜日
  時限 テキスト型(1) 開講する時間
 
(6)授業日テーブル
 
  フィールド名 データ型 説明
主キー 年月日 日付/時刻型 処理年度の日付を登録する
  曜日 テキスト型(1) 曜日を登録する
  授業日 テキスト型(1) 授業がある日='1'、授業がない日='2
 
Accessでテーブルを作成する方法はここでは説明しないが、作成したテーブルの画面は次のようなものになっているはずだ。
 
 
 
 
 
 
 
授業日データの作成
   
 

「授業日」テーブルのデータに基づき、生徒の出欠データを生成する。そこで授業日データは、処理年度の4月1日から3月31日までの日付データを登録しなければならない。

このような一連のデータを合理的に作成するにはいろいろな方法が考えられるが、最も手軽な方法はエクセルを用いることである。ここではエクセルを使って次のような手順で一連の授業日データを作成しよう。

(1)エクセルを起動し、セルA1に「年月日」、セルB1に「曜日」、セルC1に「授業日」とアクセスのフィールド名に対応した表題を入力する。
(2)セルA2に処理年度の4月1日の日付を入力する。
(3)セルB2に式「=IF(WEEKDAY(A2,1)=1,"日",IF(WEEKDAY(A2,1)=2,"月",IF(WEEKDAY(A2,1)=3,"火",IF(WEEKDAY(A2,1)=4,"水",IF(WEEKDAY(A2,1)=5,"木",IF(WEEKDAY(A2,1)=6,"金",IF(WEEKDAY(A2,1)=7,"土")))))))」を入力する。
(4)セルC2に式「=IF(WEEKDAY(A2,1)=1,"2",IF(WEEKDAY(A2,1)=7,"2","1"))
(5)セルA2からC2を選択し、右下のアンカーポイントをマウスでクリックし、日付が3月31になるまで下へドラッグする。

「WEEKDAY()」関数は、日付から曜日を取得する関数である。最初の引数は対象となる日付の入ったセルを示し、2つめの引数は曜日として取得する数値の種類を決める。2つめの引数が「1」なら、日曜が「1」、月曜が「2」・・・となる。曜日を判定する式はエレガントでないが、日付の曜日を間違いなく表示してくれるだろう。授業日データは日曜と土曜を「2」、月曜から金曜を「1」としておく。

   
   
  日付データができたら、エクセルのファイル形式で適当な名前で保存しておく。そしてアクセスからデータのインポートを行い、「授業日」テーブルへデータをインポートする。
   
授業日データのインポート
   
 

Access 2003で「ファイル」メニューから「外部データの取り込み」−「インポート」をクリックする。ファイルを開くダイアログで「ファイルの種類」を「Microsoft Excel(*.xls)」にして、保存したエクセルファイルを選択し「インポート」ボタンをクリックする。

   
 
 

「ワークシートインポートウィザード」が起動するので、指示に従ってワークシートを選択し、先頭行をフィールド名とし、保存するテーブルを「授業日」に設定する。

   
   
 

「完了」ボタンをクリックして「ワークシートインポートウィザード」を終了すると、「授業日」テーブルに一年間の日付データがインポートされる。

このときインポートウィザードが正常に行われない場合は、エクセルのシートに書いた表題が、アクセスのテーブルに設定したフィールド名と違っていないか確認する。表題がフィールド名と同じでないと、データの対応付けができないのでエラーになるのだ。

   
   
このページのまとめ
   
 

このページでは、処理に必要な基本のテーブルをAccessで作成することを説明した。日付データを作成するには、Excelを使い、Accessのインポートウィザードを使うと合理的にできる。次はここで作ったAccessデータベースファイルを、ネットワーク上の共有フォルダに配置することを説明する。

なお、このページでは、特に断りのない限り、Access2003とInfoPath2003を使って説明している。また今回は日付データを作成するために、Excel 2003を使った。 クライアントコンピュータのOSはWindowsXPで、サーバは使っていない。

       
  mailto:ymatsumoto@hyogo-c.ed.jp :←ここをクリックして筆者にメールを送る
       
 
matsumotoyoshio.com 2007/11/22