2011-01-12 9 views
0

この問題のデータ構造を判断するのに助けが必要です。データはタイプとサブタイプがあり、主にサブタイプはnullですが、ごく少数のタイプではサブタイプに値があります。別の表で使用できるソース表からデータを読み取る必要があります。この情報をすべて格納するためにアプリケーションで使用できるデータ構造はどれですか?アプリケーションには、Type_idに関する情報はありません。そのデータベースのためだけです。したがって、Type、SubType、Source Tableをデータ構造体に保存する必要があります。 alt textこの特定の問題に使用するデータ構造はどれですか?

+1

あなたはデータ構造またはクラス構造を求めていますか? –

+0

私はそれを構成可能にしようとしているので、クラスを使用したくありません。すなわち、型テーブルに新しい列を追加することができ、アプリケーションは新しい列を取得する必要があります。これらの値はすべてアプリケーションキャッシュに保存する必要があります。したがって、タイプおよびサブタイプIの特定の組み合わせに対するアプリケーション要求ソーステーブルがデータ構造からそれを取り出すことができるときはいつでも。私は2つの辞書を使うことを考えました。私は型と他の型のいずれかの型とその他の値をソーステーブルに与えます。しかし、辞書はここで重複した値を許可していませんtype_id 3広告4タイプはC –

+0

このデータに対して実行する操作は何ですか?このデータはどのように使用されますか? – Davidann

答えて

2

なぜ2つのクラスを使用しないのですか?

タイプは、サブタイプインスタンスフィールドを持つメインクラス(nullでもかまいません)です。

class Type 
{ 

    public SubTypeClass SubType {get; set;} 

    public string Id {get;set;} 

} 

私はそれがconfiguratble作るために しようとしているため、クラスを使用する必要はありません。すなわち 我々はタイプテーブルに新しい列 を追加すると、本当に必要でない限り、アプリケーション がピックアップ新しい列

が、私はこれに反対をお勧めしなければならないことができるはずです。通常、データベーステーブルが本当に正当な理由で変更され、アプリケーションデザインの見直しが必要な場合...列が狂って成長する可能性のあるテーブルがあれば、データベース設計はおそらくあまり良くないとは確かに形式化されていません(標準SQLデータベース)。

sub_typeは本当に素晴らしい定義ではなく、私はそれを分類の例として使用していると仮定します。あなたが見つけ出すように銀色の弾丸データ構造を作成しようとしないでください。それはそれが解決するより多くの問題をもたらします。特定の関連するデータテーブルが変更された場合、あるクラスを変更すると、良い設計では、直接SQLクエリよりもうまく機能するすべてのクラスに良い結果が得られるほど大したことではありません。

1

編集:どのようにデータを知らなくても

SELECT table1.Type, table1.SubType, table2.Source from table1 JOIN table2 on table1.type_id = table2.type_id; 

エンド編集

のようなクエリを使用してDBからタイプ/サブタイプ/ソースのタプルを取得します。を使用する場合は、次の操作を行うことができます。

(シングルタイプ/サブタイプ/ソースタプルを表します)columnDataはに挿入、それは次のように行われることになるとき:

columnData.put("Type", type); 
columnData.put("SubType", subtype); 
columnData.put("Source", source); 

この方法は、新しい列が追加されたとき、あなたはクラスの構造を変更する必要はありませんDBに。

そして、あなたが使用することができ、その後、メインアプリケーションでは、:もちろん

List<MyData> list; 

を、この答えは、このデータがどのように使用されるかに応じて変更することができます。

+0

Type-Sub-Type-Sourceをマッピングするにはどうすればよいですか?つまり、型とサブタイプに基づいてソースを検索/取得するにはどうすればいいですか?リストへの入力は、タイプとサブタイプです。ソースを取得したいですか? –

+0

質問で、プログラムでType_idが利用できないと言った場合、SQLクエリを使用してType/SubType/Sourceタプルを生成します。SELECT table1.Type、table1.SubType、table2.Source from table1 JOIN table1.type_id = table2.type_idのtable2。次に、これらのタプルをプログラムに供給することができます。また、質問のType/Subtypeに基づいてSourceを検索/取得したいという事実を記入してください。 – Davidann

関連する問題