Дизайн базы данных - сохранение всего объекта пользователю или только идентификатор объекта? - PullRequest
0 голосов
/ 16 февраля 2019

база данных noob здесь с использованием MongoDB, в моей программе у меня есть пользователи, и ядром моей программы являются эти дорожные карты, которые я отображаю.Таким образом, каждый пользователь может создавать дорожные карты, сохранять другие дорожные карты, бла-бла ... У каждого пользователя есть поля с именами saveRoadmaps и madeRoadmaps, в которых должны храниться дорожные карты.Мой вопрос заключается в том, должен ли я просто хранить дорожные карты _ids в поле saveRoadmap и creationRoadmaps или во всей дорожной карте?

Я спрашиваю об этом, потому что кажется, что сохранение только _id дорожных карт может спасти хранилище, но это может не пригодиться, когда мне сначала нужно получить данные пользователя, а затем получить дорожную карту с помощьюИдентификатор дорожной карты в пользовательском поле SavedRoadmap / создалRoadmap, в отличие от простого извлечения пользователя, и поле SavedRoadmap уже будет иметь дорожную карту там.

И, между прочим, есть какой-нибудь приятный и краткий дизайн базы данных, пожалуйста, направьте меня к кому-нибудь, если вы знаете какой-либо!

Для пользователя, я хочу, чтобы у него было имя, адрес электронной почты, пароль, описание курса, а также сохраненные дорожные карты и созданные дорожные карты.Пользователь может создавать неограниченные дорожные карты, а также сохранять столько, сколько он или она хочет.Для дорожной карты я хочу, чтобы у нее было имя, категория, time_completion, автор, дата и объект дорожной карты, который будет содержать фактическую строку json, которую я буду использовать для отображения d3.Вот моя Схема пользователя и Схема проезда прямо сейчас:


    const RoadmapSchema = new Schema({
  author: {
    type: String,
    require: false
  },
  name: {
    type: String,
    require: true
  },
  category: {
    type: String,
    require: true
  },
  time_completion: {
    type: Number,
    require: true
  },
  date: {
    type: Date,
    default: Date.now
  },
  roadmap: {
    type: "object",
    require: true
  }
});

и Схема пользователя:

    const UserSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  date: {
    type: Date,
    default: Date.now
  },
  savedRoadmap: {
    type: "object",
    default: []
  },
  createdRoadmap: {
    type: "object",
    default: []
  }
});

Мой вопрос, внутри полей saveRoadmap и creationRoadmap поляПользовательская схема, я должен включить только _id дорожной карты, или я должен включить всю строку json, которая представляет дорожную карту?

1 Ответ

0 голосов
/ 16 февраля 2019

Существует 3 различных метода моделирования данных, которые вы можете использовать для разработки своей системы дорожных карт, основываясь на количестве взаимосвязей между users и roadmaps.

Как правило, вам необходимо отменить нормализацию вашей модели данных на основе на основе запросов, ожидаемых от вашего приложения :

  • От одного до нескольких: Вставить N-сторону, если мощность равна единице, и нет необходимости обращаться к встроенному объекту вне контекста родительского объекта
  • Один ко многим: Использованиемассив ссылок на объекты N-стороны, если количество элементов равно одному-многим или если объекты N-стороны по каким-либо причинам должны стоять в одиночку
  • От одного к Squillions :Используйте ссылку на Одностороннюю сторону в объектах N-стороны, если количество элементов составляет от одного до миллиардов

И, между прочим, есть ли какой-нибудь приятный и краткий дизайн базы данных, прочитанный там,пожалуйста, направьте меня к кому-нибудь, если вы знаете кого-либо!

Полезные правила для схемы схемы MongoDB: Часть 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...