2

私は通常、コレクション自体に関するすべてのことについてかなり多くのことを知っていますが、1 つのポイントを得ることはできません。データベースにコレクションを(ネストした表およびVARRAYとして)格納する理由は?

一般に、プログラミング言語で配列を使用すると便利であることがわかりますが、テーブルの一部である場合にそれらがどのように役立つかわかりません。2 つのエンティティ間の単純な関係としてすべてを実装できないでしょうか?

入れ子になったテーブルまたは配列をテーブルの一部として使用する理由と場所、およびそれらの利点は何ですか?

4

2 に答える 2

3

オラクルは、長い間破棄されてきたリブランディング活動の一環として、データベース内のオブジェクトのサポートを開始しました。Oracle8 は、単なる RDBMS ではなく、ORDBMS として位置付けられました。その後、ラリーはインターネットを発見し、Java をデータベースに入れ、慎重に Oracle8i を RDBMS として再ブランド化しました。

それにもかかわらず、SQL 型は残ります。彼らは良いことです。おっしゃる通り、配列は優れたプログラミング デバイスであり、PL/SQL で非常に役立ちます。そして、継承とポリモーフィズムにより、素敵な API を構築できます。

しかし、あなたの重要なポイントに:

「データベースにそのような方法で保存する理由がわかりません」

まさにそうです。データベース テーブル定義で SQL 型を使用する正当な理由はほとんどありません。理論的には、ドメイン タイプを定義するために使用できますが、構文が難しすぎてうまくいきません。ネストされたテーブルとして列を定義する場合、これは 2 倍になります。これにより、正規化とリレーショナル整合性の強制が難しくなります。

私はいくつかの非常にニッチなケースに出くわしましたが、それらはコア データベース テーブルではありませんでした。むしろ、それらはログ テーブルなどのユーティリティでした。

于 2013-03-27T17:06:20.400 に答える
0

ほとんどのテーブル操作は結合を使用して実行できますが、VARRAY とネストされたテーブルが非常に役立つ場合があります。以前は、カンマ区切りの文字列を jdbc から pl/sql に送信し、関数を使用してその文字列を varray に変換し、それを IN 句でさらに操作するために使用していました。この時点で、VARRAY が役に立ちます。

このリンクは良い説明を提供します... http://www.indicthreads.com/9429/plsql-collections-associative-arrays-nested-tables-varray-collection-methods/

楽しい :)

于 2013-03-27T16:49:49.073 に答える