データ独立性とは?
簡単に言うと、データベースの問い合わせなどがスキーマなどの構成方法から独立していることを表現する概念です。
適切にデータ独立性をもつように設計されたアーキテクチャにおいてはSQL文を発行する際に内部構造の変化を意識しなくても良い、などの利点が生じます。
これらについて、勉強する必要性が出てきたので、調べた結果をまとめておきます。
3層アーキテクチャ
データベースではデータの独立性を実現するため、3つの層を用意してそこで諸々の変更を吸収させようとする設計が用いられています。
これを3層アーキテクチャと呼び、外部スキーマ、概念スキーマ、内部スキーマの3つに分けて呼んでいます。
-
外部スキーマ
論理的データ独立性を実現するために用いられる。実際のデータベース上では view に相当する概念。 -
概念スキーマ
外部スキーマと区別したい場合に用いられる。データベース上では通常のテーブルに相当する。 -
内部スキーマ
データのストレージへの格納のされ方や、ファイル編成法などを定めた概念。
論理的データ独立性
3層アーキテクチャにおいて、外部スキーマと概念スキーマ間での独立性を実現する概念です。こちらはデータベースの設計に関わり、適切に設計されていないとあとで痛い目をみるところなので、より重要だと思います。
以下に、論理的データ独立性を持つ場合と持たない場合を比較した図を用意しました。論理的データ独立性を持てば、テーブルの修正に際してSQLの修正が必要ないためわざわざ既存の問い合わせ文を書き直す手間を省くことができることがわかると思います。
物理的データ独立性
3層アーキテクチャにおいて、概念スキーマと内部スキーマ間での独立性を実現する概念です。通常、ここはDBMSによって管理されているはずなので、DBを使用する側が意識する必要はないかと思いますが、以下に図にて物理的独立性がある場合と無い場合における比較をしておきます。
参考
データベースの3層抽象化について
データベースで使われるデータ独立性とは
データベースの基礎 [吉川正俊著, オーム社]