クラスがあり、それを と呼びましょうTableOwner
。そのフィールドの 1 つは、DataTable
名前の列 (主キーでもあります) と金額の列があります。したがって、1 つの主キー列と 2 つ目の非主キー列があります。
私のプログラムでは、TableOwner
インスタンスのコレクションを作成します。コレクションは基本的にセットです。論理的には の順序はなくTableOwner
、それぞれの種類がいくつ存在するかだけが重要です。それぞれDataTable
に異なる金額の値が入力されていますが、それらはすべて同じ主キーを持っています。
たとえば、TableOwner
銀行口座に関するデータを格納するために Imagine が使用されます。各インスタンスは 1 つの口座を表し、口座にDataTable
ある各通貨の量を記録する場合があります。口座ごとに、その口座のドル、ユーロ、またはポンドの数が異なる場合がありますが、金額が 0 (口座にお金がない) またはnull
(データが欠落している可能性がある) の場合でも、すべての口座に同じ 3 つの通貨に関するデータがあります。 )。したがって、基本的には 2 次元のテーブルまたはマトリックスが必要ですが、クラス階層がそのように実装することを妨げています。
これらすべてに対処するための賢明な方法は何ですか? 次のアプローチが考えられます。
1)DataColumn
最初に を作成し、それを のすべての新しいインスタンスに渡してTableOwner
、独自DataTable
の に使用します。欠点: 後で主キーから行を削除することを決定した場合 (たとえば、ユーザーが「ご存知のように、ユーロはもう気にしません。すべてのデータをダンプし、列を削除します。」)、私はコレクション全体を反復処理し、各TableOwner
のテーブルから行を 1 つずつ削除する必要があります。
DataTable
2)すべてのインスタンスで使用されるシングルTableOwner
を作成します (おそらく静的フィールドにします)。テーブルには、1 つの金額列ではなく、Amount1、Amount2 などの多くの列があります。すべてTableOwner
のインスタンスは、初期化時に独自の金額列を作成し、後でその名前を記憶します。行の削除は基本的な DB 操作です。欠点:エレガントではなく、「間違っている」ようです。
ご覧のとおり、どちらにも欠点があります。より良い方法はありますか?
私はデータベースについてあまり知らないので、質問が非常に基本的であるか、奇妙な言葉遣いである場合はお詫び申し上げます。