Как мне смоделировать это отношение для документа в RavenDB? - PullRequest
3 голосов
/ 28 февраля 2012

Я работаю над своим первым серьезным проектом с RavenDB и хотел бы получить предложения.В настоящее время у меня есть две концепции в моей области, докладчики и презентации.Докладчики могут выступать много раз, и в настоящее время у презентации есть один докладчик.В реляционной модели у меня было бы две таблицы, но я не уверен, как выбрать схему документа.

Я хотел бы иметь возможность показывать предстоящие презентации с минимальной информацией о докладчике, а также иметь страницу докладчиков, на которой отображаются сведения обо всех их презентациях.То, что я придумал, находится здесь:

Ведущий: https://github.com/ssdnug/Public-Site/blob/master/src/Web/Models/Presenter.cs

Презентация: https://github.com/ssdnug/Public-Site/blob/master/src/Web/Models/Presentation.cs

У кого-нибудь есть предложения по улучшению схемы?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2012

Ваша текущая модель оптимизирована для максимальной производительности, поскольку она денормализует ссылки на обоих концах.Как правило, это хорошо, но это связано с необходимостью выполнять больше работы, когда название меняется с обеих сторон.

Если вы можете жить с немного меньшей производительностью (в большинстве случаев вы определенно можете ), я бы предпочел вместо этого подход .Include().

Для общегообзор о том, какие варианты у вас есть для решения этой проблемы, посмотрите здесь на мой пост: http://daniellang.net/how-to-handle-relations-in-ravendb/

3 голосов
/ 28 февраля 2012

NotMyself, Вам не нужно свойство Presenter.Presentations. Вы очень редко, если вообще когда-либо, будете пытаться загрузить презентации от докладчика, и когда вы это сделаете, вы захотите сделать это с помощью подкачки, сортировки и т. Д.

Отмена нормализации докладчика в презентации - это хорошо. Вам не нужно будет обновлять имя докладчика. Например, раньше я ходил в основном в роли Ayende Rahien, сейчас я - в роли Oren Eini. Однако старые презентации не нужно менять.

...