Советы по "схеме" для некоторых связанных данных в MongoDB - PullRequest
0 голосов
/ 10 сентября 2010

У меня есть проект, над которым я работаю, и я хочу использовать MongoDb.

Описание: Программа является анкетой для субъекта.Субъектом может быть колледж, факультет или кафедра.Форма регистрируется в год для любого из этих объектов, хотя в основном это департаменты.Запросы могут быть сделаны на любой из них.При необходимости данные могут быть агрегированы и использованы для ранжирования.

Отношения: колледжи содержат факультеты, а факультеты содержат кафедры.У каждого из них (ну отделы на данный момент есть формы).Может быть несколько типов форм (на данный момент 3)

Проблема: Как мне представить этот сценарий в MongoDb?Во-первых, это колледж> факультет> кафедра отношений.Как мне эффективно это представить?

Мои нынешние мысли: 1. Что касается данных колледжа> факультета> кафедры, я подумал, что могу использовать одну коллекцию и пометить их в соответствии с:

{name:'Department X', tags: ['department'], parent: '???'}

.Родитель может быть идентификатором родительского элемента, поэтому в этом случае идентификатор связанного отдела.Другой вариант был

colleges: {name: 'some college',etc,faculties: [{name: 'some faculty', etc, departments: [{...}]}].

Проблема заключалась в том, что я использовал идентификатор для идентификации каждого, например, отдела.

Что касается форм, я все еще не уверен.Если я включу данные в записи отделов, насколько легко будет получить данные для ряда отделов, скажем, на факультете, и выполнить суммирование по большинству полей (большинство - число)?

Действительно нужна некоторая помощь здесь, исходя из реляционного фона.Я использую c # с CSMongo от Hugo.

С уважением, Ричард

1 Ответ

0 голосов
/ 20 мая 2011

Вы уверены, что на факультетах может быть факультет, а не в колледже?

Кроме того, как выглядит форма?

Пожалуйста, дайте мне полный пример одного документа с колледжем, 2 факультета, мало кафедры и мало форм.Таким образом, я мог бы дать вам некоторое руководство.

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