当我在stackoverflow上问这个问题时,我可以为它添加标签。所以,在DDD中,我会有一个类问题,不知何故有标签。建模它的一种方法是使用标签列表,因为标签实际上不是一个实体(或者是它?)。
public class Question
{
// ...
public List<string> Tags;
}
但是,在数据库中,我可能会有这三个表:
Question: QuestionID, Title, Content
Tag: TagID, Title
QuestionTag: QuestionID, TagID
从NHibernate的角度来看,这可能吗?会被推荐吗?你会怎么做?
答案 0 :(得分:1)
取决于:
你可以:
您不能在字符串列表中包含标记,这些标记可以在几个问题中重复使用。如果它们应该被重用,它们就必须是实体。
我提出的每个解决方案都有其优点和缺点。这取决于你最重要的是说哪种解决方案最好。
答案 1 :(得分:0)
虽然您所描述的内容是可能的,但您可能需要将Tag视为一个实体。考虑您要显示特定标记的问题列表的情况。因此,它将导致Tag实体和Question实体之间的多对多关系。数据库结构几乎会以你想象的方式结束。