データベース設計には概念的な基礎があります。
従来のデータベース設計には、概念、論理、および物理の 3 つのモデルがあります。
概念モデルは要件分析から生まれ、基礎となる主題が発展するか、主題の理解が発展するにつれて発展します。概念モデルは、形式とセマンティクスに関して基本データを突き止めますが、表の構成などの問題は扱いません。
論理モデルは、データのリレーショナル モデルを使用します。これは概念モデルから導き出すことができますが、関係の構成も扱います。ここで正規化やその他の構成の問題が発生します。論理モデルは、テーブルの設計を予測し、アプリケーションが行うクエリと更新も予測します。
物理モデルはリレーションをテーブルとして実装し、実際にデータベースを構築するために必要なインデックス、テーブルスペースなどの他のすべての機能も追加します。これは論理モデルから派生したものですが、データ ボリューム、負荷、パフォーマンス、およびディスク容量がすべて影響します。
これは長くて退屈に思えますが、方法を知っていれば実際には高速です。チームの残りの部分がまだ機能仕様について議論している間、全体は数週間で完了することができます. 非常に小さなプロジェクト (6 つのテーブル、50 列) の場合、鉛筆と紙だけで数日で完了します。大規模なプロジェクトの場合、設計をより自動化し、エラーを起こしにくく、図を簡単に作成できるツールがあります。
しかし、概念モデルが不正確または不完全であり、他の 2 つのモデルとデータベース自体を変更する必要があることに気付いた場合はどうなるでしょうか? そこで、データの独立性が役に立ちます。カプセル化がオブジェクト設計にもたらすのと同じように、データ独立性はデータベース設計に役立ちます。つまり、1 か所の小さな調整がアプリケーション オブジェクト全体に伝播するのを防ぎます。オブジェクトは、使用するデータのみに依存します。
新しいテーブルをスキーマに追加する必要がある場合、アプリケーションが壊れる可能性はほとんどありません。既存のテーブルを変更する必要がある場合でも、古い列のみを使用するクエリでは違いがわかりません。オブジェクトが変更に依存している場合でも、変更されたテーブルに新しい名前を付けて、古いテーブルがまだそこにあるように見せる古い名前でビューを作成できます。
また、優れた DBMS では、物理的なデータの独立性はほぼ完全です。データの再編成、インデックスの追加と削除などを行うことができ、アプリケーションを変更する必要はありません。
つまり、変更管理は、本当に優れた DBMS 製品を使用して見事に行うことができます。残念ながら、DBA やプログラマーの多くは、これらの DBMS 機能が何年も使用されているにもかかわらず、それらの機能を十分に活用する方法を知りません。