MongoDB 多对多关系的模式设计
MongoDB schema design for Many-to-Many Relationship
我遇到了 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, ... ] },
... ]
- 将关系存储在第三个 table (https://www.techighness.com/post/nosql-many-to-many-bound-unbound-associative-examples/)
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 结构中的多对多关系,哪种方法更好?
我觉得两种结构都可以,很难说哪个更好。
有一篇好文章在:https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-3
请参阅第 6 条规则:“...与 MongoDB 一样,您如何对数据建模完全取决于您的特定应用程序的数据访问模式。您希望构建数据以匹配您的应用程序查询的方式和更新它。 ..."
我遇到了 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, ... ] },
... ]
- 将关系存储在第三个 table (https://www.techighness.com/post/nosql-many-to-many-bound-unbound-associative-examples/)
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 结构中的多对多关系,哪种方法更好?
我觉得两种结构都可以,很难说哪个更好。 有一篇好文章在:https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-3 请参阅第 6 条规则:“...与 MongoDB 一样,您如何对数据建模完全取决于您的特定应用程序的数据访问模式。您希望构建数据以匹配您的应用程序查询的方式和更新它。 ..."