
データベーススキーマは、通常リレーショナルデータベース管理システム(RDBMS)によってサポートされる形式言語で記述されたデータベースの構造です。「スキーマ」という用語は、データベースがどのように構築されるかの設計図としてのデータの構成を指します(リレーショナルデータベースの場合はデータベーステーブルに分割されます)。データベーススキーマの形式的な定義は、データベースに課される整合性制約と呼ばれる一連の式(文)です。これらの整合性制約は、スキーマの各部分間の互換性を保証します。すべての制約は同じ言語で表現できます。データベースは、データベース言語の実現における構造と考えることができます。[ 1 ]作成された概念スキーマの状態は、明示的なマッピングであるデータベーススキーマに変換されます。これは、データベースで現実世界のエンティティがどのようにモデル化されるかを記述します。
「データベーススキーマは、データベース管理者の想定されるアプリケーションに関する知識に基づいて、データベースに入力できる事実、または想定されるエンドユーザーにとって関心のある事実を指定します。」[ 2 ]データベーススキーマの概念は、述語論理における理論の概念と同じ役割を果たします。この「理論」のモデルは、任意の時点で数学的オブジェクトとして見ることができるデータベースに密接に対応しています。したがって、スキーマには、アプリケーション固有の整合性制約とデータベースの種類固有の制約を表す式を含めることができ、すべて同じデータベース言語で表現されます。 [ 1 ]リレーショナルデータベースでは、スキーマは、テーブル、フィールド、リレーションシップ、ビュー、インデックス、パッケージ、プロシージャ、関数、キュー、トリガー、型、シーケンス、マテリアライズドビュー、シノニム、データベースリンク、ディレクトリ、XMLスキーマ、およびその他の要素を定義します。
データベースは通常、スキーマをデータディクショナリに格納します。スキーマはテキストベースのデータベース言語で定義されますが、この用語はデータベース構造の図解を指す場合にもよく使われます。言い換えれば、スキーマとはデータベース内のオブジェクトを定義するデータベースの構造のことです。
Oracleデータベースシステムでは、「スキーマ」という用語は若干異なる意味合いを持ちます。
以下に挙げる要件は、生成されるスキーマの詳細な構造に影響を与えます。アプリケーションによっては、これらの条件すべてを満たす必要がない場合もありますが、以下の4つの要件が最も理想的です。
Go-travelとOk-flightという2つの旅行データベースを統合するための仲介スキーマが必要だと仮定します。
Go-travel2つの関係があります。
Go-flight(便名、時刻、食事(はい/いいえ)) Go-price(フライト番号、日付、価格) Ok-flight関係は1つだけあります。
Ok-flight(便名、日付、時刻、価格、直行便(はい/いいえ)) Go-travelとOk-flightのスキーマにおける重複情報は、媒介スキーマで表現できる。[ 3 ]
フライト(便名、日付、時刻、料金) Oracle Databasesの文脈では、スキーマオブジェクトは論理的なデータ格納構造です。[ 4 ]
Oracleデータベースは、データベースユーザーごとに個別のスキーマを関連付けます。[ 5 ] スキーマは、スキーマオブジェクトの集合で構成されます。スキーマオブジェクトの例としては、次のものがあります。
一方、スキーマ以外のオブジェクトには以下が含まれる可能性がある。[ 6 ]
スキーマオブジェクトは、その情報を格納するディスク上の物理ファイルと1対1で対応しているわけではありません。ただし、Oracleデータベースは、スキーマオブジェクトをデータベースの表領域内に論理的に格納します。各オブジェクトのデータは、表領域の1つ以上のデータファイルに物理的に格納されます。テーブル、インデックス、クラスタなどの一部のオブジェクトについては、データベース管理者が、 Oracle RDBMSが表領域のデータファイル内でオブジェクトに割り当てるディスク容量を指定できます。
スキーマと表領域の間には必然的な関係はありません。1つの表領域に異なるスキーマのオブジェクトが含まれることもあれば、1つのスキーマのオブジェクトが異なる表領域に存在することもあります。ただし、Oracleデータベースの特異性により、非均質化シーケンス差分のプラットフォーム認識が強制されます。これは仮想化アプリケーションにおける重要な制限要因と考えられています。[ 7 ]
Microsoft SQL Serverでは、すべてのデータベースのデフォルトスキーマは dbo スキーマです。[ 8 ]
データベース スキーマは、スキーマ オブジェクトと呼ばれるデータ構造の論理コンテナです。スキーマ オブジェクトの例としては、テーブルとインデックスがあります。
は、データの論理構造、つまりスキーマ オブジェクトの集合です。スキーマはデータベース ユーザーが所有し、そのユーザーと同じ名前を持ちます。各ユーザーは 1 つのスキーマを所有します。スキーマ オブジェクトは SQL を使用して作成および操作できます。
他の種類のオブジェクトもデータベースに格納され、SQL ステートメントを使用して作成および操作できますが、スキーマには含まれません。これらのオブジェクトには、データベース ユーザー、ロール、コンテキスト、およびディレクトリ オブジェクトが含まれます。