2010-11-25 4 views
3

현재 포럼 (질문/답변) 기반 응용 프로그램을 개발 중입니다.
C# ASP.net MVC 및 MongoDB를 사용하여 데이터를 저장합니다.C#/ASP.net MVC로 NoSQL 포럼 응용 프로그램 모델링

현재 모델을보고 있습니다.
이 같은 별도의 클래스를 가지고 생각했다 : (간체)

public class Question 
{ 
    public string ID { get; set; } 

    public string Title { get; set; } 
    public string Body { get; set; } 
    public List<string> Tags { get; set; } 
    public DateTime DateCreated { get; set; } 

    public string ForumID { get; set; } 
} 

답변

public class Answer 
{ 
    public string ID { get; set; } 
    public string QuestionID { get; set; } 
    public string Body { get; set; } 
    public DateTime DateCreated { get; set; } 
} 

내 질문입니다 :
는 "응답"
내가에게 갖는 가장 오전 처리 방법 (위의 모델 에서처럼) 두 개의 별개의 엔티티
또는 내 Question 모델에 List of Answer가 있어야합니까?

일부 요구 사항이와

이되는 NoSQL DB에 저장되는 ... 내가 답변 등의 수를 표시 할 수 있도록해야한다는 점이다, 나는 일을 비정규한다 알고 있어요,하지만 어떻게 할 수 전체 게시물을 검색하지 않고 답변을 삽입합니까? MongoDB에서 NoRM을 사용하여 그러한 종류의 작업이 가능합니까?

답변

6

일반적으로 MongoDB에서는 질문에 답변을 포함시킵니다. 99 %의 시간은 질문으로 질문 할 것이므로 동시에 답변을 얻을 수도 있습니다. 당신이 질문에 대한 답변을 다시 가져 오는 경우

일부 요구 사항은

... 내가 대답의 수를 표시 할 수 있도록해야한다는 점이며, 이것은 정말 쉽습니다. 당신은 해답을 가진 배열 /리스트/콜렉션을 가질 것이다. 그래서 너는 그 길이를 잡을거야.

하지만 전체 게시물

MongoDB를가 원자 "$ 푸시"작업을 지원을 검색하지 않고, 대답을 삽입하는 방법에 대해 설명합니다. 즉, 실제로 클라이언트에서 문서를로드하지 않고 배열에 항목을 추가 할 수 있습니다. 자바 스크립트 쉘에서, 그 결과는 다음과 같습니다

db.questions.update({_id : your_id}, { $push : { answers : your_answer_object } });

그래서 MongoDB를이 가능하다. NoRM 드라이버가 실제로 이러한 유형의 동작을 허용하는지 확인해야합니다 ($ push를 지원하지 않으면 실제로 뭔가 빠졌습니다).

2

답변은 질문의 일부 여야합니다.

공개 클래스 질문 { public string ID {get; 세트; }

public string Title { get; set; } 
    public string Body { get; set; } 
    public List<string> Tags { get; set; } 
    public DateTime DateCreated { get; set; } 

    public string ForumID { get; set; } 
    public List<Answers> Answers { get; set; } 
} 

조인이 부족하기 때문에 문서 데이터베이스를 사용하면 전체 그래프의 인스턴스를 하나의 문서에 저장할 것을 권장합니다.