2013-04-09 17 views
1

大衛,我可以問一些澄清,你說什麼,當你說:「你無法左右的this answer關係商店和多到一個連接

連接,使用連接關係專賣店,加盟一個條目到多個「,這是否意味着任何方向?

E.g.存儲1:

| Key1 | Measure1 | 

店2:

| Key 1 | SomeId1 | Measure2 | Measure3 | 
| Key 1 | SomeId2 | Measure4 | Measure4 | 

因此,它是不可能通過把從商店2的加入來存儲一個加入這兩個店?

如果不是,那麼你是否在說,管理這個的唯一方法是複製Store 1中的條目?例如:

Store 1 
| Key 1 | SomeId1 | Measure1 | Measure2 | Measure3 | 
| Key 1 | SomeId2 | Measure1 | Measure4 | Measure4 | 

回答

1

該方向對於一對多來說很重要:它取決於哪個商店是「父」商店。

關係商店包括作爲您的主存儲(您的模式所基於的)的「ActivePivot存儲」的概念。然後,可以將該商店加入一個或多個商店,並提供一組關鍵字段,以便簡化我們稱之爲「兒童」商店。這些兒童商店中的每一家最終都可以與其他商店聯合,等等(您可以用有向圖表示)。

尊重的主要原則是,您永遠不應該有一個「父」商店條目解析爲多個「子」商店條目(我不相信任何循環關係)。

關係門店背後的簡化想法(如RS爲1.5.x/4.4.x到AP)的是,當一個條目被提交到「ActivePivot商店」,那麼,從ActivePivot商店開始,它會遞歸解析這些連接爲了在每個連接的商店中檢索最多一個條目。根據您的模式定義,這些條目將被用於填充事實,然後再將其插入多維數據集中。

如果在多個條目中解析連接結果,則AP將無法選擇使用哪一個來填充事實並引發異常。

回到您的示例,您可以僅在Store 2是ActivePivot Store或Store 1的「父級」(APStore - > ...-> Store2- > Store1),這似乎是你的情況。

如果不是(Store1-> Store2),那麼您將不得不復制Store 1的條目,以確保解析連接時始終只能找到最多一個條目。商店1也就那麼樣子:

| Key 1 | SomeId1 | Measure1 
| Key 1 | SomeId2 | Measure1 

您與商店2將被上田做加盟「鍵,SomeId」,而不只是「鑰匙」,這將確保你找到解決商店1時,只有一個入口 - > Store2

+0

謝謝大衛。那麼,是否應該只有一家店擁有「ACTIVEPIVOT_STORE」類型,其餘的都是香草關係店? – obrienk 2013-04-10 08:28:23

+1

如果您的架構基於關係型商店,那麼應該只有一個ACTIVIVIVOT_STORE,其餘爲香草店。如果你有兩個模式,你可能有兩個ACTIVEPIVOT_STORE – David 2013-04-10 16:10:09