2009-11-02 3 views
0

stackoverflow에서이 질문을 할 때 태그를 추가 할 수 있습니다. 그래서, DDD에서, 나는 어떻게 든 태그를 가지고있는 클래스 질문을 갖게 될 것입니다. 하나의 모델은 태그가 실제로 엔티티가 아니기 때문에 태그 목록과 함께 모델링 할 수 있습니다 (또는 그럴까요?). NHiberbate의 태그 매핑

Question: QuestionID, Title, Content 
Tag: TagID, Title 
QuestionTag: QuestionID, TagID 

이가 NHibernate에 관점에서 가능할 것이다 :

데이터베이스에서
public class Question 
{ 
    // ... 

    public List<string> Tags; 
} 

은, 그러나, 나는 아마이 세 테이블이있는 것인가? 그것은 추천 될 것이냐? 어떻게 할 건데?

답변

1

이에 따라 달라집니다

  • 당신이 변경/생성/삭제 태그하는 방법
  • 당신이 태그에 의해 태그와 질문에 대한 쿼리 방법
  • 당신은 얼마나 많은 항목과 당신은 필사적으로 성능 트릭을 필요로하는 경우

당신은 할 수 :

  • 태그는 재사용되는 ID가있는 엔티티로 매핑됩니다. 별도의 클래스 (태그)와 두 개의 테이블, 태그 테이블 및 QuestionToTag 테이블 (다른 태그가있는 경우 각 태그 소유자에 대한 추가 XxxToTag 테이블)이 있습니다.
  • 태그를 재사용하지 않는 문자열 목록으로 매핑하십시오. 특수 클래스가 필요하지 않으며 각 태그 소유자 (QuestionTags)에 대한 하나의 추가 표가 있습니다.
  • 태그를 일부 문자로 구분 된 단일 문자열로 매핑하십시오 (예 : 쉼표 또는 공백 이것을위한 수업도 테이블도 없습니다.

몇 가지 질문에 다시 사용되는 문자열 목록에는 태그를 사용할 수 없습니다. 재사용해야한다면 엔티티 여야합니다.

내가 제안한 모든 해결책에는 장점과 단점이 있습니다. 어떤 솔루션이 최고인지에 대해 가장 중요한 것이 무엇인지에 달려 있습니다.

0

설명하는 것이 가능하지만 태그를 엔티티로 간주 할 수 있습니다. 특정 태그에 대한 질문 목록을 표시하려는 상황을 고려하십시오. 따라서 Tag 엔티티와 Question 엔티티 사이에 많은 관계가 될 것입니다. 데이터베이스 구조는 당신이 상상하는 방식대로 끝날 것입니다.