• ベストアンサー

オラクルのビューの存在について

オラクルの単一ビューには関数を含まない、データのグループを含まないという記載が参考書にあったのですが、具体的にどういう状況をいっているのか教えて下さい。 すいません。追加で聞きたいことがありました。 同一データベースの異なるスキーマで、同じ表名を使用できる。 同一スキーマ内で、同じ表名と同義語名を使用できる。 この文言の意味合いもいまいち解せないでいます。 ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

 単一ビュー:  その質問の表現、言い方が逆です。だから、意味不明になってます。  単一ビュー「とは」、一つのテーブルから作成されたビューで、group byで集約したり、関数を使ったりしていないビューのことを言います。  つまり、単一ビューという言葉の定義をしているだけです。定義ですから、これにとやかく言っても始まらないんですね。  まぁ、単純に言えば、単一ビューというのは、一つのテーブルから、せいぜい単純な選択をしただけのビューと言えばいいのかな。  この用語を定義する必要性は、次に、「このビューは、更新可能ですか?」と言い始めた時に、出てきます。単一ビューに対しては、insert , updateが可能です。(ただし、insertの際には、ビューに登場する以外のカラムが実テーブルにある時には、それらにはデフォルト値が入ります。それも無ければ、NULLです。そのカラムにnot null制約がついていると、制約違反ではねられます。)  スキーマ:  Oracleでは、ユーザー毎に一つのスキーマが割り当てられます。  そうですね。とあるマンションを一つのデータベースに例えてみましょうか。マンション一棟全体がデータベースです。隣のマンションは、別のデータベースとしましょう。  マンションの部屋には、各々住人が住みますね。この部屋がスキーマです。隣の部屋にヤカンがあっても、自分の部屋に同じ形のヤカンを置いても良いですよね。このヤカンを区別する必要が出た時には、Aさん宅のヤカンとか、Bさん宅のヤカンとか言えますよね。  表名も同じです。userA.onajihyouとか、userB.onajihyouといったように識別します。  自分の部屋にあるものを使うのに、Aさん宅のヤカンとは言いませんよね。素直にヤカンです。  表名も同じ。例え、他のスキーマに同じ表名があろうが何だろうが、自分のスキーマ内の表に対しては、onajihyouでちゃんと通用します。  ただし、マンションにも共有部分があります。データベースも同じ。各自のスキーマに属さない要素がいくつかあります。何がスキーマに属して、何がスキーマに属さないのかは、参考書やマニュアルを見れば書いてありますので、興味があれば探してみてください。

tutankarmen
質問者

お礼

ものすごくわかりやすかったです。 親切丁寧な教え方に感動です。 本当にありがとうございました。