データベースオブジェクト指向データベース学習のポイント最近は,オブジェクト指向によるシステム設計が実用化されてきた。Database)が注目されている。これらについて理解するには十分な時間がないので,ここではごく簡単に考え方を示すだけにとどめる。最近のRDBは,OODBの考え方を取り込んで発展してきているので,以下に述べる事項は,OODBだけの特徴だとはいえないようになってきた。Database)の用語を,ファイルやRDBでの用語と対比して示す。列のデータの型は,数値や文字列など一つの値だけを持つ基本データ型だけであるが,属性では,不定長の文字列,画像,音声などのマルチメディア情報も格納できる。objects)型という。複数の値や他のオブジェクト,他のオブジェクトへのリンク(ポインタ)なども格納することができる。このようにOODBでは,多様なデータの型を持つことができるが,それを抽象データ型という。インスタンスレコードや行のように,オブジェクトから1組の属性を取り出したものがインスタンスであるが,RDBは値指向であるから,個々の行を識別するにはそれを構成する項目の値を用いるが,インスタンスを識別するにはオブジェクト識別子という識別子(ビット列)を用いる。オブジェクト指向の概念オブジェクトファイルやテーブルがデータだけの集まりであるのに対して,オブジェクトには,データだけではなく,そのデータを変更したり取り出したりする手続き(メソッドという)も含んでいる。オブジェクトにはデータとプログラムを一緒にしたようなものだともいえる。このように,データとメソッドを一緒にして外部から見えないようにすることをカプセル化という。メッセージそして,オブジェクトを操作するには,メソッドで設定したパラメタを与えることにより行う。それをメッセージという。システムは,図のようにオブジェクトからオブジェクトへメッセージを送るという考え方で構築する。同一のメッセージをオブジェクトに送っても,受取側オブジェクトのメソッドの違いにより,異なる処理が行われるが,それをポリモーフィズム(多相性)という。出荷数量のメッセージを在庫オブジェクトに送れば在庫量を減少させるし,会計オブジェクトに送れば売掛金額が増大する。クラスとインヘリタンスクラスとは,属性の構造やメソッドに共通な要素を持ったオブジェクトの集合(単一のオブジェクトのこともある)である。クラスを定義するときには,上位のクラスで定義した属性やメソッドを下位のクラスで引き継ぐことができる。それをインヘリタンス(継承)という。上記のように,OODBは難解な概念が多く理解しにくいので,RDBとの比較で説明する。多様な機能OODBでは属性の構造が柔軟であることにより,RDBに比較して多様な機能を持っている。単純な事務処理ではRDBでも十分に対処できるが,最近では写真や設計図あるいは音声などのマルチメディア情報も取り扱う必要が出てきた。OODBではそれらを効果的に取り扱うのに適している。製造業での製品と部品の関係を考えよう。自動車1台には,ブレーキなど多くの部品があり,さらにブレーキも歯車など多くの孫部品を持つ。その歯車はブレーキだけでなく多くのところに使われている。ブレーキも歯車も多くの仕入先から仕入れている。仕入先,部品,孫部品の間の関係はM:Nの関係が複雑にからみあっている。RDBでは正規化することが基本であるから,このような複雑な関係をRDBで表現するのは大変であるし,できたとしても,そのテーブルは人間の感覚からみると不自然なものになる。OODBでは,オブジェクトの属性にオブジェクトを持てるなど,複雑な関係を比較的容易に表現できる。それにより,人間の感覚と比較的似通ったオブジェクトを設定することができる。結合処理はコンピュータに負荷のかかる処理であるが,RDBでは正規化されているので,複雑な検索をするには結合が多くなり,処理に非常な時間がかかってしまう。OODBでは,必ずしも正規化する必要がないので,処理が簡単になることもある。データベースの品質保証データベースのなかに誤ったデータが入っていると,それを用いた情報が誤ったものになるので,データベースを更新するときには,更新プログラムで入力データを十分にチェックすることが重要である。ファイルやRDBでは,データとプログラムが独立しているので,データベースを更新するプログラムを自由に作成することができる。それらのプログラムのすべてに厳重な入力チェック機能を持たせることは現実にはかなり困難である。プログラマが知識不足であるとか,チェック処理を書くのが面倒であるとの理由で,厳密なチェックを組み入れないかもしれない。それを回避するには,入力チェック機能の部分をサブルーチンにしておき,データベースを更新するときにはかならずこのサブルーチンを使うように標準化すればよいが,その標準化を守らないプログラムでもデータベースを更新できる。データベースの内部にチェック機能を埋め込んでおき,それ以外ではこのデータベースを更新できないようにするほうがよい。OODBでは,プログラマはカプセル化したメソッドを通してしかデータベースをアクセスできないので,更新メソッドに厳重な入力チェック機能を持たせれば,データベースの品質を維持させることができる。部品化による再利用システムの開発や改訂において,既に作成してあるデータやプログラムを再利用できれば,コスト面でも品質面でも効果が大きい。逆にいえば,システムを構築するときには,個々の要素を後で再利用できるように部品化しておくことが効果的である。正規化したRDBは,データの部品化としての効果は大きいが,処理プログラムの部品化には別途のアプローチが必要である。これに対してOODBは,メソッドを含めたデータを部品化することができるので,好都合である。インヘリタンスにより,既存の部品に追加するとき(たとえば,バスも取り扱うようになったとき),スーパクラス(自動車)で定義したデータやメソッドは継承されるので,サブクラス(バス)に固有のものだけを定義すればよい。スーパクラスの定義が不適切なときは,その部分だけ再定義すればよい。このような改訂をしても,他のクラス(乗用車やトラック)については何ら影響を与えない。]化といい,そのような単位をオブジェクトという。]を渡すことによって処理を行う。]化による再利用があげられる。スーパークラス第2問RDBでは困難なことがOODBでは比較的容易にモデル化できる事項にはどのようなものがあるだろうか。それを活用するのには,どのような分野が適しているだろうか。オブジェクト指向アプローチは広く普及してきたが,オブジェクト指向データベースはあまり普及していない。その理由は何だろうか。