我在NoSQL模式中遇到了“多对多”关系的问题。我找到了一些指南,有两种处理方法-
Student: [
{ _id: 1, name: Hei, courseId: [ 1001, 1002, ... ] }
{ _id: 2, name: Vivian, courseId: [ 1001, 1003, ... ] },
... ]
Course: [
{ _id: 1001, name: Database Design, studentId: [ 1, 2, ... ] },
{ _id: 1002, name: Big Data Analysis, studentId: [ 1, ... ] },
... ]
Student: [
{ _id: 1, name: Hei },
{ _id: 2, name: Vivian },
...]
Course: [
{ _id: 1001, name: Database Design },
{ _id: 1002, name: Big Data Analysis },
...]
Registration: [
{ studentId: 1, courseId: 1001 },
{ studentId: 1, courseId: 1002 },
{ studentId: 2, courseId: 1001 },
{ studentId: 2, courseId: 1003 },
...]
我认为第二种方法会更好,因为第一种方法中存在重复数据,但是第二种方法存在困难-如果查询很复杂,则很难提取我需要的内容(例如,基于关键字和确定学生注册了哪些课程)。在这种情况下,我发现第一种方法的查询要容易得多。
哪种方法在NoSQL结构中处理多对多关系会更好?
答案 0 :(得分:0)
在我看来,这两个结构都不错,很难说哪个更好。 有一篇很好的文章,位于:https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-3 请参阅第六条规则:“ ...与MongoDB一样,数据建模的方式完全取决于特定应用程序的数据访问模式。您希望结构化数据以匹配应用程序查询和更新数据的方式。 ..“