回答:
Oracleでは、ユーザーとスキーマは本質的に同じものです。ユーザーはデータベースへの接続に使用するアカウントであり、スキーマはそのアカウントに属するオブジェクト(テーブル、ビューなど)のセットであると考えることができます。
Stack Overflowのこの投稿を参照してください:Oracleのユーザーとスキーマの違いは?詳細および追加のリンクについては。
create user
ステートメントを使用してユーザーを作成します。これにより、スキーマも「作成」されます(最初は空です)-スキーマ自体を作成することはできません。ユーザーに関連付けられています。ユーザーが作成されると、管理者はユーザーに権限を付与できます。これにより、テーブルの作成、select
クエリの実行insert
、およびその他すべてが可能になります。
データベースは、作成したすべてのユーザーとそのデータ(およびすべてを機能させる定義済みのシステムユーザー、テーブル、ビューなどの束)を含むものです。概念ガイドのOracle Database Architectureのドキュメントを参照してください(実際、ページ全体を読む価値があります。そのページの上位にはユーザーとスキーマに関するセクションがあります)。データベースとは何か、そしてデータベースインスタンスは-2つの重要な概念です。
create database
Oracleソフトウェアスタックをインストールしたら、ステートメントを使用してデータベースを作成できます。ただし、dbca
(データベース作成アシスタント)を使用する方が簡単に開始できます。
用語の使用方法によると、a USER
とa SCHEMA
は多少似ています。しかし、大きな違いもあります。USER
A呼び出すことができるSCHEMA
「場合USER
」、それ以外の場合は唯一残る、任意のオブジェクトを所有しています「USER
」。がUSER
少なくとも1つのオブジェクトを所有すると、上記のすべての定義により...はUSER
として呼び出すことができますSCHEMA
。
違いを理解し始めるために、この命名法はOracleの誤りであると言い始めなければならないと思います。
TRITONというERPがある場合は、データベースにTRITONという名前を付けるか、または私の会社がJENNY EXPORTという名前にすると、データベースにJENNYEXPまたはそのような名前を付けることができ、同じ名前のユーザーは不要だと思います。
Oracleでは、テーブルを作成する前にUSERを作成する必要があり、このTABLESのコレクションはSCHEMAと呼ばれています。
次に、実際のユーザーを作成し、この例のようにTRITONなどのデータベースを操作する適切な権限を付与します。ところで、SQL DEVELOPERを介して接続する場合は、接続に名前を付ける必要があります。
イライラしているように聞こえますが、MS SQL SERVERの命名規則のほうが理にかなっており、SQL SERVERよりも早くOracleで作業したことを付け加えることができます。
データベースは、実際にはデータが保存されるデータのコレクションです。DBMSソフトウェアがインストールされたコンピューターに接続され、そのメモリコンポーネントのデータを操作する物理メモリコンポーネント。dbmsソフトウェアがインストールされたコンピューターはサーバーまたはデータベースサーバーと呼ばれます。サーバー(コンピューター)とデータベース(メモリーコンポーネント)は異なりますが、ほとんどの場合、状況に応じて同じと呼ばれます。
ユーザーとスキーマの両方の単語は交換可能であるため、ほとんどの人はこれらの単語で混乱します。
ユーザーはデータベース(サーバー)に接続するためのアカウントです。CREATE USER IDENTIFIED BYを使用してユーザーを作成できます。
実際、Oracle Databaseには、データを処理するための論理構造と物理構造が含まれています。データベース(メモリコンポーネント)内のデータを処理するためのスキーマも論理構造。ユーザーが作成すると、Oracleによって自動的に作成されます。そのスキーマに関連付けられたユーザーが作成したすべてのオブジェクトが含まれます。たとえば、名前を持つユーザーを作成した場合santhosh
、oracleというスキーマがsanthosh
作成され、Oracleはユーザーsanthosh
が作成したすべてのオブジェクトをスキーマに保存しsanthosh
ます。
このCREATE SCHEMA
ステートメントを使用してスキーマを作成できますが、Oracleはそのスキーマのユーザーを自動的に作成します。
DROP SCHEMA <name> RESTRICT
ステートメントを使用してスキーマを削除できますが、スキーマに含まれるオブジェクトを削除できないため、スキーマを削除するには空である必要があります。ここで、制限する単語は、そのスキーマをオブジェクトなしで指定することを強制します。
スキーマにオブジェクトを含むユーザーを削除しようとする場合、CASCADE
word を指定する必要があります。Oracleではオブジェクトを含むユーザーを削除できないためです。
DROP USER <name> CASCADE
Oracleはスキーマ内のオブジェクトを削除し、ユーザーを自動的に削除します。ビューやプライベートシノニムなどの他のスキーマからこれらのスキーマオブジェクトを参照するオブジェクトは無効な状態になります。
上記のステートメントはOracleの実装に適用されますが、SQL ServerやPostgreSQLを含む他のデータベースは、スキーマを単なる名前空間、つまりオブジェクトをグループ化する方法として使用します。たとえば、ステージングスキーマはステージングデータで使用されるすべてのオブジェクトをグループ化し、アカウンティングスキーマはアカウンティングに関連するすべてのオブジェクトをグループ化できます。
使用しているデータベース管理システムの種類に基づいていない概念に従って説明しています。
概念的には、データベース:データの山であり、ほとんどが管理されていない関連データまたは非関連データです。
スキーマ:スキーマとは、管理されていない関連/非関連データを正式に構造化して、スキーマによって提供される正式な定義を理解する管理システムで管理できるようにすることです。スキーマは、基本的に概要を提供するためのスキームです。たとえば、XMLを作成するスキーマを定義するXSDがあります。RDBMS を作成するスキームを基本的に定義するCoddルールに基づく独自のスキーマを定義するRDBMSがあります。
今、あなたがもっと知りたいなら、このリンクを参照してください。
ユーザーは、スキーマで指定された形式言語を使用してデータベースにアクセスします