TOP設計・移行・活用> エンタープライズがXMLにもたらしたもの
エンジニアの視点から活用するXMLDB
エンジニアの視点から活用するXMLデータベース

第2回:リレーショナルデータベースとXMLデータベースの設計の違い
著者:メタジトリー  丸山 則夫   2006/3/14
前のページ  1  2  3

RDBの苦手な部分に柔軟に対応できるXMLデータベース

   様々な場面で変化の多い現在において、全体の法則をあらかじめ決めるのは困難です。つまりRDBの特性からすると、苦手なものが沢山あるのです。

   その苦手なものに対して、RDBで扱う場合は「その他属性」を設けて、「電話の色、パソコンの色」などと押し込む方法で対処します。しかしこのようにすると、利用する時に問題がでてきます。

   もし色で検索したり、色を格納したりする時に例外項目の処理は様々なものが混在して入るものですから、扱いにくいものとなります。扱いやすくするためには、アプリケーションのロジックで対応しなければなりませんので、複雑になっていまします。しかし、それに対してXMLの場合はタグを追加すればよいのです。

   今まで色を扱わない構造の中に色というものがでてきた時、色を扱うものがでてきたのなら、全体構造の変更するのではなく、その部分はタグを追加すればよういというものです。

   この気楽さがXMLにはあります。

   繰り返しますが、単一商品の電子カタログをRDBで扱う時に問題は少ないですが、様々な商品を扱い、その内容が予定外に変わるものはRDBに向きません。

   XMLデータベースに着目すべき理由がここにあります。

   これから、XMLデータベースの構築技術を詳細から全体へ、属性の定義から構造の設計へ、そしてシステム全体の話へとボトムアップ的に解説をしていきます(特にXMLデータベースが得意なものを中心に選んでいます)。


要素および属性の決める

   まずはデータ項目からはじめます。ある商品の商品IDがa100で金額が1000円とします。筆者がこれをXMLで記述すると次のようになります。

<商品 商品ID="a100">
      <商品名 言語="日本語">○○○○○</商品名>
      <値段 単位="円">1000< /値段>
      …
</商品>

   また、以下の表現でも可能です。

<商品>
 <商品ID>a100" </商品ID>
 <言語>日本語</言語>
 <商品名>○○○○○</商品名>
 <値段>1000</値段>
 <単位>円</値段>
       …
</商品>

   どちらの記述が好ましいかといいますと、前者ではないでしょうか。それは、「金額と単位」「名称と言語」は対で扱うものであるからです。XMLでは、これをアトリビュート表現と(タグの中で書く形式)とエレメント表現(タグの間に書く形式)の組み合わせで素直に表現できます。

   それに対してRDBの表形式ではどうでしょうか。RDBは2次元の表現ですので、表1のようになります(金額と単位、言語と商品名を吐き出すことも考えられますが、そこまで徹底した正規化はテーブル数が膨大になり、また操作が面倒になるので、普通は行いません)。

商品ID 言語 商品名 値段 単位
A100 日本語 ○○○○○ 1000

表1:RDBでの表形式

   基本形のRDBはテーブル配下のフィールド(カラム)に階層構造を持ち込みません。従って、「商品名と言語」「値段とその単位」の関係は作れないので、その関係はアプリケーション側で意識しなければなりません。


まとめ

   XMLのほうがRDBより属性の定義をより細やかに行えます。多国籍言語の扱いやそれにともなう通貨の扱いなどの処理はXMLが得意とする領域です。少なくとも、アプリケーションとのインターフェースにそのデータをデータベースの構造として扱えますので、XMLデータベース設計を行う場合はその特長をいかす設計を薦めます。

   RDBを使っている場合でも、そのインターフェースをXML対応で行うことで対応が可能ですが、そのための新たな定義は必要です。

前のページ  1  2  3


株式会社メタジトリー 丸山 則夫
著者プロフィール
株式会社メタジトリー  丸山 則夫
株式会社メタジトリー 代表取締役。長年、データ分析およびデータベースの設計、社内統合の情報基盤の整備に従事。 1998年XMLの可能性に着目。電子カタログ、電子ドキュメントなど広範囲な実績をベースに、XMLソリューションのコンセプトをビジネス展開。


INDEX
第2回:リレーショナルデータベースとXMLデータベースの設計の違い
  XMLデータベースに着目
  XMLデータベースと正規化
RDBの苦手な部分に柔軟に対応できるXMLデータベース