Amazon dynamodb 如何在Dynamo DB中建立1:N:N关系模型

Amazon dynamodb 如何在Dynamo DB中建立1:N:N关系模型,amazon-dynamodb,nosql,Amazon Dynamodb,Nosql,我有一所学校,它有许多班级/年级(1-10),每个班级有许多学生,我需要每年存储一个学生的记录,以便我可以更好地划分。所以它基本上是班级->N年->N个学生。如何对此问题建模以将其存储在Dynamo DB上在NoSQL上,设计取决于查询访问模式(QAP)。由于您没有提到QAP,您希望如何检索数据。我假设了一个典型的场景,并提供了以下设计 表:学生 分区键:学生Id 排序键:年份 其他属性:学生姓名、班级等 年份被定义为排序键,因为学生可以在不同年份学习多个年级(1-10)。例如 2010年的今

我有一所学校,它有许多班级/年级(1-10),每个班级有许多学生,我需要每年存储一个学生的记录,以便我可以更好地划分。所以它基本上是班级->N年->N个学生。如何对此问题建模以将其存储在Dynamo DB上在NoSQL上,设计取决于查询访问模式(QAP)。由于您没有提到QAP,您希望如何检索数据。我假设了一个典型的场景,并提供了以下设计

表:学生

分区键:学生Id

排序键:年份

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

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

  • 2010年的今天,他/她可能在五年级
  • 2011年的今天,他/她可能在六年级
在这种情况下,如果您希望获得特定年份的所有学生ID,您可以在年份字段上创建GSI(全局二级索引)

索引的分区键:年


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

在NoSQL上,设计取决于查询访问模式(QAP)。由于您没有提到QAP,您希望如何检索数据。我假设了一个典型的场景,并提供了以下设计

表:学生

分区键:学生Id

排序键:年份

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

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

  • 2010年的今天,他/她可能在五年级
  • 2011年的今天,他/她可能在六年级
在这种情况下,如果您希望获得特定年份的所有学生ID,您可以在年份字段上创建GSI(全局二级索引)

索引的分区键:年


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

作为一名商人,我可以用不同的方式来表达这一点。我经营多家店铺,每家店铺每天都有多笔交易。每笔交易都包含一组订购的产品。作为一名商人,我需要跟踪我的库存、管理账户/账单等。在NoSQL中,关系并不重要。您需要提供访问模式,即如何查询数据库表。示例:按店主或交易或店铺查询。这比关系更重要。你需要在这里有完全不同的想法。在设计NoSQL数据库时,需要删除SQL设计帽。否则,它不会起作用。让我换一种说法,作为一个商人,我经营多家店铺,每家店铺每天都有多笔交易。每笔交易都包含一套订购的产品。作为一名商人,我需要跟踪我的库存、管理账户/账单等。在NoSQL中,关系并不重要。您需要提供访问模式,即如何查询数据库表。示例:按店主或交易或店铺查询。这比关系更重要。你需要在这里有完全不同的想法。在设计NoSQL数据库时,需要删除SQL设计帽。否则,它就不起作用了。