2011-01-03 4 views
2

Я столкнулся с вопросом относительно схемы для MongoDB. Со ссылкой на пример на MongoDB Schema Design относительно db.students и db.courses.MongoDB Schema Design - Новая коллекция?

Поскольку я больше привык к структурированному SQL, я все еще смущен этой ссылкой или проблемой встраивания. Таким образом, пример показывает только курс в пределах db.students, ссылается на db.courses. Поэтому, если бы я классифицировал свои курсы, такие как humanities, languages и т. Д., Как я должен это делать?

Что было бы лучшим способом сделать это?

    1. создать коллекцию под названием `db.categories` и ссылаться на db.courses на нее?
// db.courses 
{ name: Biology, cat: 1 } 
{ name: English, cat: 2 } 

// db.categories 
{ cat: 1, name: Humanities } 
{ cat: 2, name: Languages } 
    2. просто встраивать в курсах?
// db.courses 
{ name: Biology, cat: Humanities } 
{ name: English, cat: Languages } 
{ name: History, cat: Humanities } 

Может кто-нибудь пожалуйста, пожалуйста, посоветуйте, что мне делать?

спасибо.

ответ

3

Введение:

в вашем случае оба варианта будет хорошо, потому что категория просто перечисление вам не нужна категория нагрузки для отображения курса, вам просто нужно создать некоторое перечисление и получить название категории по идентификатору ,

Но, например, если у вас есть таблицы db.users, и у каждого пользователя есть коллекция db.courses, вам не нужно создавать отдельный документ, вам просто нужны вложенные курсы сбора. И это действительно здорово, потому что в sql вам нужно создать отдельную таблицу с одной ссылкой на многие.

Одно из преимуществ базы данных документов заключается в том, что вы можете создавать большие документы с вложенными коллекциями и не нуждаться в объединении таблиц.

Ответ:

Так что в вашем случае я предлагаю два способа:

  1. Создать перечисление для категорий и получить название категории по идентификатору (но не загружать из Монго).
  2. Просто скопируйте название категории в курс (но в первом случае лучше, потому что, если имя категории было изменено, вам необходимо обновить каждый курс с именем новой категории).