web-dev-qa-db-ja.com

スキーマとテーブルとデータベースの違いは何ですか?

これはおそらくn00blike(またはさらに悪い)質問です。しかし、私は常にデータベースのテーブル定義としてスキーマを見てきました。これは間違っているか、完全に正しくありません。データベースコースのことはあまり覚えていません。

136
anbanm

スキーマデータベーステーブル::フロアプラン部屋

219
MusiGenesis

リレーションスキーマは、テーブルの論理的な定義です。テーブルの名前、各列の名前とタイプを定義します。それは計画や青写真のようなものです。 データベーススキーマは、データベース全体の関係スキーマのコレクションです。

tableは、一連の行(別名「タプル」)を持つ構造で、各行にはスキーマで定義された属性があります。テーブルには、特定の列の値を検索するのに役立つインデックスが付いている場合もあります。

データベースは、正式にはデータのコレクションです。このコンテキストでは、データベースはテーブルのコレクションになります。 DBMS(データベース管理システム)は、データベースを管理および実行するソフトウェア(MySQL、SQL Server、Oracleなど)です。

111
Ian Varley

簡単に言えば、スキーマはデータベース全体の定義であるため、テーブル、ビュー、ストアドプロシージャ、インデックス、プライマリキー、外部キーなどが含まれます。

16
Graeme Perrow

この特定の投稿は、Oracleのみに関連することが示されており、別のDBのコンテキストではスキーマの定義が変更されます。

たぶんグーグルアップするのはちょっとしたことですが、FYIの用語は定義が異なるようです。これは最も厄介なことです:)

Oracleでは、データベースはデータベースです。あなたの頭の中では、これをデータファイルとREDOログ、およびデータベース自体のディスク上の実際の物理的な存在(つまり、インスタンスではない)と考えてください

スキーマは事実上ユーザーです。より具体的には、ユーザーが所有する一連のテーブル/プロシージャ/インデックスなどです。別のユーザーは異なるスキーマ(自分が所有するテーブル)を持っていますが、ユーザーは選択した特権を持っているスキーマも表示できます。したがって、データベースは数百のスキーマで構成され、各スキーマは数百のテーブルで構成されます。同じデータベースにある異なるスキーマに同じ名前のテーブルを含めることができます。

テーブルは、データを含む行と列のセットであり、スキーマに含まれるテーブルです。

たとえば、SQL Serverでは定義が異なる場合があります。私はこれを知りません。

11
Robert

スキーマは、OOPの世界で見られるように、親オブジェクトのように振る舞います。そのため、データベース自体ではありません。多分 このリンク は便利です。

しかし、MySQLでは、この2つは同等です。キーワードDATABASEまたはDATABASESは、表示される場合はいつでもSCHEMAまたはSCHEMASに置き換えることができます。例:

  • CREATE DATABASE <=> CREATE SCHEMA
  • データベースの表示<=>スキーマの表示

MySQLのドキュメント

スキーマとデータベースの用語はDBMSに依存します。

Tableは、垂直列(名前で識別される)と水平行のモデルを使用して編成されたデータ要素(値)のセットです。データベースには、1つ以上(通常)Tablesが含まれます。そして、これらのテーブルにデータを保存します。テーブルは互いに関連している場合があります( こちらを参照 )。

10
earthdan

スキーマの詳細:

SQL 2005では、スキーマはオブジェクトをグループ化する方法です。オブジェクトを入れることができるコンテナです。人々はこのオブジェクトを所有できます。スキーマに対する権限を付与できます。

2000年には、スキーマはユーザーと同等でした。今では無料で壊れており、非常に便利です。特定のスキーマですべてのユーザープロシージャをスローし、別のスキーマで管理プロシージャをスローできます。 EXECUTEを適切なユーザー/ロールに付与すると、特定の手順でEXECUTEを付与できます。いいね.

ドット表記は次のようになります。

Server.Database.Schema.Object

または

myserver01.Adventureworks.Accounting.Beans

2
Sam

Schemaは、論理構造も含むデータベースオブジェクトのコレクションです。それを所有するユーザーの名前があります。 databaseには、任意の数のスキーマを含めることができます。データベースの1つのテーブルは、同じ名前の2つの異なるスキーマに表示できます。ユーザーは、選択権限が割り当てられているスキーマを表示できます。

2
Iswarya

上記の回答のいくつかとは反対に、それぞれの経験に基づいた私の理解は次のとおりです。

  • MySQL:database/schema :: table
  • SQL Server:database :: (schema/namespace ::) table
  • Oracle:database/schema/user :: (tablespace ::) table

Oracleで表領域がオプションであるかどうかを修正してください。それを使用したことを覚えてから長い時間が経ちました。

1

MusiGenesisが非常にうまく言っているように、ほとんどのデータベースで:

スキーマ:データベース:テーブル::間取り図:家:部屋

しかし、Oracleでは次のことを考えるのが簡単かもしれません。

スキーマ:データベース:テーブル::所有者:家:部屋

1
cmrust

Oracle Schemaでは、1つのデータベースの下に1人のユーザーがいます。たとえば、scottはデータベースorclの1つのスキーマです。 1つのデータベースには、scottのような多くのスキーマがあります

1
prasadj

データベーススキーマは、テーブル、ビュー、ストアドプロシージャなどのオブジェクトを論理的にグループ化する方法です。スキーマをオブジェクトのコンテナと考えてください。また、テーブルは行と列のコレクションです。すべてのテーブルの組み合わせにより、dbが作成されます。

0
vivek chandel

スキーマは、データベース全体の計画ではありません。これは、データベース内のオブジェクトのサブセット(テーブルなど)のプラン/コンテナです。

これは、1つのデータベース内に複数のオブジェクト(テーブルなど)を含めることができ、それらは必ずしも同じ機能カテゴリに分類されないということです。したがって、それらをさまざまなスキーマの下でグループ化し、さまざまなユーザーアクセス許可を与えることができます。

それは、複数のスキーマの下で1つのテーブルを使用できるかどうかわかりません。 Management Studio UIには、スキーマをテーブルに割り当てるためのドロップダウンが表示されるため、1つのスキーマのみを選択できます。 TSQLでそれを行うと、異なるオブジェクトIDで2つ(または複数)の異なるオブジェクトが作成される可能性があります。

0
Gadam

スキーマにはデータベースが含まれます。

データベースはスキーマの一部です。

したがって、スキーマ>データベース。

スキーマには、ビュー、ストアドプロシージャ、データベース、トリガーなどが含まれます。

0
Rafael Lopes