2017-02-24 76 views
0

我有一所拥有许多班级(1-10级)的学校,每个班级都有很多学生,我需要每年存储学生的记录这样我可以更好地进行分区。所以它基本上是Class-> N年 - > N的学生。如何模拟此问题以将其存储在Dynamo DB上我如何在Dynamo DB中建模1:N:N关系

回答

2

在NoSQL上,设计取决于查询访问模式(QAP)。正如你还没有提到QAP,你想如何检索数据。我假定了一个典型的场景并提供了下面的设计。

表:学生

分区键:学生证

排序关键字:一年

其他属性:学生姓名,班级等

年被定义为排序键,因为学生可以在不同年份的多个年级(1-10)学习。对于例如,

  • 2010 - 他/她可以在5级
  • 2011 - 他/她可能是在6年级

在情况下,如果你想获得的所有学生一年的ID,你可以年创建GSI(全球二级指数)。该指数

分区键:今年

如果您有任何其他访问模式,请更新的问题。以便我们可以讨论该特定查询访问模式(QAP)的答案。

+0

让我把这个不同作为一个商人,我运行多个商店,每个商店每天都有多个交易。每个交易包含一组订购的产品。 作为一名商人,我需要跟踪我的库存,管理账户/帐单等 – Bukhtawar

+0

在NoSQL中,关系并不重要。您需要提供访问模式,即如何查询数据库表。示例:由店主或交易或商店进行查询。这比关系更重要。你需要在这里完全不同。设计NoSQL数据库时,您需要删除SQL设计帽。否则,它将无法正常工作。 – notionquest