-PR-
  • 困ってます
  • 質問No.6879675
締切り
済み

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

  • 閲覧数3600
  • ありがとう数4
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 25% (3/12)

DBの勉強を始めたばかりで概念的にわからないことがありましたので、ご教授ください。

"データベースオブジェクト"という言葉についてです。

参考書を見ると、「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。
このオブジェクトは表でいうとどの部分をさしているのでしょうか?
#インスタンスというのもこのオブジェクトに含まれるという認識でしょうか。。

又、扱われるオブジェクトの種類は、データベースの種類により異なるとあるのですが、
例えば、OracleとPostgresSQLではどのような点が違うのでしょうか?
通報する
  • 回答数5

回答 (全5件)

  • 回答No.1
レベル12

ベストアンサー率 35% (313/889)

>「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。 >このオブジェクトは表でいうとどの部分をさしているのでしょうか? データベースで扱われるオブジェクトのことなので、 表でいうと表のことです。他に、インデックスが作ってあれば、インデックスもそうですし、 制約があれば制約もそうです。 あるいは、ストアドプロシジャやトリガーなんかも含まれます。 データベース上で作れる ...続きを読む
>「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。
>このオブジェクトは表でいうとどの部分をさしているのでしょうか?
データベースで扱われるオブジェクトのことなので、
表でいうと表のことです。他に、インデックスが作ってあれば、インデックスもそうですし、
制約があれば制約もそうです。
あるいは、ストアドプロシジャやトリガーなんかも含まれます。

データベース上で作れるもの、但し、実際のテーブルの中にいれたデータ以外、
と思ってもらうといいかと思います。
## DDLとDMLの違いを分かっておられるなら、DDLで作るものといったらいいかな。
だから、
>#インスタンスというのもこのオブジェクトに含まれるという認識でしょうか。。
インスタンスははいりません。

>扱われるオブジェクトの種類は、データベースの種類により異なるとあるのですが、
>例えば、OracleとPostgresSQLではどのような点が違うのでしょうか?

Oracleにはpackageがあるけど、PostgreSQLやSQL Serverには、ない。
とかかな。(最新バージョンになるとあるのかもしれませんけど)
お礼コメント
Route_123

お礼率 25% (3/12)

早々のご回答ありがとうございます。

インスタンスはデータベースオブジェクトではないんですね。。
いきなりの認識違いでした。質問してよかったです。

>データベース上で作れるもの、但し、実際のテーブルの中にいれたデータ以外、
>と思ってもらうといいかと思います。
>## DDLとDMLの違いを分かっておられるなら、DDLで作るものといったらいいかな。
DDLはデータベースを作成したり、ビューを作成するなどの表の根本を作るSQL文のことですね。
とすると、項目名だけが記述されたデータの入っていない空っぽの表のことをイメージのことでいいのでしょうか。

>Oracleにはpackageがあるけど、PostgreSQLやSQL Serverには、ない。
>とかかな。(最新バージョンになるとあるのかもしれませんけど)
「package」がどういう働きをするか理解できていないのですっきりできてないですが、
データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました。
#間違っていたら意図が伝わっておらず、すいません
投稿日時 - 2011-07-17 09:07:37
  • 回答No.2
レベル14

ベストアンサー率 61% (1597/2589)

オブジェクト(object)という英単語は,単位として扱える(ひと固まりとなっている)「物」を表す概念です。ですから基本的に,何を指してもオブジェクトと呼ぶことができます。 Oracle Databaseの場合,回答ANo.1のとおり,実表も,ビュー表も,索引も,制約も,すべてオブジェクトです。  > 項目名だけが記述されたデータの入っていない  > 空っぽの表のことをイメージのことでいいの ...続きを読む
オブジェクト(object)という英単語は,単位として扱える(ひと固まりとなっている)「物」を表す概念です。ですから基本的に,何を指してもオブジェクトと呼ぶことができます。
Oracle Databaseの場合,回答ANo.1のとおり,実表も,ビュー表も,索引も,制約も,すべてオブジェクトです。

 > 項目名だけが記述されたデータの入っていない
 > 空っぽの表のことをイメージのことでいいのでしょうか。

データが格納されていてもオブジェクト,空っぽでもオブジェクトです。

----------------
インスタンスもオブジェクトですよ。
社員表,部門表のような生成された個々の実体をインスタンスと呼びます。そしてそれらは表ですからオブジェクトと呼んでもかまいません。

ただ,Oracleの場合,インスタンスという用語がもっとも頻繁に登場するのは,上記のような一般的なオブジェクト指向用語としてのインスタンスではなく,もっぱら「Oracleインスタンス」すなわち「Oracle自体のインスタンス」という用法で用いられます。
Oracleが起動した後,Oracleプログラム内で扱われる各表,各ビュー表,各索引,各制約をインスタンスとはあまり呼ばず,
Oracleでは,サーバ上で起動される個々のOracleプログラムをインスタンスと呼ぶということです。「サーバ上で複数のOracleインスタンスを起動する」というような用法です。
お礼コメント
Route_123

お礼率 25% (3/12)

早々のご回答ありがとうございます。

>「Oracle自体のインスタンス」という用法で用いられます。
このOracle自体のインスタンスというのはメモリ上に配置されるデータベースバッファキャッシュや、バックグラウンドプロセスの総称のことですね。
では今後Oracleで出てくるインスタンスは上記認識で覚えておくことにします。
#総称。。という言い方があっているかどうかはちょっと良くわかっていませんが

何をさしてもオブジェクト、というところが非常にネックです。
テーブルやビューや索引などがデータベースオブジェクト、というならば、例えばPostgreSQLにも同様のものがあると思いますし、各RDBMSのデータベースオブジェクトに大きな違いがあるようにはぱっとみて思えないですね。。
#関数とかに違いがあるんでしょうか
投稿日時 - 2011-07-17 22:48:13
  • 回答No.3
レベル12

ベストアンサー率 35% (313/889)

ANo1です。 >インスタンスはデータベースオブジェクトではないんですね。。 >いきなりの認識違いでした。質問してよかったです。 ANo2の人とは違う答えを書きますけど、 ANo2の人のいうオブジェクトであるというのが間違いというわけではないです。 インスタンスは、一般にOOなんかでいうオブジェクトには該当しますが、 Oracleの場合、データベースとインスタンスは関連付けするだけであり、並 ...続きを読む
ANo1です。

>インスタンスはデータベースオブジェクトではないんですね。。
>いきなりの認識違いでした。質問してよかったです。
ANo2の人とは違う答えを書きますけど、
ANo2の人のいうオブジェクトであるというのが間違いというわけではないです。
インスタンスは、一般にOOなんかでいうオブジェクトには該当しますが、
Oracleの場合、データベースとインスタンスは関連付けするだけであり、並列の関係なので、
データベースの下の階層になるような「データベースオブジェクト」とは呼ばないです。

>項目名だけが記述されたデータの入っていない空っぽの表のことをイメージのことでいいのでしょうか。
ANo2のかたの書かれている通り、空っぽでもカラッポでなくてもデータベースオブジェクトです。

>「package」がどういう働きをするか理解できていないのですっきりできてないですが、
>データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました。
Oracleの「package」はStoredProcedureの集まりみたいなもの(厳密には違いますが。)
他のデータベースではあまり見かけません。

>データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました
「各RDBMSでも大きな違いはない」というのは間違っていませんが、
それぞれのデータベース独自のデータベースオブジェクトがある
あるいは古いバージョンでは存在しないデータベースオブジェクトがある等の点から、
「扱われるオブジェクトの種類は、データベースの種類により異なる」
と書かずに「各RDBMSで違いはない」と書くと間違いとなってしまいます。
また、RDBMS以外のカード型データベース等の昔あった(今もあるかも)を含めてデータベースと
呼ぶと、結構違いは大きくなります。(外部キーやデータベースリンクがなかったり・・・)
お礼コメント
Route_123

お礼率 25% (3/12)

ご回答ありがとうございます。
親身に相談に乗って頂き、大変助かっております。

>データベースの下の階層になるような「データベースオブジェクト」とは呼ばないです。
オブジェクトとデータベースオブジェクトは違うものになるのですね。お恥ずかしいですが、まずそこから認識不足でした。。

データベースオブジェクトはデータベースの種類により異なる、というところで幾分すっきりしました。
ただ、テーブルやビューなど基本的なところに違いがあるのかと思っていたので、外部キーなどがまったく考慮していませんでした。
#外部キーも基本ではあると思いますが

もう各RDBMSの細かな特徴をつかめるようにもう少し勉強してみます。
取り急ぎで大変失礼ですが、勉強不足ゆえ、もう少し理解を深めてから再度質問させていただきます。
ありがとうございました。
投稿日時 - 2011-07-17 23:13:36
  • 回答No.4
レベル12

ベストアンサー率 35% (313/889)

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

>オブジェクトとデータベースオブジェクトは違うものになるのですね。

データベースオブジェクトはオブジェクトの1つです。
データベースソフト(こういう言い方はあまりしないですが)ってオブジェクトがあって、
その下にインスタンスやデータベースというオブジェクトがあって、
データベースの下に表やビューその他いろいろなデータベースオブジェクトといわれる
オブジェクトがあって・・・。
という意味です。
  • 回答No.5
レベル14

ベストアンサー率 61% (1597/2589)

> 何をさしてもオブジェクト、というところが非常にネックです。 > テーブルやビューや索引などがデータベースオブジェクト、 > というならば、例えばPostgreSQLにも同様のものがあると思いますし、 索引がオブジェクトだとは言っていません。 「Oracle Databaseの場合……索引もオブジェクト」だと回答しました。 例えば,ある架空のデータベースソフトを仮定します。 この ...続きを読む
> 何をさしてもオブジェクト、というところが非常にネックです。
> テーブルやビューや索引などがデータベースオブジェクト、
> というならば、例えばPostgreSQLにも同様のものがあると思いますし、

索引がオブジェクトだとは言っていません。
「Oracle Databaseの場合……索引もオブジェクト」だと回答しました。


例えば,ある架空のデータベースソフトを仮定します。
このDBソフトでは,表中の属性に索引を定義することができるとします。
そしてこの索引は,表を構成するファイルの中に隠された領域に実装されているとしましょう。
表の中の一部として索引が存在する,となると,表を削除すると同時に索引も消えますよね。であるなら,この索引をオブジェクトと呼ぶのは適切ではありません。

それに対して Oracle Databaseの場合は,表も索引もそれぞれ別物として実装しているのですよね。索引を削除せずに,索引を表から切り離すこともできるし,索引を再び表に紐付けることもできる。表を削除したって,索引は残せる。だからOracleでは,索引はオブジェクトと呼ばれるのが適切なわけです。

 > オブジェクト(object)という英単語は,単位として扱える
 > (ひと固まりとなっている)「物」を表す概念です。


あるDBソフトに索引機能があることと,そのDBソフトで索引がオブジェクトとして実装されていることとは,別の問題です。
  • 回答数5
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ