回答:
スキーマ:データベース:テーブル::フロアプラン:家:部屋
関係スキーマは、テーブルの論理的な定義である-それは、テーブルの名前が何であるかを定義し、どのような各列の名前とタイプがあります。それは計画や青写真のようなものです。あデータベーススキーマは、データベース全体のためのリレーションスキーマのコレクションです。
あ 表は、スキーマによって定義された属性を持つそれぞれが、行(別名「タプル」)の束を有する構造です。テーブルには、特定の列の値を検索するのに役立つインデックスが付いている場合もあります。
データベースは、正式に、データの任意の集合です。このコンテキストでは、データベースはテーブルのコレクションになります。DBMS(データベース管理システム)が管理し、データベースを実行します(などのMySQL、SQL ServerやOracleなど)のソフトウェアです。
この特定の投稿は、Oracleにのみ関連することが示され、スキーマの定義は別のDBのコンテキストにある場合に変更されます。
たぶんググるだけのちょっとしたことかもしれませんが、FYIの用語はその定義が異なるようです。これは最も厄介なことです:)
Oracleでは、データベースはデータベースです。頭の中でこれをデータファイルとREDOログ、そしてデータベース自体のディスク上の実際の物理的な存在(つまり、インスタンスではない)と考えてください。
スキーマは事実上ユーザーです。より具体的には、ユーザーが所有する一連のテーブル/プロシージャ/インデックスなどです。別のユーザーは別のスキーマ(自分が所有するテーブル)を持っていますが、ユーザーは選択した特権を持っているスキーマを表示することもできます。したがって、データベースは数百のスキーマで構成でき、各スキーマは数百のテーブルで構成できます。同じデータベース内の異なるスキーマに同じ名前のテーブルを作成できます。
テーブルはテーブルであり、データを含む行と列のセットであり、スキーマに含まれています。
たとえば、SQL Serverでは定義が異なる場合があります。私はこれを知りません。
スキーマは、OOPの世界では、親オブジェクトのように動作します。そのため、データベースそのものではありません。多分このリンクは役に立ちます。
しかし、MySQLでは、この2つは同等です。キーワードDATABASEまたはDATABASESは、出現するところはどこでもSCHEMAまたはSCHEMASに置き換えることができます。例:
スキーマとデータベースの用語は、DBMSに依存しています。
A 表と水平方向の行(その名前によって識別される)垂直列のモデルを使用して編成されたデータ要素(値)の集合です。データベースには1つ以上の(通常は)テーブルが含まれます。そして、あなたはこれらのテーブルにデータを保存します。テーブルは相互に関連している可能性があります(ここを参照)。
スキーマの詳細:
SQL 2005では、スキーマはオブジェクトをグループ化する方法です。オブジェクトを入れることができるコンテナです。人々はこのオブジェクトを所有できます。スキーマに対する権限を付与できます。
2000年には、スキーマはユーザーと同等でした。今では無料で壊れており、非常に便利です。すべてのユーザープロシージャを特定のスキーマにスローし、管理プロシージャを別のスキーマにスローすることができます。EXECUTEを適切なユーザー/ロールに付与すると、特定の手順に対するEXECUTEの付与が完了します。いいね。
ドット表記は次のようになります。
Server.Database.Schema.Object
または
myserver01.Adventureworks.Accounting.Beans
上記の回答のいくつかに反して、それぞれの経験に基づく私の理解は次のとおりです。
database/schema :: table
database :: (schema/namespace ::) table
database/schema/user :: (tablespace ::) table
Oracleでテーブルスペースがオプションであるかどうかを修正してください。私がそれらを使用したことを覚えているので、久しぶりです。
データベースには、1つ以上の名前付きスキーマが含まれ、スキーマにはテーブルが含まれます。スキーマには、データ型、関数、演算子など、他の種類の名前付きオブジェクトも含まれています。同じオブジェクト名を異なるスキーマで競合なしに使用できます。たとえば、schema1とmyschemaの両方に、mytableという名前のテーブルを含めることができます。データベースとは異なり、スキーマは厳密に分離されていません。ユーザーは、アクセスする権限がある場合、接続しているデータベース内の任意のスキーマ内のオブジェクトにアクセスできます。
スキーマを使用する理由はいくつかあります。
多くのユーザーが互いに干渉することなく1つのデータベースを使用できるようにするため。
データベースオブジェクトを論理グループに編成して、管理しやすくします。
サードパーティのアプリケーションを別のスキーマに配置して、他のオブジェクトの名前と衝突しないようにすることができます。
スキーマは入れ子にすることができないことを除いて、オペレーティングシステムレベルのディレクトリに似ています。
公式ドキュメントはhttps://www.postgresql.org/docs/9.1/ddl-schemas.htmlを参照でき ます
スキーマはデータベース全体の計画ではありません。これは、データベース内のオブジェクトのサブセット(例:テーブル)のプラン/コンテナです。
つまり、1つのデータベース内に、必ずしも同じ機能カテゴリに分類されない複数のオブジェクト(テーブルなど)を含めることができます。したがって、さまざまなスキーマの下でそれらをグループ化し、さまざまなユーザーアクセス許可を与えることができます。
そうは言っても、1つのテーブルを複数のスキーマの下に置くことができるかどうかはわかりません。Management Studio UIは、スキーマをテーブルに割り当てるためのドロップダウンを提供します。したがって、1つのスキーマのみを選択することができます。TSQLでこれを行うと、異なるオブジェクトIDを持つ2つ(または複数)の異なるオブジェクトが作成される可能性があります。
データベーススキーマは、テーブル、ビュー、ストアドプロシージャなどのオブジェクトを論理的にグループ化する方法です。スキーマをオブジェクトのコンテナと考えてください。そしてテーブルは行と列のコレクションです。すべてのテーブルの組み合わせはdbになります。