NHibernate Mapping / Советы по дизайну - соединяйте таблицы - PullRequest
0 голосов
/ 11 января 2009

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

Я хотел бы создать систему событий календаря на основе следующих 4 таблиц:

tb_events

идентификатор, Дата, резюме,


tb_group

идентификатор, название, родитель, родословная,


tb_course

идентификатор, имя,


tb_staff

идентификатор, название, электронная почта


Класс событий в настоящее время настроен как

id
summary
date
calDetails IList<CalDetails>

класс CalDetail

id
name

Моя дилемма заключается в том, использовать ли одну таблицу соединений - связывать идентификатор события с идентификатором группы, курса или персонала или следует ли добавлять группы, коллекции сотрудников курса в класс мероприятия.

Наличие коллекции для каждого из них было бы проще отобразить в спящем режиме, но мне интересно, какой удар по производительности я получу, используя 3 объединения. (Таблица событий может содержать до 10-20000 записей). Кроме того, поскольку мне нужно только свойство name при просмотре события, использование одной коллекции упростит добавление к миксу другого типа «детализации события».

Если бы я пошел с одной коллекцией, можно ли отобразить ее в NHibernate. Я искал примеры, но не могу их найти. Что заставило меня задуматься о том, что, возможно, это не лучший способ сделать это.

В любом случае, я был бы благодарен за любые мысли.

Ответы [ 2 ]

2 голосов
/ 12 января 2009

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

1 голос
/ 11 января 2009

Если вы используете наивный подход с использованием трех объединений, вы можете получить огромный удар по производительности. У Ayende есть несколько примеров использования MultiCriteria для восстановления производительности.

Вы также можете пройти маршрут подклассов, если это имеет смысл.

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