1. ホーム
  2. database

[解決済み] リレーショナル・データベースにおけるカタログとスキーマの違いは何ですか?

2022-05-13 06:47:23

質問

私は、スキーマはデータベース自体の前にあるアッパーラッパーオブジェクトであると考えていました。 つまり DB.schema.<what_ever_object_name_under_schema> .

さて、カタログの "ラッパー" は、今やかなり混乱しています。なぜカタログが必要なのでしょうか?具体的にどのような目的でカタログを使うべきなのでしょうか。

どのように解決するのか?

関係性の観点から:

カタログは、とりわけ、さまざまなスキーマ(外部、概念、内部)および対応するマッピング(外部/概念、概念/内部)がすべて保管されている場所です。

言い換えれば、カタログには詳細な情報 (以下、 と呼ばれることもあります) が含まれています。 記述子情報 または メタデータ を参照)、システム自身にとって関心のある様々なオブジェクトに関するものです。

たとえば、オプティマイザーは、インデックスと他の物理ストレージ構造に関するカタログ情報、および他の多くの情報を使用して、ユーザー リクエストを実装する方法を決定するのに役立てます。同様に、セキュリティ サブシステムは、ユーザーとセキュリティ制約に関するカタログ情報を使用して、そのような要求を最初に許可するか拒否するかを決定します。

データベースシステム入門、第7版、C.J.Date、p69-70。


SQL標準の観点から:

カタログは、SQL環境におけるスキーマの名前付きコレクションです。1つの SQL-environment はゼロまたはそれ以上のカタログを含んでいます。カタログには という名前のスキーマが含まれます。 INFORMATION_SCHEMA という名前のスキーマが含まれ、そのスキーマには 情報スキーマを含みます。

データベース言語 SQL DIS 9075の改訂案)、p45


SQLの観点から:

カタログはしばしば データベース . ほとんどのSQLデータベースでは、information_schemaビューに問い合わせると、"table_catalog"列の値がデータベースの名前にマッピングされていることがわかります。

を使用しているプラットフォームを見つけた場合、そのプラットフォームは カタログ がこれらの 3 つの定義のどれよりも広い意味で使用されている場合、データベースよりも広いもの、つまりデータベース クラスター、サーバー、またはサーバー クラスターを指している可能性があります。しかし、プラットフォームのドキュメントで簡単に見つかるはずなので、それはちょっと疑わしいです。