如何为多个实体设计讨论

时间:2011-07-21 12:27:41

标签: architecture

我有像Project,Client,Task这样的实体,每个实体都应该有帖子列表(也就是讨论)。问题是,由于每个实体(项目,客户端,...)都映射到它自己的表,我不能通过“owner_id”从讨论中引用该实体,因为它是具有id = 1的客户端和具有id的项目的ambigious = 1并且讨论不知道它是否属于项目或客户。我想避免为客户和项目的另一个独立讨论实体提供独立的讨论实体。(因为后来我可能想要将讨论添加到另一个实体,因此它不是真正“可扩展”)。我知道我可以将discriminator属性(列)添加到讨论中,以区分clientDiscussion和projectDiscussion。我想知道这是否是做这种事情的正确方法。你嘀咕什么?

2 个答案:

答案 0 :(得分:0)

就个人而言,你需要创建一个抽象的实体。

EntityType<-Entity<-EntityDiscussion->Discussion

enter image description here

Project / Client / Task中的字段有何不同?

答案 1 :(得分:0)

讨论是否只能涉及单个实体?如果是这样,那么你使用鉴别器是我所见过的一种方法,你已经概述了为什么明显的选择对你没用。

我的直觉是,在现实世界中,讨论并不总是指一种事物。因此,您可能还需要一个“主题”实体,其中“讨论”包含许多主题,但仍然需要一个鉴别器。