パソコン活用研究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活用研究目次