はじめに

こんにちは.じふ ことfujii_toshikiと申します.素人のくせにデータベースをいじろうと日々悪戦苦闘しています.普段はEXCEL WORLDという会員制のSNSに出入りしています.

なにぶん素人ですのであまり高度なことは分かりませんが,このブログでは気の向くまま思いついたデータベースに関するメモ程度の覚書を書いていきます.

初めてプログラムを書いたのはEXCEL VBAでした.オブジェクト,プロパティ,メソッド.ヘルプにオブジェクトブラウザ,掲示板に首っ引きの毎日.常連さんは気長に答えてくれました.

しかしやがて,疑問が芽生えます.自分が作りたいのはデータベースに違いない.Excelは入口としては良かったけれど,本当はデータベースソフトを使った方がいいんじゃないか.クラスモジュールで構造体を作って様々なプロパティをくっつけたはいいけれど,そこで躓いたのが関数従属性の処理でした.クラスモジュールのあるプロパティが更新されたら他のプロパティもそれに応じて更新されるそのイベントを,どうやってフックすればいいのだろう.フォームモジュールに関数を書くのは邪道だと思ったのです.クラスモジュール自身に処理させ,フォームはあくまでもインターフェースを提供するに留めるのが正道だろう,と.

今思えばデータとアプリケーションの分離のことだったのでしょう.悲しいかな当時はそれを掲示板でうまく説明できず,一人胸の中にしまい込みました.そしてしばらくVBAから離れました.

訪れた転機が何だったのかよく思い出せません.マイクロソフトのホームページで,Visual Studio 2008プロフェッショナルのアップグレード版が何とか入手できる値段だったのに心が動いたのだと思います.近くのヤマダ電機で注文し,購入しました.

何度もインストールし直しました.何とかインストールが終わり,恐る恐るテーブルを作りました.作っては削除の繰り返し.本は嫌になるほど読みました.Coddの論文もACAMからダウンロードして読みました.セルコの本も眠い目をこすりながら読みました.難しすぎて通読したのはもっと後になってからです.最も愛読したのはMickさんの『達人に学ぶ SQL徹底指南書』です.読まれた方も多いでしょう.この本に出会って,データベースこそ自分が求めていたものだという思いは確信に変わりました.

関係モデル,正規形,SQL.そこに通底する集合指向の考え方はオブジェクト指向VBAとは全く異なる概念でした.プログラムを始めた頃は,世界の全てがプログラムで記述できるように錯覚します.VBAを覚えた頃もそうでした.幸いなことに,オブジェクト指向の考え方がしっかり頭に根付いてしまう前にSQLに触れることが出来ました.

アプリケーション層を記述する言語には流行があるようです.しかしSQLはそれほど流行には影響されません.長く付き合える言語がいい.SQLを選んだのにはそんな打算もありました.関係モデルは数学の集合論と論理学の述語論理という強固な基盤を持っているので,あと100年は使われ続けるだろうなんて言われて,ころっと参ってしまいました.

それはともかく.SQLを使うようになって,ものの見方が少し変わったような気がします.少なくとも,世界をオブジェクトで表現しようとは思わなくなりました.データの構造を考えるようになったのです.粒度をどこまで求めるのか.原子値まで掘り下げて物事を見るようになった気がします.気がつくと,仕事や家での事象を関係モデルに落とし込んでテーブルの設計を考えたりしています.でも,これもプログラムで世界を記述しようとする癖なのかも知れません.

セルコの本に書いてあったと記憶しています.「良い設計のテーブルと悪いコードは,その逆より100倍も良い」とか何とか.言い得て妙だと思います.