パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

データマネジャーでmdbデータベース作成@

Visual Basic4にデータマネジャーというアプリが付属でついています。
この付属アプリでmdbデータベースを作ることができます。この付属アプリはACCESSから
mdbデータベース作成のための機能だけを切り取ってきたようなアプリです。
(VB6には少し進化したビジュアルデータマネジャー VisDataが付属しています)

このデータマネジャーでmdbデータベースを作ってみたり、そのmdbデータベースをVisual Basicから
扱ってみたりといったことをやってみます。

今回は、肩慣らしとしてリレーショナルデータベースの基礎的なところを整理しておきます。

1 mdbデータベースについて
(1) mdbについて
mdbにも以下の通りいろいろバージョンがあります。(基本的には上位互換性があります)
クライアントアプリケーションとデータベースエンジン(*)のバージョン対応状況は以下の通りです。
VB4に付属しているデータマネージャーはmdb(Jet3.0)までの対応なので
データマネジャーではACCESS97以降で作成したmdbはアクセスできません。
上位互換性があるので、データマネジャーで作成したmdbを新しい(上位バージョン)ACCESSで
アクセスすることはできます。

クライアントアプリケーション データベースエンジン
ACCESS2.0 Jet2.0
ACCESS95/VB4 Jet3.0
ACCESS97/VB6 Jet3.5
ACCESS2000 Jet4.0
ACCESS2002/2003 Jet4.0
ACCESS2007 ACE12.0

(*)クライアントアプリケーションとデータベースエンジン
mdbデータベースにアクセスするのは何もACCESSである必要はなく、プログラムを組めばVisial Basicでも
あるいはEXCELでも、他の言語で作ったアプリケーションでも構いません。mdbにアクセスして表示するフロント側
がクライアントアプリケーションというわけです。
クライアントアプリケーションからの要求を受けて、mdbの操作を行うのがデータベースエンジンであり、
mdbの場合はJetエンジンというデータベースエンジンがこれを行います。

mdbと言うとACCESS専用のデータベースのように思われがちですが、あるいはACCESSというとそれ自体が
データベースの意味として使われたりしますが、厳密には上記の通りです。
(経理部あたりでは、ごく当たり前に「このデータベースはACCESSでしょ」とか言ったりしますよね。
情シスあたりの人はそれを聞くと、眉のあたりにかすかに”ちょっと違うんだけどなあ”みたいな表情
を浮かべたりしますが、それは上記のような事情によるものです。)

*たまに、ACCESSは正しくはデータベースではなく・・云々する人もいたりしますが
まあ、それはそれで皆に通用しているのでそんなことに構わなくて、いいんですけどね。


実際は、クライアントアプリケーションからデータベースエンジンを経由してデータベースにアクセスする方法は
もう少し複雑で、例えばmdbにアクセスする場合は下の表のような感じになりますが、ここでは詳細には触れません。

クライアントアプリケーション(フロントエンド)
言語(スクリプト言語)
ACCESS
ACCESS VBA
Visual Basic
Visual Basic
EXCEL
EXCEL VBA
Internet Explorer
VB Script
ミドルウェア @DAO      AADO              
            |
        OLE DB Provider
DBエンジン Jetエンジン
データベースファイル
(データソース)
MDB

(余談)
Visual Basic6.0まではADOを使うためにデータコントロールという簡単で便利なコントロールがありました。
データコントロールを使うと簡単にデータベースにアクセスするプログラムが作れました。(データコントロールの
プロパティを設定すればコード書く必要なし)


2 リレーショナルデータベースについて
(1)リレーショナルデータベース
例えば、会社名、部署名と氏名からなる取引先をひとつの表(テーブル)で管理すると以下のようになります。

会社名 部署 氏名
ABC会社 総務 田中 太郎
ABC会社 営業 佐藤 次郎
XYZ会社 経理 加藤 花子
XYZ会社 総務 山本 恵子

これは、これで特に問題ないようですが、例えば、ABC会社の会社名が凸凹会社に変わったとしましょう。
そうすると、田中さんと佐藤さんの会社名を変更することになります。
ここでは2名だけなので、変更し忘れ、会社名を誤記という事故はおこりそうにもありませんが、
何千件ものデータがあると、ABC会社を全て見つけて凸凹会社に変更するのはかなり大変です。いろいろミスもでてくるでしょう。

これを以下のように氏名テーブル(表)と会社名テーブル(表)に分割し、それぞれのテーブル間に関係(リレーション)をつけます。
ここでは、以下のように「会社ID」を使って両方のテーブルを関係付けることにします。これでリレーショナルデータベースになります。

氏名テーブル 会社名テーブル
会社ID 部署 氏名 会社ID 会社名
1 総務 田中 太郎 1 ABC会社
1 営業 佐藤 次郎 2 XYZ会社
2 経理 加藤 花子
2 総務 山本 恵子

こうしておくと、会社名テーブルのABC会社を凸凹会社に変更するだけなので、一箇所の変更ですみます。
これがリレーショナルデータベースを使う大きなメリットです。

氏名テーブル 会社名テーブル
会社ID 部署 氏名 会社ID 会社名
1 総務 田中 太郎 1 凸凹会社
1 営業 佐藤 次郎 2 XYZ会社
2 経理 加藤 花子
2 総務 山本 恵子


(2) データベース用語
リレーショナルデータベース用語にはきまった呼び方の用語があり、これに慣れておかないと
他人(情報システム部?)の言っていることが理解できません。

まず表のことをテーブルと呼びます。上記の例では氏名テーブルや会社名テーブルです。

下記のように1行のデータのまとまりをレコードと呼びます。(「行」や「ロウ(row)と呼ぶこともあります)
そして、部署名や氏名などの項目をフィールドと呼びます。(「列」や「カラム(column)」とよぶこともあります)


また、キーというのも理解しておく必要があります。
上記の2つのテーブルは、会社IDというフィールドでテーブルとテーブルが関係づけられています。
このような会社IDのようなフィールドを「キー(key)」と呼びます。
このようなキーのうち、会社名テーブルの会社IDのように、そのテーブルにおいて各フィールド毎に固有(ユニーク)
な値をもつキーは「主キー(primary key)」と呼ばれます。
氏名テーブルにある会社IDのようなキーは「外部キー」と呼ばれ、このように外部キーと他のテーブルの主キーが
関連づけられることにより、テーブルとテーブルが関連付けられます。

このようなテーブル間のリレーションシップ(関連付け)には「1対1」「1対多(多対1)」「多対多」があり、
上記の氏名テーブルと会社名テーブルの会社IDは「多対1」の関係になっています。


ということで、今回はデータマネジャーでmdbデータベースを作る前に、ちょっと肩慣らしとして
リレーショナルデータベースの基礎的なところを整理してみました。
次回から実際にデータマネージャーでmdbデータベースを作ってみたいと思います。



TopPage > Visual BasIc&Excel活用研究目次