2013-04-09 60 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