我正在试图弄清楚如何最好地为我的系统实现这个...并且现在让我的脑袋离开RDBMS空间......
我当前数据库的一部分有三个表:Show,ShowEntry和Entry.基本上,ShowEntry是Show和Entry之间的多对多连接表.在我的RDBMS中认为这是合乎逻辑的,因为对Show细节的任何更改都可以在一个地方完成,而在Entry中也是如此.
在基于文档的存储中反映这一点的最佳方法是什么?我确信没有一种方法可以做到这一点,但我不禁想到,基于文档的存储是否适用于这种情况.
仅供参考,我目前正在考虑实施RavenDB.虽然关于一般NoSQL设计的讨论会很好,但RavenDB的重点将更加精彩!
感谢:D.
Ric*_*ole 21
在对文档数据库中的多对多关系建模时,通常只在其中一个文档中存储一组外键.您选择的文档在很大程度上取决于您想要遍历关系的方向.以一种方式遍历它是微不足道的,以另一种方式遍历它需要一个索引.
以购物篮为例.更确切地知道特定篮子中的哪些物品比哪个篮子包含特定物品更重要.由于我们通常在逐个项目的方向上遵循关系,因此将项目ID存储在一个篮子中比在项目中存储篮子ID更有意义.
您仍然可以通过使用索引遍历相反方向的关系(例如,查找包含特定项目的篮子),但索引将在后台更新,因此它并不总是100%准确.(您可以等待索引变得准确WaitForNonStaleResults,但该延迟将显示在您的UI中.)
如果您需要在两个方向上立即100%准确,您可以将外键存储在两个文档中,但是只要创建或销毁关系,您的应用程序就必须更新两个文档.