我正在尝试弄清楚如何为我的系统最好地实施此功能...并暂时将我的头脱离RDBMS空间...

我当前数据库的一部分有三张表:表演,秀特里和进入。基本上,Showentry是展览和参赛作品之间的多对多连接表。在我的rdbms中,认为这是非常合乎逻辑的,因为任何更改都可以在一个地方进行,并且与条目相同。

在基于文档的存储中反映这一点的最佳方法是什么?我敢肯定,没有一种方法可以做到这一点,但是我不禁要考虑是否完全适合这种情况。

仅供参考,我目前正在考虑实施Ravendb。尽管关于NOSQL一般设计的讨论将是一个很好的选择,而Ravendb的重点将是很棒的!

感谢:D。

有帮助吗?

解决方案

在文档数据库中建模多对多的关系时,通常只会在其中一个文档中存储外国钥匙的集合。您选择的文档很大程度上取决于您打算穿越关系的方向。一种方法是微不足道的,以另一种方式穿越它需要索引。

以购物篮为例。与哪个篮子包含特定物品相比,确切了解特定篮子中哪些物品更重要。由于我们通常会沿篮子到项目的方向遵循这种关系,因此将商品ID存储在篮子中比将篮子ID存储在项目中更有意义。

您仍然可以通过使用索引在相反方向(例如找到包含特定项目的篮子)的关系穿越该关系,但是该索引将在后台进行更新,因此它不会总是100%准确。 (您可以等待索引变得准确 WaitForNonStaleResults, ,但该延迟将显示在您的UI中。)

如果您需要在两个方向上立即100%准确性,则可以在两个文档中存储外国密钥,但是您的应用程序必须在建立或破坏关系时必须更新两个文档。

其他提示

这个 解决我的问题有很长的路要走!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top