Я немного новичок в NoSQL и изо всех сил пытаюсь понять, как проектировать базу данных, когда разные документы имеют отношения.Я прочитал несколько статей о шаблонах проектирования для NoSQL, но, похоже, получаю противоречивую информацию.Вот ситуация, с которой я сталкиваюсь.
У меня есть коллекция пользователей, и у каждого пользователя есть набор действий, которые они практикуют.Это выглядит примерно так:
[Collection] Users
- [Doc] usr10343
name: Bob
age: 27
- [Doc] usr19282
name: Jenny
age: 32
[Collection] Activities
- [Doc] act19203
name: Warmup Jog
description: {...}
duration: 10m
- [Doc] act28301
name: Burpies
description: {...}
duration: 8m
Теперь действия имеют одинаковое имя, продолжительность и описание для всех пользователей, но есть дополнительные пользовательские данные, например, сколько раз они выполняли это действие иликогда последний раз был.Я создаю подколлекцию под каждым пользователем для его действий, но я вижу два шаблона для того, как его создать.Либо продублируйте все данные об активности, чтобы каждый документ во вложенной коллекции выглядел следующим образом:
- [Doc] instance39201
name: Warmup Jog
description: {...}
duration: 10m
numberOfTimes: 8
lastCompleted: 10/18/2017
, что выглядит как многократное дублирование и реальная проблема, если я когда-либо захочу обновить имя или описание.Или я мог бы использовать следующую ссылку:
- [Doc] instance39201
activity: act19203
numberOfTimes: 8
lastCompleted: 10/18/2017
И мне кажется, что я использую реляционную базу данных без использования SQL.Я что-то пропустил.Есть ли лучший способ приблизиться к этому, которого я не нахожу?Спасибо.