2010-12-09 2 views
0

Я начинаю с Raven БД и пытаюсь обернуть мою голову вокруг другой документ-модель парадигмы ...Моделирование DataModel для базы данных документа

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

+ Event 
    + Album 
    + Image 
    + Image 
    + Album 

Я пытался разработать свои корневые агрегаты, но тем не менее я структурировать его, я заводиться с наличием Events, Albums и Images, все как элементы верхнего уровня, потому что мне нужно обратиться к ним отдельно. Это, однако, похоже на прямую копию из реляционной схемы, что не очень полезно.

Как вы бы структурировали это?

ответ

1

Я бы разместил изображения в качестве вложений. Предполагается, что нет метаданных, которые должны храниться с изображениями. Затем в каждом альбоме я просто сохранил URL-адреса изображений.

Я не совсем уверен, что означает «событие» в этой модели. Имеет ли документ в альбоме какой-либо смысл вне мероприятия? Если нет, тогда у меня просто будет документ с целым графиком. Я предполагаю, что это не так, и вы хотите получить доступ к альбомам вне контекста событий.

Следующий вопрос, может ли быть событие из документа? Если это так, то я бы вообще не моделировал событие и просто дал ему определение как часть индекса. Опять же, я предполагаю, что это не кейс.

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

  1. Просто дублируйте данные альбома всякий раз, когда событие сохраняется. Особенно, если данные альбома редко меняются.

  2. Храните альбомы в качестве ссылок и используйте include при их восстановлении.

+0

Я уже решил это сейчас, но ваш ответ действительно то, что я сделал. Я должен был получить свой очаг вокруг некоторых принципов DDD (только для корневых адресов), тогда я понял, что мне действительно нужно только событие, и все происходит оттуда. – wagi 2011-03-18 08:22:00

Смежные вопросы