Oracle(オラクル)のスキーマってずっとユーザのことだと思っていたのですが違うのでしょうか?

Oracle(オラクル)のスキーマってずっとユーザのことだと思っていたのですが違うのでしょうか?

Oracle13,688閲覧

ベストアンサー

このベストアンサーは投票で選ばれました

0

スキーマとユーザは基本的には異なる物です。スキーマ毎にテーブルが設定出来、ログインはユーザでします。ただし、Oracleの場合はスキーマ名はユーザー名と同じ名前の物しか無くcreate schemaも無い特殊なルールと成っています。

その他の回答(4件)

0

データベースに接続するクライアント→ユーザ データベース内でタスクを行うユーザ→スキーマ なので厳密には異なります。

1

オラクル社の講義で、オラクルの人が、オラクルでは同意と受け取っていいと言っていたので。同じで正解です。

1人がナイス!しています

0

ユーザは名の通りユーザ。スキーマは名前空間のことです。 emp表でも scott.emp と bob.emp は別物として扱われますよね? これはスキーマが異なっているからです。 ただ、Oracleの場合は、スキーマ名=ユーザ名で、別のスキーマにオブジェクトを作成すると、そのオブジェクトはスキーマ名と同じ名前のユーザの所有物になるので、同義と考えてもそれほど問題ありません。 他のDBの場合はユーザ名とスキーマ名は同じとは限りません。なので、スキーマAに存在するオブジェクトがユーザBのものだったりすることもあります。また、スキーマAは存在するけどユーザAは存在しない、またはその逆もあり得ます。(Oracleではあり得ません)

4

ある小学校にて、ソフトウェア開発の得意な先生がいました。 彼は自分の担当するクラス専用の、授業管理システムを開発しました。DBMSにはOracleを採用し、データベースには様々なテーブルを作成。 ・生徒マスタ ・授業情報 ・テスト実施情報 ・etc さて、このシステムが学校内で評判となり、他のクラスでも使いたいという要望が上がりました。どのクラスでも、授業管理の内容は同じなので、システムは使い回し出来そうです…が、問題があります。当該システムは 「彼の担当する、1つのクラスでの使用しか想定していなかった」 のです。すなわち、テーブル「生徒マスタ」には、 ・出席番号 ・名前 ・性別 ・生年月日 ・etc といった項目がありますが、「学年」「クラス」という項目が無かった。これが無いと、学校全体で「生徒マスタ」を共有できません。しかしテーブルの定義を変更して項目を追加するとなると、システム改修への影響も大きくなります。 そこで、最小限のシステム改修で済ませるために、「スキーマ」の仕組みを活用することにしました。 彼は1年3組の担任で、名前はsuzukiだったので、彼の作ったシステムは、デフォルトでスキーマsuzukiに属するテーブルにアクセスするようになっています。そこで、この「スキーマ」を、任意のものに切り替えて使用できるように、システムに手を入れたのです。 1年2組の担任はsato先生。そこで、データベースにスキーマsatoを追加し、そこにも ・生徒マスタ ・授業情報 ・テスト実施情報 ・etc の諸テーブルを作成する。システムは、ログインユーザーがsuzuki先生か、sato先生かによって、アクセス先のスキーマを切り替えるだけで、従来とまったく同じ動きが可能となるわけです。 こうして、当該システムはどのクラスでも使えるようになり、皆は幸せに暮らしましたとさ。

4人がナイス!しています