web-dev-qa-db-ja.com

データベースとユーザーとスキーマの違い

データベース、ユーザー、スキーマという用語に本当に戸惑っています。誰もが彼らがお互いにどのように違うのか説明できますか?

それらが同じである場合、それらの間の類似点は何ですか?それらをどのように使用しますか?そして、それらをどのように作成しますか?

88
Ravi

Oracleでは、ユーザーとスキーマは基本的に同じものです。ユーザーはデータベースへの接続に使用するアカウントであり、スキーマはそのアカウントに属するオブジェクト(テーブル、ビューなど)のセットであると考えることができます。

詳細と追加のリンクについては、スタックオーバーフローのこの投稿を参照してください: Oracleのユーザーとスキーマの違い?

create user ステートメント。これにより、スキーマも「作成」されます(最初は空です)。このようにスキーマを作成することはできません。ユーザーに関連付けられています。ユーザーが作成されると、管理者はユーザーに特権を付与できます。これにより、テーブルの作成、selectクエリ、insert、およびその他すべての実行が可能になります。

データベースとは、作成したすべてのユーザーとそのデータ(および全体を機能させる事前定義されたシステムユーザー、テーブル、ビューなど)を含むものです。概念ガイドの Oracleデータベースアーキテクチャ のドキュメントを参照してください(実際には、ページ全体を読む価値があります。そのページの上位にあるユーザーとスキーマに関するセクションがあります)。データベースとは、データベースインスタンスとは何か-2つの重要な概念です。

create database ステートメント、Oracleソフトウェアスタックをインストールした後。ただし、 dbca (データベース作成アシスタント)を使用する方が簡単です。

86
Mat

違いを理解するには、この命名法はOracleの誤りであると言っておく必要があると思います。

ERP TRITONと呼ばれる場合、データベースにTRITONという名前を付けたいと思うか、または私の会社がJENNY EXPORTと呼ばれる場合、データベースをJENNYEXPと呼ぶか、またはそのようなものと判断するかもしれません。同じ名前のユーザーは必要ありません。

Oracleでは、テーブルを作成する前にUSERを作成する必要があり、奇妙なことに、このTABLESのコレクションはSCHEMAと呼ばれます。

次に、実際のユーザーを作成し、この例のようにTRITONなどのデータベースを操作するための適切な権限を付与します。ちなみに、SQL開発者を介して接続する場合は、接続に名前を付ける必要があります。

ちょっとイライラしているように思えますが、MS SQL SERVERの命名規則の方が理にかなっており、SQL SERVERよりも前にOracleで作業したことを付け加えることができます。

4
Glauco Guerrero

用語の使い方によると、 時々使用されますUSERSCHEMAは多少似ています。しかし、大きな違いもあります。 USERは、「SCHEMA」がオブジェクトを所有している場合はUSERと呼ばれ、それ以外の場合は「USER」のままになります。 USERが少なくとも1つのオブジェクトを所有すると、上記のすべての定義により、USERSCHEMAと呼ぶことができます。

3
JOHNNIE

データベース。

データベースは、実際にデータが保存されるデータのコレクションです。 DBMSソフトウェアがインストールされたコンピュータに接続され、そのメモリコンポーネント内のデータを操作する物理メモリコンポーネントです。dbmsソフトウェアがインストールされたコンピュータは、サーバーまたはデータベースサーバーと呼ばれます。サーバー(コンピュータ)とデータベース(メモリコンポーネント)は異なりますが、ほとんどの場合、状況に基づいて同じと呼ばれていました。

ユーザーとスキーマ

ユーザーとスキーマの両方の単語は交換可能です。そのため、ほとんどの人はこれらの単語で混乱します。

ユーザー

ユーザーはデータベース(サーバー)に接続するためのアカウントです。 CREATE USER IDENTIFIED BYを使用してユーザーを作成できます。

スキーマ

実際、Oracle Databaseには、データを処理するための論理的および物理的な構造が含まれています。データベース(メモリコンポーネント)内のデータを処理するためのスキーマも論理構造。ユーザー作成時にOracleによって自動的に作成されます。これには、そのスキーマに関連付けられたユーザーによって作成されたすべてのオブジェクトが含まれます。たとえば、santhoshという名前のユーザーを作成した場合、Oracleはsanthoshというスキーマを作成し、Oracleはユーザーsanthoshによって作成されたすべてのオブジェクトをsanthoshスキーマに格納します。

CREATE SCHEMAステートメントを使用してスキーマを作成できますが、Oracleはそのスキーマのユーザーを自動的に作成します。

DROP SCHEMA <name> RESTRICTステートメントを使用してスキーマを削除できますが、スキーマに含まれるオブジェクトを削除することはできないため、スキーマを削除するには空である必要があります。ここで、Wordの制限により、オブジェクトなしでそのスキーマを指定する必要があります。

オブジェクトを含むユーザーをスキーマにドロップしようとする場合、CASCADE Wordを指定する必要があります。これは、Oracleではオブジェクトを含むユーザーを削除できないためです。

DROP USER <name> CASCADE

したがって、Oracleはスキーマ内のオブジェクトを削除してから、ユーザーを自動的に削除します。ビューやプライベートシノニムなど、他のスキーマからこれらのスキーマオブジェクトを参照するオブジェクトは無効な状態になります。

3
SanthoshReddy