• ベストアンサー

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

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

  • Oracle
  • 回答数1
  • ありがとう数17

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

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

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

tutankarmen
質問者

お礼

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

関連するQ&A

  • Oracleのview、synonymをCOMPILEするとはどういうことでしょうか

    現在システム開発の仕事でORACLEを扱っていますが、「alter view ~ compile」や「alter synonym ~ compile」というsql文があります。ORACLEのSQLリファレンスで調べても「compileする」としか説明がなく、自分は「プログラミング言語をcompileする=機械語に翻訳する」ということは経験上理解できるのですが、データベースでcompileするというイメージが沸きません。どなたか教えて下さい。

  • Oracleで・・・

    OracleでIIF関数のような物はありますか? 具体的にはあるフィールド(NUMBER型)から 値が0だったら1をそれ以外だったらそのままの 数値を取得したいのですがなかなかいい案が思いつきません^^; おわかりの方がいらっしゃったらぜひご教授ください。 よろしくお願いします。

  • Oracle11gのインストールについて

    RedHatLinux5に対する、 Oracle11gのインストールから データベース作成、インスタンス作成、スキーマオブジェクトの作成など、 詳細に解説している書籍やサイト等はないでしょうか? OEMやOUI,DBCA等を使えば簡単なのですが 職場環境の制約上、GUIを使用したツールは一切使うことができないので 全てCUI上にて作業する必要があります。

  • オラクル8.1.7の再インストールについて

    オラクル8.1.7をクライアントでインストールしようと思っていたら 手順書を見誤りデータベース用のインストールをしてしまいました。 そこでアンインストーラー後、HKEY_LOCAL_MACHINE\software下の オラクルフォルダを削除。一度再起動してドライブ下のoracle フォルダを削除しようとしましたが、ocacle内のフォルダが一つ だけ削除できません・・・。レジストリも検索して削除しましたが たくさんありすぎて途中で止めてしまいました。 とりあえずもう一度インストールしてみたところエラーも無く 終わってしまいました。パッチもあててます。 この状態で使用しても大丈夫でしょうか? データベースが離れた所にあり、動作確認が出来ない状況です。 どなたかご教授いただけると助かります。

  • ORACLE DB を軽く動かしたい

    現在、Oracleの勉強のために、余ってるPCにインストールして やってみようと思って、やり始めました。 ですが、あまりにも重たく、勉強どころではありません。 普通にフォルダ開くのも1分ぐらいかかります。 スペック不足は認識してますが、少しでも軽くなればと思ってます。 Oracleのサイトから10g Database の30日間お試しのものを使っています。 PCのスペックは、  CPU:CeleronM 1.2GHz  メモリ:512M  HD空き容量:入れる前4.8G → 現在1.3G とりあえず、メモリ不足で、ページファイル使用料が大体800MBぐらい Oracleを入れる前は、200MBぐらいでした。 インストールの際は、オラクルマスターのBronze DBA の翔泳社のテキストを 参考にしながらやりました。 また、一度入れたあとにOUIを使って削除し、再度インストールをしましたが、 2回目にインストールする際、確かインストール先の名前の規定値が 「Home2」のように最後が2になってたので、アンインストールが適切で なく、 現在、2つ分動いているのでは?というふうにも思っています。 そう思う理由としては、タスクマネージャでプロセスを見たとき、 oracle.exe, java.exe, emagent.exe等がすべて2つづつ出ています。 もしくは、インストール時にサンプルスキーマ付きデータベースを入れた後、 DBCAを使ってもデータベースを作成したのが余計だったのでしょうか? 重いながらもなんとか動くので、なにか設定によって少しでも軽くなるなら そうしたいのですが、何か、アドバイスいただければと思います。

  • ビューにインデックスを設定できませんか?

    SQL Server 2005 EXPRESS を使用しています。 トランザクションのテーブルにマスタを結合して表示するビューを作成しました。 実際に利用する時はトランザクションテーブルの主キーを検索に多用すると予想されるので、該当のフィールドにインデックスを設定したいのですが… Management Studio でインデックスを設定しようとするとエラーになります。 エラーメッセージは インデックス '' の作成に失敗しました。 (Microsoft.SqlServer.Express.Smo) ------------------------------ ADDITIONAL INFORMATION: Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo) ------------------------------ ビュー 'View' に インデックス を作成できません。ビューにはスキーマがバインドされていません。 (Microsoft SQL Server, Error: 1939) となっています。まさにメッセージのとおりだとは思うのですが 「ビューにスキーマをバインドする」方法がわかりません。 どなたかご教授いただければ助かります。 よろしくお願いいたします。

  • インストール後の最初の作業を教えてください!

    初めてOracle Enterprise Edition(R8.1.7)をインストールしました。 現在業務で使用しているソフトのデータベースがこれなのですが、 現在はスタンドアロン環境で使用しています。 これをサーバークライアント形式にて使用する予定で実験中です。 サーバー機、クライアント機それぞれインストールは完了いたしました。 しかし、Windows 2000 ServerのActive Directory機能とOracleをあわせて使用する方法が分かりません。 いちおう調べて、Net8 Configration Assistantを設定すればいいのかなと思い、実行したところ、 必要なOracleのスキーマがありませんというメッセージが表示されました。よって「必要なスキーマを追加する」を選択し、実行しました。しかし 「Net8 Configration Assistantは次の理由でスキーマを作成または更新できません。:Config Exception: 次のOracleスキーマを作成できませんでした。:Oracle.net.config.ConfigException このタイプのディレクトリを直接サポートしているコンピュータから、スキーマを更新する必要があります。」 というメッセージが出ました。 何をすればいいのか分からないです。 初歩的なことで申し訳ないのですが、どなたか教えていただけないでしょうか。

  • VisualStudioでoracleへ接続

    開発環境:VisualStudio2008 (Microsoft Visual C# 2008) OS:WinXP DB:Oracle11g (WinXP:localhost) 現在VisualStudio2008を使用し、 C#によるデータベースアプリケーションの勉強しております。 プロジェクトファイルのデータソースにoracleのテーブルを追加したいと思い、 下記手順で操作を行いましたが上手くいきません。 1.ツール(T)→データベースへの接続(D) 2.Oracleデータベースを選択→続行 3.サーバー名を「localhost:orcl」と入力し、   ユーザー名「system」,パスワード「******」を入力 4.接続失敗 oracle11gに関しては http://rina.jpn.ph/rance/index.php?OracleMaster11g%E8%AC%9B%E5%BA%A7 のサイトを参考にインストールを行い、 現在SQL*Plusを使用して各SQL文の実行が出来ているので、 インストール等は正常に出来ていると判断しております。 SQLPlusログインに成功しているので、ユーザー名やパスワードのミスは無いと思い、 恐らくはサーバー名の記載方法にミスがあるのではないかと エラー番号を頼りに調べているのですがなかなか解決できずに居ます。 どうすればOracleに接続し、 DB内のテーブルをデータソースとして追加できるのか教えてくださいませ。 初歩的な質問だとは思いますが、よろしくお願いします。

  • ORACLE9iのリカバリ方法

    ORACLE9iのリカバリ方法を教えてください。 Windows server 2003 R2、Oracle9iを使用しています。 Cドライブにoracleをインストール、Dドライブにoracleのデータを格納しています。 Cドライブのハードディスクが駄目になったので、Cドライブのハードディスクを交換して Windows server 2003 R2をインストールして Windowsの標準機能のバックアップ(バックアップデータには、system stateも含んでいます。)からバックアップしておいたデータを復元させました。 ファイル単位のデータや、オラクルのサービスは復旧したのですが、オラクルのテーブルなどが開きません。 SI ObjectBrowserでオラクルを開こうとしたとき、 「ORA-01219:データベースがオープンしていません。固定の表/ビューに対する問合せのみ可能です。」 というメッセージが表示されます。サービスの再起動をしましたが、同じようなエラーがでます。 SQLPLUSで、alter database openのコマンドを入れてデータベースをオープンさせようとしたところ、 次のようなエラーが出てきました。 ORA-01122:データベース・ファイル8の照合検査でエラーが発生しました。 ORA-01110:データ・ファイル8:'D:ORACLE^ORADATA\SFRES\USER01.DBF' ORA-01207:ファイルが制御ファイルより新しくなっています。-古い制御ファイルです。 どなたか、解決方法をご存知の方、ご教授ください。

  • Oracleのバックアップ方法について教えて下さい。

    Oracle(R8.05)をARCserveというバックアップソフトを使って バックアップしたいのですが...。 ARCserveについては解るのですが、Oracleについては全く解りません。 (Oracleサーバは地方の事務所にあって、後日設定に訪問する事になってます。) 手順書を読むと下記の条件があり、設定方法なども記載されているのですが、 「SQLDBAプロンプト」とか?? です。 大変恐縮ですが、下記2項目の設定までをコマンドの意味も含めて具体的に 教えて頂けないでしょうか。よろしくお願い致します。 1.Oracle(R8.05)サーバがARCHIVELOGモードで動作していること。 (このARCHIVELOGモードとは?) 2.データベースの自動アーカイブ機能が有効化されていること。