前に書いた、Hello World程度のデータベースのための準備として、思ったことをメモするコーナーです。
■データベースがないと、こまること
プログラムで処理するときには、ファイルの中にデータをいれてました(もちろん、今も入れるけど)
そーすると、極端に言うと、プログラムの数だけ、ファイルが存在しちゃうことになっちゃいます。そして、ひとつのもの、たとえば、ウィリアムのいたずら納豆という商品データが、各プログラムのファイルに書き出されてしまい、データが散在してしまうという結果になってしまいます。そーすると、おかしなことが起きる危険があります。。。。。
具体的に話しましょう。
たとえばウィリアムのいたずらが商売を始めたとします。
ウィリアムのいたずらは、発注票、受注票、納品書、など、さまざまなものを、コンピューター化していったとします。それぞれのプログラムで、売り物の商品、まあ、ここで、ウィリアムのいたずら納豆としましょうか、そのデータを持っています。
ここで、ウィリアムのいたずら納豆という名前は面倒なので、納豆2.0という名前にしたとします。そーすると
発注票のプログラムの商品データを納豆2.0に直して
受注票のプログラムの商品データを納豆2.0に直して
納品書のプログラムの商品データを納豆2.0に直して
って各プログラムのファイルを直さないといけません。
もし、納品書を直し損ねると、納品書では、ウィリアムのいたずら納豆なのに、受注票は納豆2.0、どっちやねん!となってしまいます。
これ、名前ならいいけど、金額なんかで直しそこねると、大変です。
損しちゃいます。
■データベースが出てきたわけ
では、どうしてこんな問題が起こったのか?っていうと、実社会では、ウィリアムのいたずら納豆というのは、1つの商品なのに、それをプログラムでいくつもデータをコピーして、それぞれにファイルの中にもっているからいけないのです。
実社会とまったく同じようなモデルをつくって、そこにデータをいれて、各プログラムは、そのモデルにアクセスして、値を取得すれば、だいじょーぶ。
<<自分へのメモ:ここで、納豆と上記3つのプログラムで例を示す>>
■3層スキーマアーキテクチャとは?
3層スキーマアーキテクチャは、これ(<<自分へのメモ>>これをさすものを書く)を実現したものです。
まず、世の中を、「概念スキーマ」というカタチでモデル化します。
そして、その概念スキーマをデータベースに落とすものを作ります。
これが内部スキーマです。
そして、データベースの中にあるものを、プログラムで使えるようにします。
このしくみが、外部スキーマです。
まず、概念スキーマの作るにはデータからエンティティというものを出してくるわけなのですが、それは、正規化という考え方に基づいて出してくる方法と、佐藤正美氏がT字型ER図を作成する場合の考え方とがあります。これについては、以降説明します(<<自分へのメモ:ここで正規化の説明につながる>>)。
内部スキーマですがデータベースの細かいことは、DBMSでやってくれるので、あとは、そいつに、概念スキーマをデータベースに落とし込むように、エンティティを意味するテーブルや検索用のインデックスを作成するように指示することになります。
外部スキーマは、プログラムが必要なときに、データベースからデータを取ってきて受け渡すものを記述すればいいわけですが(Viewと呼ばれる)、この書き方は、データベースによってきまっています。
なお、3層スキーマの3層とは、上記の概念スキーマ、内部スキーマ、外部スキーマの3層のことをさします。
こんかい、おもいついたことは、ここまで