さまざまなデータベース管理システムがスキーマを定義しています 独自の方法で。これにより、データベース開発者がスキーマとは何かを正確に把握することが困難になる可能性があります。特に、異なるDBMSを切り替える場合はそうです。
この記事では、3つの主要なデータベースシステムで使用される定義について説明します。
MySQL
MySQLのドキュメントでは、概念と物理の両方の観点からスキーマを定義しています。
概念
概念的には、スキーマは、テーブル、テーブル列、列のデータ型、インデックス、外部キーなど、相互に関連するデータベースオブジェクトのセットです。列がテーブルを構成し、外部キーがテーブルと列を参照するなどの理由で、これらのオブジェクトはSQL構文を介して接続されます。理想的には、それらは論理的に接続され、統合されたアプリケーションまたは柔軟なフレームワークの一部として一緒に機能します。たとえば、 information_schema およびperformance_schema データベースは、名前に「スキーマ」を使用して、データベースに含まれるテーブルと列の間の密接な関係を強調しています。
物理的
次に、物理的な観点から、スキーマとデータベースの間に区別がないことが指摘されています。
MySQLでは、物理的にはスキーマ データベースと同義です 。キーワード
SCHEMA
に置き換えることができますDATABASE
の代わりに MySQL SQL構文で、たとえばCREATE SCHEMA
を使用するCREATE DATABASE
の代わりに 。
出典:「MySQL用語集」。 MySQL5.7リファレンスマニュアル。 MySQL。 2016年6月6日取得。
SQL Server
用語集
データベーススキーマ
データベースのテーブル、フィールド、データ型、および主キーと外部キーの名前。
出典:「用語集」。 SQLServer2016テクニカルドキュメント。 MicrosoftDeveloperNetwork。 2016年6月6日取得。
SQLServerの技術記事
データベースオブジェクトスキーマに関するこの記事では、データベースユーザーとスキーマの違いを明確に示しています(これは、以下のOracleがスキーマを定義する方法とは対照的です)。
スキーマは、データベースオブジェクトの分離、管理、および所有権を促進するための別個の名前空間です。
および
データベースユーザーが所有するオブジェクトは、そのユーザーに関連付けられなくなりました。これで、オブジェクトはスキーマ(多くのデータベースオブジェクトを保持できるコンテナ)に属します。
および
この分離は、ユーザーがデータベースに追加される前にオブジェクトとスキーマを作成できることを意味します。また、ユーザーが所有するオブジェクトを特に削除しなくても、ユーザーを削除できることを意味します。
出典:「SQLServerのベストプラクティス–データベースオブジェクトスキーマの実装」。 MicrosoftTechNetの記事。公開日:2008年11月。2016年6月6日取得。
Oracleデータベース
Oracle Databaseのスキーマ・システムは、他のシステムとはかなり異なります。 Oracleのスキーマは、データベースユーザーと非常に密接に関連しています。
スキーマは、データの論理構造またはスキーマオブジェクトのコレクションです。スキーマはデータベースユーザーによって所有されており、そのユーザーと同じ名前を持っています。各ユーザーは単一のスキーマを所有しています。
Oracleはスキーマオブジェクトを区別します および非スキーマオブジェクト 。つまり、一部のデータベースオブジェクトはスキーマに含めることができません。
スキーマオブジェクト
Oracle Databaseでは、スキーマオブジェクト 以下を含めます:
- クラスター
- 制約
- データベースリンク
- データベーストリガー
- 寸法
- 外部プロシージャライブラリ
- インデックス編成のテーブル
- インデックス
- インデックスタイプ
- Javaクラス、Javaリソース、Javaソース
- マテリアライズドビュー
- マテリアライズドビューログ
- マイニングモデル
- オブジェクトテーブル
- オブジェクトタイプ
- オブジェクトビュー
- オペレーター
- パッケージ
- シーケンス
- ストアド関数、ストアドプロシージャ
- 同義語
- テーブル
- ビュー
非スキーマオブジェクト
Oracle Databaseでは、次のオブジェクトは非スキーマオブジェクトです。 :
- コンテキスト
- ディレクトリ
- エディション
- ポイントを復元する
- 役割
- ロールバックセグメント
- テーブルスペース
- ユーザー
出典:「データベースオブジェクト」。 Oracle Database Online Documentation 12cリリース1(12.1)。 Oracleヘルプセンター。 2016年6月6日取得。