2011-01-12 63 views
0

我需要幫助來確定這個問題的數據結構。數據是我們的類型和子類型,大多數子類型爲空,但對於很少的類型,子類型有一個值。我需要讀取另一個表中可用的源表中的數據。我可以在應用程序上使用哪種數據結構來存儲所有這些信息?該應用程序沒有關於Type_id的信息。它僅用於數據庫。所以我們應該在數據結構中保存Type,SubType,Source Table。 alt text我應該爲這個特定問題使用哪種數據結構?

+1

你在問數據結構還是類結構? – 2011-01-12 15:43:20

+0

我不想使用類,因爲我試圖使其可配置。即我們應該能夠在類型表中添加一個新列,並且應用程序應該拾取新列。我必須將所有這些值存儲在應用程序緩存中。所以無論何時應用程序請求源表的類型和子類型I的特定組合都應該能夠從數據結構中檢索它。我想過使用2個字典。我爲類型和其他類型或子類型和值將給源表。但字典不允許在此處輸入重複值type_id 3 ad 4 type is C – 2011-01-12 15:52:43

回答

2

爲什麼你不使用兩個類?

類型將是具有子類型實例字段(可以爲null)的主類。

class Type 
{ 

    public SubTypeClass SubType {get; set;} 

    public string Id {get;set;} 

} 

我不想因爲我 試圖使它configuratble使用類。即 我們應該能夠在類型表中添加一個新列 和應用 應該皮卡新列

我會建議不要這一點,除非確實需要。通常,如果數據庫表的更改出於一個非常好的理由,應該重新考慮應用程序設計......如果您有可能瘋狂增長列的表,那麼您的數據庫設計可能不是很好,肯定沒有正式化(我假定標準SQL數據庫)。

考慮到,sub_type不是一個很好的定義,我假設你將它用作分類的一個例子......不要嘗試製作銀色的子彈數據結構,因爲你會發現它帶來了更多的問題,它解決了。如果一個給定的關聯數據表發生變化,改變一個類的好設計對於所有類都沒有比直接SQL查詢更好的類來說並不是什麼大事。

1

編輯

通過查詢獲得更多的DB類型/子/來源的元組:

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

編輯完

不知道如何將數據要使用,您可以執行以下操作:

class MyData{ 
    HashMap<String, String> columnData; 
} 

當插入columnData(代表一個單一類型/子/來源元組),它會像做:

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

這樣,你不需要改變類結構時添加新列到DB。

,然後在主應用程序,你可以使用:

List<MyData> list; 

當然,這個答案可能取決於這些數據將如何使用改變。

相關問題