• 締切済み

データベースオブジェクトの考え方がわからない

DBの勉強を始めたばかりで概念的にわからないことがありましたので、ご教授ください。 "データベースオブジェクト"という言葉についてです。 参考書を見ると、「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。 このオブジェクトは表でいうとどの部分をさしているのでしょうか? #インスタンスというのもこのオブジェクトに含まれるという認識でしょうか。。 又、扱われるオブジェクトの種類は、データベースの種類により異なるとあるのですが、 例えば、OracleとPostgresSQLではどのような点が違うのでしょうか?

  • Oracle
  • 回答数5
  • ありがとう数4

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.5

> 何をさしてもオブジェクト、というところが非常にネックです。 > テーブルやビューや索引などがデータベースオブジェクト、 > というならば、例えばPostgreSQLにも同様のものがあると思いますし、 索引がオブジェクトだとは言っていません。 「Oracle Databaseの場合……索引もオブジェクト」だと回答しました。 例えば,ある架空のデータベースソフトを仮定します。 このDBソフトでは,表中の属性に索引を定義することができるとします。 そしてこの索引は,表を構成するファイルの中に隠された領域に実装されているとしましょう。 表の中の一部として索引が存在する,となると,表を削除すると同時に索引も消えますよね。であるなら,この索引をオブジェクトと呼ぶのは適切ではありません。 それに対して Oracle Databaseの場合は,表も索引もそれぞれ別物として実装しているのですよね。索引を削除せずに,索引を表から切り離すこともできるし,索引を再び表に紐付けることもできる。表を削除したって,索引は残せる。だからOracleでは,索引はオブジェクトと呼ばれるのが適切なわけです。  > オブジェクト(object)という英単語は,単位として扱える  > (ひと固まりとなっている)「物」を表す概念です。 あるDBソフトに索引機能があることと,そのDBソフトで索引がオブジェクトとして実装されていることとは,別の問題です。

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.4

ANo1です。 舌足らずな回答で誤解を招いたかもしれません。 >オブジェクトとデータベースオブジェクトは違うものになるのですね。 データベースオブジェクトはオブジェクトの1つです。 データベースソフト(こういう言い方はあまりしないですが)ってオブジェクトがあって、 その下にインスタンスやデータベースというオブジェクトがあって、 データベースの下に表やビューその他いろいろなデータベースオブジェクトといわれる オブジェクトがあって・・・。 という意味です。

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

ANo1です。 >インスタンスはデータベースオブジェクトではないんですね。。 >いきなりの認識違いでした。質問してよかったです。 ANo2の人とは違う答えを書きますけど、 ANo2の人のいうオブジェクトであるというのが間違いというわけではないです。 インスタンスは、一般にOOなんかでいうオブジェクトには該当しますが、 Oracleの場合、データベースとインスタンスは関連付けするだけであり、並列の関係なので、 データベースの下の階層になるような「データベースオブジェクト」とは呼ばないです。 >項目名だけが記述されたデータの入っていない空っぽの表のことをイメージのことでいいのでしょうか。 ANo2のかたの書かれている通り、空っぽでもカラッポでなくてもデータベースオブジェクトです。 >「package」がどういう働きをするか理解できていないのですっきりできてないですが、 >データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました。 Oracleの「package」はStoredProcedureの集まりみたいなもの(厳密には違いますが。) 他のデータベースではあまり見かけません。 >データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました 「各RDBMSでも大きな違いはない」というのは間違っていませんが、 それぞれのデータベース独自のデータベースオブジェクトがある あるいは古いバージョンでは存在しないデータベースオブジェクトがある等の点から、 「扱われるオブジェクトの種類は、データベースの種類により異なる」 と書かずに「各RDBMSで違いはない」と書くと間違いとなってしまいます。 また、RDBMS以外のカード型データベース等の昔あった(今もあるかも)を含めてデータベースと 呼ぶと、結構違いは大きくなります。(外部キーやデータベースリンクがなかったり・・・)

Route_123
質問者

お礼

ご回答ありがとうございます。 親身に相談に乗って頂き、大変助かっております。 >データベースの下の階層になるような「データベースオブジェクト」とは呼ばないです。 オブジェクトとデータベースオブジェクトは違うものになるのですね。お恥ずかしいですが、まずそこから認識不足でした。。 データベースオブジェクトはデータベースの種類により異なる、というところで幾分すっきりしました。 ただ、テーブルやビューなど基本的なところに違いがあるのかと思っていたので、外部キーなどがまったく考慮していませんでした。 #外部キーも基本ではあると思いますが もう各RDBMSの細かな特徴をつかめるようにもう少し勉強してみます。 取り急ぎで大変失礼ですが、勉強不足ゆえ、もう少し理解を深めてから再度質問させていただきます。 ありがとうございました。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

オブジェクト(object)という英単語は,単位として扱える(ひと固まりとなっている)「物」を表す概念です。ですから基本的に,何を指してもオブジェクトと呼ぶことができます。 Oracle Databaseの場合,回答ANo.1のとおり,実表も,ビュー表も,索引も,制約も,すべてオブジェクトです。  > 項目名だけが記述されたデータの入っていない  > 空っぽの表のことをイメージのことでいいのでしょうか。 データが格納されていてもオブジェクト,空っぽでもオブジェクトです。 ---------------- インスタンスもオブジェクトですよ。 社員表,部門表のような生成された個々の実体をインスタンスと呼びます。そしてそれらは表ですからオブジェクトと呼んでもかまいません。 ただ,Oracleの場合,インスタンスという用語がもっとも頻繁に登場するのは,上記のような一般的なオブジェクト指向用語としてのインスタンスではなく,もっぱら「Oracleインスタンス」すなわち「Oracle自体のインスタンス」という用法で用いられます。 Oracleが起動した後,Oracleプログラム内で扱われる各表,各ビュー表,各索引,各制約をインスタンスとはあまり呼ばず, Oracleでは,サーバ上で起動される個々のOracleプログラムをインスタンスと呼ぶということです。「サーバ上で複数のOracleインスタンスを起動する」というような用法です。

Route_123
質問者

お礼

早々のご回答ありがとうございます。 >「Oracle自体のインスタンス」という用法で用いられます。 このOracle自体のインスタンスというのはメモリ上に配置されるデータベースバッファキャッシュや、バックグラウンドプロセスの総称のことですね。 では今後Oracleで出てくるインスタンスは上記認識で覚えておくことにします。 #総称。。という言い方があっているかどうかはちょっと良くわかっていませんが 何をさしてもオブジェクト、というところが非常にネックです。 テーブルやビューや索引などがデータベースオブジェクト、というならば、例えばPostgreSQLにも同様のものがあると思いますし、各RDBMSのデータベースオブジェクトに大きな違いがあるようにはぱっとみて思えないですね。。 #関数とかに違いがあるんでしょうか

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

>「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。 >このオブジェクトは表でいうとどの部分をさしているのでしょうか? データベースで扱われるオブジェクトのことなので、 表でいうと表のことです。他に、インデックスが作ってあれば、インデックスもそうですし、 制約があれば制約もそうです。 あるいは、ストアドプロシジャやトリガーなんかも含まれます。 データベース上で作れるもの、但し、実際のテーブルの中にいれたデータ以外、 と思ってもらうといいかと思います。 ## DDLとDMLの違いを分かっておられるなら、DDLで作るものといったらいいかな。 だから、 >#インスタンスというのもこのオブジェクトに含まれるという認識でしょうか。。 インスタンスははいりません。 >扱われるオブジェクトの種類は、データベースの種類により異なるとあるのですが、 >例えば、OracleとPostgresSQLではどのような点が違うのでしょうか? Oracleにはpackageがあるけど、PostgreSQLやSQL Serverには、ない。 とかかな。(最新バージョンになるとあるのかもしれませんけど)

Route_123
質問者

お礼

早々のご回答ありがとうございます。 インスタンスはデータベースオブジェクトではないんですね。。 いきなりの認識違いでした。質問してよかったです。 >データベース上で作れるもの、但し、実際のテーブルの中にいれたデータ以外、 >と思ってもらうといいかと思います。 >## DDLとDMLの違いを分かっておられるなら、DDLで作るものといったらいいかな。 DDLはデータベースを作成したり、ビューを作成するなどの表の根本を作るSQL文のことですね。 とすると、項目名だけが記述されたデータの入っていない空っぽの表のことをイメージのことでいいのでしょうか。 >Oracleにはpackageがあるけど、PostgreSQLやSQL Serverには、ない。 >とかかな。(最新バージョンになるとあるのかもしれませんけど) 「package」がどういう働きをするか理解できていないのですっきりできてないですが、 データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました。 #間違っていたら意図が伝わっておらず、すいません

関連するQ&A

  • データベースオブジェクトを複数用意する

    .net c# で開発をしています。 データベースにアクセスする為にOracleOleDbを使用しているのですが、同じデータベースをアクセスするのに複数のインスタンスを作成しているのですが、こんなことって意味あるのでしょうか? プログラム内ではメソッド毎にそのオブジェクトを使い分けています。 ちなみにカスタマイズなので前回製造者がどういう意図があってそういった思想になったか明らかではありません。 以上、ご教授よろしく御願いします。

  • php インスタンスとオブジェクトの呼び方

    new obj = new Test(); という一文は、 「Testクラスのオブジェクト、objを作成している」という考えを持っています。 オブジェクトは物という概念で、 「Testクラス を new して、objインスタンスを作成している」 というのが正しいのでしょうか? 【objを Testオブジェクトと呼ぶのは間違っているのでしょうか? objは Testインスタンスと呼ぶのがやはり正しいのでしょうか?】 知り合いにも、インスタンスではなくオブジェクトと呼んでる人が多いのでわからなくなってきました。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • インスタンスオブジェクトとはなんなのでしょうか

    現在Objective-cを勉強中なのですが、インスタンスオブジェクトの 意味がよくわかりません。ネットで調べても「インスタンス」と 「オブジェクト」それぞれの意味しか出てきません。 インスタンスオブジェクトという単語が出てきた参考書には以下のように 書かれています。 ---------------(引用ここから)------------------- - (int)up{ ・・・  return self; } selfはメッセージを受け取ってそのメソッドの処理をしている インスタンスオブジェクトそのものなので、返り値に対して 続けてメッセージを送ることができる。 ---------------(引用ここまで)--------------------------- どなたかインスタンスオブジェクトの意味をご教示いただけないでしょうか。 以上、何卒よろしくお願いいたします。

  • データベース:NDBってなんですか。

    NDBってなんでしょうか。 OracleやDB2のようにネットワークにつながるデータベース全般をさす言葉でしょうか。 Webで探しても見つからないので、ご指南頂ければ幸いです。

  • ロール(オブジェクト権限)について

    オラクルのパージョンは「9.2.0.1.0」です。 オブジェクト権限を指定したロールをパッケージから参照する事はできないのでしょうか。 対象のスキーマにはオブジェクト権限を指定したロールを付与していますがパッケージで下記のエラーが発生して困っています。 「ORA-00942: 表またはビューが存在しません。」 どのようにすればいいのか、恥ずかしながらわかりません。 どなたかご教授お願いできませんでしょうか。 些細な事でも構いませんので宜しくお願いします。

  • クラス、インスタンス、オブジェクトの区別

    クラスが人間という種類だとしたら インスタンスが例えばAさん、Bさんという具体的な人のことで、 オブジェクトが誰でもいいけどとりあえず具体的な誰か という認識でいいでしょうか? だとしたらなんとなくイメージはできたのですが、もっとわかりやすい言葉が欲しいです。 どなたから説明してもらえませんか?

    • ベストアンサー
    • Java
  • Object Browser

    OracleのDBについて、勉強しているものです。 OracleのDBの中が見れるツールという事で、Object Browserの体験版で検証をしたいのですが、 PC(Win2000)<=>DB(UNIX)のような環境でもDBの中身がみれるのでしょうか。 接続のポップアップで、ユーザ名やパスワードとホスト文字列が要求されますが、ネットワーク越しの場合は見れないのでしょうか。 ご存知の方がいましたら、教えてください。

  • データベース初心者

    データベース自体全くの初心者ですが、仕事でOracleを使うことになりました。 3ヶ月程で基本をモノにしたいのですが、まずは何から手をつければいいのでしょうか。 いきなりOracleの参考書を手に取るよりも、データベース(SQL?)の基礎知識から勉強した方がいいでしょうか。 おすすめの参考書等あればご教示下さい。

  • UMLでの「オブジェクト」と「インスタンス」の違い

    Java的な概念での説明や、単に「オブジェクト指向」と銘打つHPなどの説明では、「オブジェクト」と「インスタンス」は同じものとして扱われたり、「クラスオブジェクト」「インスタンスオブジェクト」等という言葉を持ち出し、単独の「オブジェクト」という言葉は存在しないなどと取れる説明をしていることが多いように感じます。 しかし、一般的にUMLを元にしたオブジェクト指向の考え方の下では「オブジェクト」と「インスタンス」という言葉は明確に使い分けられており、また「クラス」と「オブジェクト」は対極にあるものとして扱われるため、「クラスオブジェクト」等という言葉が使われることもありません。 下記URLと書籍では、「オブジェクト」と「インスタンス」を明確に使い分けています。 http://www.atmarkit.co.jp/fjava/devs/object04/object04.html テクノロジックアート UMLモデリングL1 P2,3 しかし、この使い分けのニュアンスの違いが理解できません。 オージス総研 初めて学ぶUML 21P では、「型/インスタンス」→「クラス/オブジェクト」という明確な解を提示していますが、微妙な感じだし、何より前出の2者とは明らかに異なる意味合いで使われています。 人によって異なる意味合いで使われているということは理解しています。また、その人による微妙な違いもおおむね理解しているつもりです。しかし、上記の2者のニュアンスだけは理解できない状態です。このニュアンスがわかる方、解説よろしくお願いします。

  • インスタンスとオブジェクト 生成

    クラスのオブジェクトを生成するときに(newをつかって) ●インスタンスを生成する。 ●オブジェクトを生成する。 と参考書に書いてありますが、言い方はどちらでもいいそうです。 でも、2種類の言い方がるということは厳密には意味が違うような気がするのですが、皆さんはどう思いますか? またどちらの言い方を使っていますか? どちらが正しいのでしょうか?

    • ベストアンサー
    • Java