このノートでは、データモデル を比べるときのモノサシのひとつとして、 解釈構造比 (interpretation/structure ratio) という データ解釈とデータ構造の優位性の比を考えてみましょう。
わたしたちが接するデータや情報のなかには、データの構造、 つまり、形はわかるけれど、意味がよくつかめないものもあります。 逆に、言葉のように意味は十分にわかるけれど、 その構造をしっかりとらえられていないものもあります。 コンピュータで扱うデータの体制を説明するデータモデルにも、 データ構造とデータ解釈のどちらに注目するかに一定の傾向があります。 そこで、データ解釈がより注目され、データ構造が解釈に従属するような場合、 解釈構造比が高くなるように、
- 解釈構造比 = データ解釈の優位性 / データ構造の優位性
のように定めましょう。 ただし、データ解釈とデータ構造の優位性は、 数値として測定できるようなものではないので、 解釈構造比は、1 より大きいか、ほぼ 1 か、1 より小さいかの 3 つに分類して、定性的に扱います。
解釈構造比の例として、代表的な 3 つのデータモデルをみてみます。
1969 年から 1970 年にかけて登場した 関係モデル は、 関係を使ってデータを計算する体系です。 関係には、述語で記述されたデータ解釈が寄り添っており、 そのデータ解釈に対応するデータ構造は、複数、認められるため、 解釈構造比が 1 より大きくなります。 データ構造がデータ解釈に従属する典型的なデータモデルです。
1974 年から 1975 年にかけて登場した 実体関連モデル は、 世界内に存在すると想定される実体を基本要素として、 さらに実体間にみとめられる関連を追加し、 この実体と関連の複合体としてデータの体系を組織化する方法です。 実体は、世界内の存在に対応するため、世界の存在構造を反映する形で、 データの構造と解釈を同時に与えます。 そのため、解釈構造比がほぼ 1 になります。 (おそらく、理想的には、ちょうど 1 になります)
階層型データモデル は、1960 年代から商用データベースとして 製品化されていましたが、関係モデルとの比較のため、 あとになって理論化されたデータモデルです。 階層構造は、データ構造とアルゴリズムの理論のなかでよく使われ、 汎用データモデルというよりも、特定のデータ処理に向いた考え方です。 階層構造で考えることを前提とするため、データ解釈が適合しないこともあり、 データ構造の優位性の方が高く、解釈構造比は 1 より小さくなっています。
階層型データモデルは、データそのものと、データの処理方法を対にして 扱うときには、よい結果をもたらすことがあります。 階層構造と処理方法を蜜に関連させることで、処理の効率性を高められます。 しかし、ひとつのデータセットに対して、さまざまな処理方法を適用する必要があると、 データ解釈以上の余分な構造をもっていることによって、 構造と処理の不適合が生じやすくなります。 これは、結果として、アプリケーションの変化に対する障壁になり、 実際に、1960 年代後半に問題化しました。
階層型の問題点を解決するために考案された方式が関係モデルです。 関係モデルは、階層型のデータ構造依存性、つまり、 低い解釈構造比を反転させるために、データを基底要素へ分解可能にし、 それらを実行時に組み合わせて、複合データを導出できる統一的な手法を与えました。 これは、新しい種類のハサミとノリが考案されたようなものです。 複合データのデータ解釈は、基底要素のデータ解釈の組み合わせとして導出されるため、 高い解釈構造比をもち、データの意味が理解しやすく、同時に、 アプリケーションの要求に応じて、データを組み直す能力が高まりました。 しかし、特定のデータ構造との結びつきを捨ててしまったため、 処理性能が犠牲になっています。
関係モデルでのデータ解釈の実体は、人間の心のなかにあります。 そのため、自由度が高く、必ずしも、データが言及しようとしている 世界内の存在と対応するわけではありません。 実体関連モデルは、この点を解決しようとして提案された、 世界の存在構造を反映した、より高い水準のデータモデルです。
実体関連モデルは、世界の存在構造に制約された体系になるため、 データの単位と、世界内の実体の境界が一致するという利点がある一方で、 解釈構造比の観点からは、階層型と関係型の中間の性質をもつことになります。 存在論的な枠組みを超えない範囲では理解しやすいデータモデルが得られますが、 実体の境界とその関連が固定されるため、階層型ほどではないにしても、 アプリケーションの変化に対する障壁として機能します。