0

我有兩個不同的(沒有繼承)接口:
IInvestableIPricable
和兩個類:
IndexClassFundClass
存儲在我的DB單獨的表。數據庫結構來存儲多繼承類

IndexClassIPriceable
FundClassIPriceableIInvestable

我需要一個表來存儲的價格對一個IndexClassFundClass
我需要一個表來存儲FundClasses投資於

的一種方式可能是有兩個表:PricableInvestable剛剛有一個ID列。
然後對IndexClass外鍵:PricableID
也有兩個外鍵上FundClassPricableIDInvestableID

然後我的價格只需鏈接到PricableID,我的投資只需鏈接到InvestmentID,因爲這些將是唯一的。

另外我可以在價格表上有FundClassIDIndexClassID列,但這看起來不是可擴展的,看起來好像很難合作。

然後讓NHibernate找出它 - 我仍然不是100%肯定它會喜歡!

我無法在互聯網上找到任何有關存儲多重繼承的建議,並想知道是否有人對此有任何想法,或者他們是否曾經處理過類似的問題?

感謝

斯圖

回答

0

所以我結束了以下結構:

FundClass:FundClassID(ETC)
FundClassReturn:FundClassID,ReturnID
IndexClass:IndexClassID(etc)
IndexClassReturn:IndexClassID,ReturnID
Return:ReturnID(etc)

然後我只是在NHibernate映射文件中對它進行排序。我試圖過於老套,並且以數據庫爲中心。我所擁有的一切都是寫入接口,所以我只是簡單地查詢接口,讓NHibernate用其內在的多態處理餘下的部分。奇蹟般有效!

感謝您的幫助,但 - 它激起的端到端解決方案的想法。

0

在這種情況下,我贊成在繼承組成。例如,這些類可以是PriceInfo和InvestmentInfo,您的IInvestable和IPricable接口將包含這些類型的屬性。

編輯:產生的數據庫架構會是這個樣子:

PriceInfo 
--------- 
PriceInfoId 
[Other Stuff] 

InvestmentInfo 
-------------- 
InvestmentInfoId 
[Other Stuff] 

IndexClass 
--------- 
IndexClassId 
PriceInfoId 
[Other Stuff] 

FundClass 
--------- 
FundClassId 
PriceInfoId 
InvestmentInfoId 
[Other Stuff] 
+0

我仍然困惑,我怎麼會這些信息存儲在數據庫,因爲我還需要鏈接到一個特定實體的價格某種程度上即使ID是10的FundClass和ID 10的IndexClass,什麼結構應該我用? – Stu 2009-09-29 15:18:56

+0

外鍵。你仍然有FundClass和IndexClass類。我假設的NHibernate將轉化兩者的PriceInfo和InvestmentInfo性能外鍵。查看我的編輯數據庫模式的外觀。 – Jacob 2009-09-29 15:40:56