
No.4ベストアンサー
- 回答日時:
> というのは、複数のユーザを作成する場合っていうのと同じ意味ですよね?
はい、合ってます。
>ossan_hiroさんが説明してくれている"hogeスキーマ"に対するユーザを複数作れるって訳ではないと思っていますが認識あっていますでしょうか?
>(というかテーブルごとにユーザは作れないですよね…)
(1) スキーマ用としてhogeユーザを作成します。
(2) このhogeユーザにテーブル(hoge_tbl)を作成します。
(3) hogeスキーマにアクセスするossan_hiroユーザ(ただのユーザ)を作成します。
(4) hogeユーザからossan_hiroに対し「hoge_tblのselectを許可する」という権限を与えます。
(5) これで、ossan_hiroユーザでログインしてhoge_tblを
SELECT * FROM hoge.hoge_tbl
でアクセス可能にします。
この状態はossan_hiroとしてはhoge_tblにはSELECTはできるけど
UPDATE,DELETE,INSERTはできない状況になります。
いちいちhoge.オブジェクト名でアクセスするのが嫌な場合はシノニムを作成してしまえば
SELECT * FROM hoge_tbl
でもアクセス可能になります。
>>スキーマ用のユーザはロックしてログインできないように変更
>というのはどういう意味でしょうか?
ここでいうhogeユーザは所有オブジェクトに対して何でも可能です。
(DML文などが実行可能)
ユーザを削除してしまうと、所有オブジェクトも削除されてしまいます。hogeユーザに接続できないようにしたい場合、アカウントロック&
パスワード無効にすることでhogeユーザでは対象スキーマにアクセスできなくすることができます。
#必要に応じてで良いと思います。
イメージつかめましたか?説明下手ですみません。
No.3
- 回答日時:
スキーマは「ユーザの作成したオブジェクト(テーブルなど)」の集合を指します。
hogeというユーザを作成すると、デフォルトで同じ名前のスキーマ(hogeスキーマ)が作成されます。スキーマのみの作成およびユーザのみを作成というのはできません。(この辺がスキーマ≒ユーザのいわれ?)
その状態からhoge_tblというテーブルを作成すると、hogeスキーマの中にhoge_tblというテーブルが存在する状態になります。
複数のスキーマにする場合は、接続ユーザそれぞれにオブジェクト(表など)を使用する権限を変えたい場合に行います。
(あるいはマシンリソース的な問題で複数のサーバやインスタンスが起動できない等(^^;。)
スキーマ用のユーザはロックしてログインできないように変更し、他の接続用ユーザに対して必要なオブジェクト権限(hoge_tblをUPDATEする等)を付与することで、このAユーザにはhoge_tblはUPDATEできないけどこのBユーザはhoge_tblをUPDATEできる、のような環境を作成できます。
わかりやすい説明ありがとうございます。
ユーザ作成と同時にそのユーザのスキーマがデフォルトで作成されるっていうのはすごく納得できた気がします。
>複数のスキーマにする場合
というのは、複数のユーザを作成する場合っていうのと同じ意味ですよね?
ossan_hiroさんが説明してくれている"hogeスキーマ"に対するユーザを複数作れるって訳ではないと思っていますが認識あっていますでしょうか?
(というかテーブルごとにユーザは作れないですよね…)
>スキーマ用のユーザはロックしてログインできないように変更
というのはどういう意味でしょうか?
すいません、あと少しで判りそうなので宜しくお願いします
No.2
- 回答日時:
概念としては
データベースインスタンス>スキーマ>テーブルなど
という感じです。左ほど大きな概念で右のものを含んでいます。
ユーザとスキーマは密接に関わっていますが、同じではありません。
スキーマはテーブルやビューなどを含む一種の名前空間で、ユーザはそのスキーマを使う人です。
と書いては見ましたが、実際は実装によって違います。
例えばPostgreSQLでは上の概念は全て通用しますが、Oracleではスキーマとユーザはほとんど同じもので、MS-Accessではスキーマという概念は存在しません。
なるほど、データベースによってスキーマの概念が違ったり、スキーマそのもののがないデータベースもあるんですね。
とても参考になりました。ありがとうございます
No.1
- 回答日時:
スキーマとは、簡単に言えば、データベース本体の事を指します。
スキーマには、表や索引、シノニム等が格納され ていうか、そこに作成します。
>どういう時に作成するのか
新しいデータベースを作る時に作ります。
と言ってしまえばそれで終わりですが、データベースの設計からきちんと
考えないと、めちゃくちゃになりますので、どのようなデータベースを
構築するのかをよく考える必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
ORA-14452について
-
データベースのカラムの型がCHA...
-
batファイルでのSQL(oracle)...
-
続.ORACLEのSELECTのソートに...
-
64bit端末でのOLEDB接続に関して
-
SQL ブレーク処理について
-
オラクル12C_SQLPlusで実行す...
-
update文で質問です。 下記の条...
-
テーブルやカラムの物理名のネ...
-
Oracleで文字列型の時間を引き...
-
windows 10をアップデートした...
-
osqleditについて
-
sqlplusで接続できない
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
データベースのカラムの型がCHA...
-
osqleditについて
-
バッチファイルで複数フォルダ...
-
batファイルでのSQL(oracle)...
-
64bit端末でのOLEDB接続に関して
-
ORA-14452について
-
オラクル12C_SQLPlusで実行す...
-
orace SQL文のエラー(ORA-0092...
-
続.ORACLEのSELECTのソートに...
-
CASLⅡ 文字データから数値デー...
-
Oracleで文字列型の時間を引き...
-
oracleの直接接続のクライアン...
-
テーブルやカラムの物理名のネ...
-
ワークテーブルって何?
-
Oracleですがsqlで質問です。 ...
-
oracleで 10,20, 30, というデ...
-
PL/SQLでフェッチでNULLの項目...
-
棒読みちゃんが起動できないの...
-
sqlplusで接続できない
おすすめ情報