我正在为一个研究所设计一个dynamodb表。它有学院、学生、科目和教师等实体。他们之间的关系是这样的。
我选择institute id作为PK,location作为SK。但在这种情况下,有更多到许多关系。那么,在dynamodb中如何处理这种情况呢?
提前谢谢。
发布于 2020-09-28 11:36:31
DynamoDB是一个noSQL数据库,在该数据库中,您应该尽可能地去还原和复制您的数据。您正在使用SQL进行思考,并试图将您的数据规范化,您需要转换您的思维方式。
为每个学院、学生、教师和学科创建一个项目。在学院内部创建一个students地图或列表(我更喜欢以ID为键的地图),以及学生内部的institutes地图或列表。这些地图或清单是由你的原始物品的副本组成的:
inst-0 | USA | Institute name | { stud-0: { name: John }, studo-1: { name: Matt } }
-----------------------------------------------------------------------------------------------------------------
stud-0 | John | { inst-0: { name: Institute name } } |
-----------------------------------------------------------------------------------------------------------------
stud-1 | Matt | { inst-0: { name: Institute name } } |这里的缺点是,当原始的更改时,您需要更新每个副本。但是,这通常不是一个问题,除非您的数据变化非常频繁。
如果您复制的数据经常更改,您可以创建一个中间关系项,但可能关系数据库更适合您的项目。
您还可以为每个学生创建一个项目,并将对这些学生的引用存储到学院项目中。但是在这里,你并不是在去篡改你的数据,但是如果你的数据经常变化,或者你在每个学院有大量的学生,这可能是一个可行的解决方案。
https://stackoverflow.com/questions/64096902
复制相似问题