У меня проблема с отношением «многие ко многим» в схеме NoSQL.Я нашел несколько руководств, и есть два способа справиться с этим -
- сохранить отношения в обеих коллекциях (http://learnmongodbthehardway.com/schema/schemabasics/)
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, ... ] },
... ]
сохранить отношение в третьей таблице (
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?