
DBの勉強を始めたばかりで概念的にわからないことがありましたので、ご教授ください。
"データベースオブジェクト"という言葉についてです。
参考書を見ると、「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。
このオブジェクトは表でいうとどの部分をさしているのでしょうか?
#インスタンスというのもこのオブジェクトに含まれるという認識でしょうか。。
又、扱われるオブジェクトの種類は、データベースの種類により異なるとあるのですが、
例えば、OracleとPostgresSQLではどのような点が違うのでしょうか?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
> 何をさしてもオブジェクト、というところが非常にネックです。
> テーブルやビューや索引などがデータベースオブジェクト、
> というならば、例えばPostgreSQLにも同様のものがあると思いますし、
索引がオブジェクトだとは言っていません。
「Oracle Databaseの場合……索引もオブジェクト」だと回答しました。
例えば,ある架空のデータベースソフトを仮定します。
このDBソフトでは,表中の属性に索引を定義することができるとします。
そしてこの索引は,表を構成するファイルの中に隠された領域に実装されているとしましょう。
表の中の一部として索引が存在する,となると,表を削除すると同時に索引も消えますよね。であるなら,この索引をオブジェクトと呼ぶのは適切ではありません。
それに対して Oracle Databaseの場合は,表も索引もそれぞれ別物として実装しているのですよね。索引を削除せずに,索引を表から切り離すこともできるし,索引を再び表に紐付けることもできる。表を削除したって,索引は残せる。だからOracleでは,索引はオブジェクトと呼ばれるのが適切なわけです。
> オブジェクト(object)という英単語は,単位として扱える
> (ひと固まりとなっている)「物」を表す概念です。
あるDBソフトに索引機能があることと,そのDBソフトで索引がオブジェクトとして実装されていることとは,別の問題です。
No.4
- 回答日時:
ANo1です。
舌足らずな回答で誤解を招いたかもしれません。
>オブジェクトとデータベースオブジェクトは違うものになるのですね。
データベースオブジェクトはオブジェクトの1つです。
データベースソフト(こういう言い方はあまりしないですが)ってオブジェクトがあって、
その下にインスタンスやデータベースというオブジェクトがあって、
データベースの下に表やビューその他いろいろなデータベースオブジェクトといわれる
オブジェクトがあって・・・。
という意味です。
No.3
- 回答日時:
ANo1です。
>インスタンスはデータベースオブジェクトではないんですね。。
>いきなりの認識違いでした。質問してよかったです。
ANo2の人とは違う答えを書きますけど、
ANo2の人のいうオブジェクトであるというのが間違いというわけではないです。
インスタンスは、一般にOOなんかでいうオブジェクトには該当しますが、
Oracleの場合、データベースとインスタンスは関連付けするだけであり、並列の関係なので、
データベースの下の階層になるような「データベースオブジェクト」とは呼ばないです。
>項目名だけが記述されたデータの入っていない空っぽの表のことをイメージのことでいいのでしょうか。
ANo2のかたの書かれている通り、空っぽでもカラッポでなくてもデータベースオブジェクトです。
>「package」がどういう働きをするか理解できていないのですっきりできてないですが、
>データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました。
Oracleの「package」はStoredProcedureの集まりみたいなもの(厳密には違いますが。)
他のデータベースではあまり見かけません。
>データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました
「各RDBMSでも大きな違いはない」というのは間違っていませんが、
それぞれのデータベース独自のデータベースオブジェクトがある
あるいは古いバージョンでは存在しないデータベースオブジェクトがある等の点から、
「扱われるオブジェクトの種類は、データベースの種類により異なる」
と書かずに「各RDBMSで違いはない」と書くと間違いとなってしまいます。
また、RDBMS以外のカード型データベース等の昔あった(今もあるかも)を含めてデータベースと
呼ぶと、結構違いは大きくなります。(外部キーやデータベースリンクがなかったり・・・)
ご回答ありがとうございます。
親身に相談に乗って頂き、大変助かっております。
>データベースの下の階層になるような「データベースオブジェクト」とは呼ばないです。
オブジェクトとデータベースオブジェクトは違うものになるのですね。お恥ずかしいですが、まずそこから認識不足でした。。
データベースオブジェクトはデータベースの種類により異なる、というところで幾分すっきりしました。
ただ、テーブルやビューなど基本的なところに違いがあるのかと思っていたので、外部キーなどがまったく考慮していませんでした。
#外部キーも基本ではあると思いますが
もう各RDBMSの細かな特徴をつかめるようにもう少し勉強してみます。
取り急ぎで大変失礼ですが、勉強不足ゆえ、もう少し理解を深めてから再度質問させていただきます。
ありがとうございました。
No.2
- 回答日時:
オブジェクト(object)という英単語は,単位として扱える(ひと固まりとなっている)「物」を表す概念です。
ですから基本的に,何を指してもオブジェクトと呼ぶことができます。Oracle Databaseの場合,回答ANo.1のとおり,実表も,ビュー表も,索引も,制約も,すべてオブジェクトです。
> 項目名だけが記述されたデータの入っていない
> 空っぽの表のことをイメージのことでいいのでしょうか。
データが格納されていてもオブジェクト,空っぽでもオブジェクトです。
----------------
インスタンスもオブジェクトですよ。
社員表,部門表のような生成された個々の実体をインスタンスと呼びます。そしてそれらは表ですからオブジェクトと呼んでもかまいません。
ただ,Oracleの場合,インスタンスという用語がもっとも頻繁に登場するのは,上記のような一般的なオブジェクト指向用語としてのインスタンスではなく,もっぱら「Oracleインスタンス」すなわち「Oracle自体のインスタンス」という用法で用いられます。
Oracleが起動した後,Oracleプログラム内で扱われる各表,各ビュー表,各索引,各制約をインスタンスとはあまり呼ばず,
Oracleでは,サーバ上で起動される個々のOracleプログラムをインスタンスと呼ぶということです。「サーバ上で複数のOracleインスタンスを起動する」というような用法です。
早々のご回答ありがとうございます。
>「Oracle自体のインスタンス」という用法で用いられます。
このOracle自体のインスタンスというのはメモリ上に配置されるデータベースバッファキャッシュや、バックグラウンドプロセスの総称のことですね。
では今後Oracleで出てくるインスタンスは上記認識で覚えておくことにします。
#総称。。という言い方があっているかどうかはちょっと良くわかっていませんが
何をさしてもオブジェクト、というところが非常にネックです。
テーブルやビューや索引などがデータベースオブジェクト、というならば、例えばPostgreSQLにも同様のものがあると思いますし、各RDBMSのデータベースオブジェクトに大きな違いがあるようにはぱっとみて思えないですね。。
#関数とかに違いがあるんでしょうか
No.1
- 回答日時:
>「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。
>このオブジェクトは表でいうとどの部分をさしているのでしょうか?
データベースで扱われるオブジェクトのことなので、
表でいうと表のことです。他に、インデックスが作ってあれば、インデックスもそうですし、
制約があれば制約もそうです。
あるいは、ストアドプロシジャやトリガーなんかも含まれます。
データベース上で作れるもの、但し、実際のテーブルの中にいれたデータ以外、
と思ってもらうといいかと思います。
## DDLとDMLの違いを分かっておられるなら、DDLで作るものといったらいいかな。
だから、
>#インスタンスというのもこのオブジェクトに含まれるという認識でしょうか。。
インスタンスははいりません。
>扱われるオブジェクトの種類は、データベースの種類により異なるとあるのですが、
>例えば、OracleとPostgresSQLではどのような点が違うのでしょうか?
Oracleにはpackageがあるけど、PostgreSQLやSQL Serverには、ない。
とかかな。(最新バージョンになるとあるのかもしれませんけど)
早々のご回答ありがとうございます。
インスタンスはデータベースオブジェクトではないんですね。。
いきなりの認識違いでした。質問してよかったです。
>データベース上で作れるもの、但し、実際のテーブルの中にいれたデータ以外、
>と思ってもらうといいかと思います。
>## DDLとDMLの違いを分かっておられるなら、DDLで作るものといったらいいかな。
DDLはデータベースを作成したり、ビューを作成するなどの表の根本を作るSQL文のことですね。
とすると、項目名だけが記述されたデータの入っていない空っぽの表のことをイメージのことでいいのでしょうか。
>Oracleにはpackageがあるけど、PostgreSQLやSQL Serverには、ない。
>とかかな。(最新バージョンになるとあるのかもしれませんけど)
「package」がどういう働きをするか理解できていないのですっきりできてないですが、
データベースオブジェクトは各RDBMSでも大きな違いはないのかな?という認識をもってしまいました。
#間違っていたら意図が伝わっておらず、すいません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) ACCESS2019でのエラーメッセージ 1 2023/08/15 17:40
- Oracle 参照関係のフィールドについて 1 2023/05/27 17:49
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- PowerPoint(パワーポイント) パワーポイントのアニメーションについて 4 2023/06/14 16:25
- その他(プログラミング・Web制作) Pythonのオブジェクトの関数について 2 2023/05/11 19:15
- Excel(エクセル) テキストの背後にあるオブジェクトとは 3 2023/01/03 20:22
- Visual Basic(VBA) Excel VBA オブジェクトマクロ 使用指定について お詳しい方教えてください。 共通エクセルフ 2 2023/03/14 17:26
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/05/21 02:41
- Illustrator(イラストレーター) 【シェイプ形成ツール】でうまく分割できない 1 2022/05/26 10:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーへのディレクトリ権限...
-
ファイルへの書き込みができない
-
ORA-29280:無効なディレクトリ...
-
データベースオブジェクトの考...
-
北朝鮮のミサイルについて
-
ORA-01013のエラーについて経験...
-
フルインポートで警告が発生します
-
CASE文のエラーについて
-
Oracleで流したSQLのログを取得...
-
DOSプロンプトとコマンドプロン...
-
ストアド・プロシージャをバッ...
-
ORA-01843: 指定した月が無効で...
-
SQL*Plusで、コマンドの返答を...
-
どうしてpn接合ではp領域とn領...
-
はじめまして!
-
PL/SQLでログを確認したい。
-
xy平面上の点P(x,y)に対し,点Q(...
-
Oracle_リスナーありませんって...
-
表領域の作成について
-
PL/SQL PLS-00103エラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-29280:無効なディレクトリ...
-
ファイルへの書き込みができない
-
ユーザーへのディレクトリ権限...
-
データベースオブジェクトの考...
-
Oracle DataPumpでの移行
-
UTL_FILEパッケージについて
-
oracleでexpdpを使いデータをex...
-
ストアドプロシジャって別名で...
-
Oracle10gのUTL_FILEについて
-
ORA-01013のエラーについて経験...
-
Oracleで流したSQLのログを取得...
-
DOSプロンプトとコマンドプロン...
-
PL/SQL PLS-00103エラーについて
-
CASE文のエラーについて
-
xy平面上の点P(x,y)に対し,点Q(...
-
ORA-01843: 指定した月が無効で...
-
はじめまして!
-
クローンソフトで、Acronis Tru...
-
SQL*Plusで、コマンドの返答を...
-
Oracleの起動時に、マウントし...
おすすめ情報