Я пытаюсь понять концепцию хранения документов и не понимаю, как это применимо к некоторым ситуациям.Например, в случае CMS / движка блога могут быть данные в виде:
- Сообщений
- Категории
- Пользователи
- Комментарии
В чем-то вроде MySQL можно иметь таблицу для каждого, а затем таблицу соединения для каждого набора связанных данных.то есть posts_table
, categories_table
, categories_posts_table
В этом случае posts_table
будет содержать почтовые данные, categories_table
будет содержать данные категорий, а categories_posts_table
будет содержать 2 внешних ключа, используемых дляпривязать определенную категорию к определенному сообщению.
Как это переводится в нечто вроде mongodb?
Единственный способ увидеть, как эта установка структурирована в монго, это что-то вроде:
Вывод одного документа bson может выглядетьпохоже на:
{
"title" : "title",
"body" : "blah body",
"categories" : [
"category1",
"category2"
]
}
Это имеет смысл, но кажется, что категории будут дублироваться повсюду.Без какого-либо отношения вы никогда не сможете просто изменить название категории и отразить его во всех ваших сообщениях в блоге (?).
Кроме того, что, если бы это были двоичные документы, занимающие много места?Вместо дублирования одного и того же изображения снова и снова кажется, что отношения будут работать лучше?
Думаю, это довольно открытый вопрос, но я искал чей-либо вклад в то, как я должен мысленно разобрать проблему, чтобыскажите, должно ли это соответствовать БД, как Монго или нет.И не менее важно, как правильно структурировать данные?
Я не затрагивал пользователей, но кажется, что ВСЕ в этом случае в конечном итоге окажется встроенным документом в коллекции пользователя, так как пользователь запускает все.
большое спасибо.