個人の目次へ - 全体の目次へ
前の章へ - 次の章へ

第二章 データベースについて

2-1. データベースとは何か?

1:DBMS

データベースは、DBMS(DataBase Management System)で管理されている。DBMSは、プログラマが行なうべきであるデータベース本体への操作を引き受けてくれるものである。つまり、プログラマがデータベース内のデータがどのように蓄積されているかを知らなくても、データベースの操作ができるのである。DBMSには、次のような機能がある。

  1. データベースの検索・操作
  2. キーやインデックス(目次のようなもの)を利用した高速検索や、データの追加、更新、削除などを行なう。

  3. データベースの一貫性制御
  4. データベース内のデータについて、キーやデータ型(文字型、実数型など)、データの範囲などをチェックする。

  5. 排他制御
  6. データベースに対し、同時に複数のアクセスが行なわれても、不整合が生じないようにアクセス制御を行なう。

  7. データベースへのアクセス
  8. プログラムからデータベースを操作するためのインターフェイス(APIなど)を提供する。プログラムはAPIを介してDBMSを利用する。

2:DBE

INPRISE社のDBMSはDBE(Borland Database Engine)である。Delphiでのデータベース操作は、多くの場合、BDEを通して行なわれる。DBEの位置付けは図のようになっている。

Delphiでは、ほとんどのプログラムはデータアクセスコンポーネントを使用するので、直接BDEを使うことは少ない。データアクセスコンポーネントは、BDEのAPIを呼び出すことでデータベースへの操作を行なう。

ここで書かれている事は直接目で見える事ではないが、内部でこういうことが行われているという事である。

(この第2章・1は大谷彰 2000年卒業論文から引用しています。)

2-2. 本システムにおけるデータベース構造について

序論でも述べている様に、データベース作成に関してはDatabase Desktopを使用した。

テーブルはPARADOX形式で作成した。ちなみにテーブルの作成方法は(ファイル〜新規作成〜テーブル)である。

・各テーブルについての説明

今回のシステムでは

  1. 科目情報の登録されているsubjecttable
  2. 学生情報の登録されているstudenttable
  3. 履修済み科目の登録されているrishuzumitable
  4. 学生の履修情報が登録されているrishutable

の4つのテーブルで構成されている。

科目情報の登録されているsubjecttable

履修済み科目の登録されているrishuzumitable

このテーブルの例でいえば、1のs98028、s0001と言うのはs98028の生徒はすでにコードs0001の科目を取得済みという事を表している。よって次の学年時の履修登録の際にはこの科目は選択項目から除外される。

学生の履修情報が登録されているrishutable

このテーブルは、その年の学生の履修状況が登録されるテーブルである。

登録ボタンを押した際に、履修した科目のコードが、その科目と対応する曜日のレコードに書きこまれるようになっている。なお、上の図で同じ学籍番号が2つ有り、1,2と数字が振られているのは1は前期、2は後期を表している。つまり上の図で言うとs99028の学生は、前期の月曜1校目にA0006の科目を履修しており、後期の月曜1校目には何も履修していないと言う事になる。

今回のシステム作成においては、アクティブフォーム上にテーブルやデータソースコンポーネントを張るのではなく、データモジュール上に各コンポーネントを配置している。基本的にどちらでも問題ないのだが、こちらの方法のほうが各コンポーネントの状態を簡単に把握しやすいと言う利点がある。データモジュールの作成方法は(ファイル〜新規作成〜データモジュール)である。

3・本システムにおける各テーブルの関連付け

いくらテーブルを用意してもそれぞれのテーブルの間でデータの行き来がなければ意味がない。

各テーブルの関連はこのようになっている。

(*)矢印は双方向です。

最初の個人認証が終わった段階でその学生のRISHU, RISHU_ZUMIのテーブルが開く。

そして履修済みテーブルの内容により、選択科目に制限がかかる。科目を選び履修ボタンを押し、エラーがなければそのまま履修テーブルに学籍番号が登録され、サブジェクトテーブルの中で、実際に学生が選択した科目のコードがその科目のHOUR_WEEK_SEMに対応した履修テーブルの曜日レコードに書きこまれる。