Как лучше всего реализовать генеалогическое древо с помощью ASP.NET MVC и SQL Server

Я пытаюсь создать веб-сайт Family Tree (для личного использования) с использованием MVC3 и SQL Server 2008, однако я относительно новичок в MVC3 (с использованием Razor и Entity Framework), но достаточно хорошо знаю SQL Server. Я очень расстроен и испытываю искушение разработать веб-сайт с использованием WebForms, поскольку я очень хорошо знаком с этой технологией.

Мой вопрос заключается в том, что я разделен между следующими двумя подходами, но застрял в том, как реализовать либо с помощью MVC3, либо с Entity Framework: 1) использование таблицы Person, содержащей информацию о человеке, и таблицы-связки для хранения отношений между людьми, хранящимися в таблице Person. .

2) Вложенные наборы, хранящие всю информацию в одной таблице.

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

Я надеюсь, что предоставил достаточно информации, если нет, пожалуйста, спросите меня для более подробной информации.


person tmccallion    schedule 14.05.2011    source источник
comment
В общем случае генеалогические деревья на самом деле не похожи на деревья. (Подумайте о межпоколенческих браках между родственниками. И о детях, которые не имеют ничего общего с браком. Больше похоже на сеть, чем на дерево.) Возможно, вы захотите убедиться, что вложенный набор приспосабливается к этому.   -  person Mike Sherrill 'Cat Recall'    schedule 15.05.2011


Ответы (1)


То, как вы организуете свои данные в хранилище данных, имеет очень мало общего с MVC. Весь доступ к данным абстрагирован в части M (модели), и то, как он реализован в бэкенде, не имеет значения, уровень модели может быть другим, но по-прежнему представлять тот же уровень для контроллера (часть C).

Это как раз и есть причина использования такой системы, как MVC. Вы можете (например) реализовать веб-сайт MVC с использованием MS SQL, а затем перейти на Oracle позже. Единственный код, который необходимо изменить, — это код в модели. MVC позволяет разделить задачи.

Итак, чтобы ответить на ваш вопрос: реализуйте дизайн SQL так, как вы считаете, будет работать лучше всего. Затем, когда модель будет написана, она будет «переведена» на интерфейс, необходимый для контроллеров и представления.


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

person Hogan    schedule 15.05.2011