假设我正在为电话号码建模。我有一个为PhoneNumber
的实体,另一个为Person
。有一个链接表表示PhoneNumber
和Person
之间的链接(如果有的话)。链接表也有一个DisplayOrder
的字段。可选多对多关系的域模型
当访问我的域模型时,我有几个用例来查看Person
。
- 我可以看看他们没有任何
PhoneNumber
信息。 - 我可以看看他们的具体
PhoneNumber
。 - 我可以看看他们和他们所有的当前(或过去)
PhoneNumbers
。
我试图模拟Person
,不仅为标准的CRUD操作,但对于PhoneNumbers
的(UN)分配到Person
。我无法表达两者之间的关系,特别是对于DisplayOrder
财产的尊重。我可以想到几个解决方案,但我不确定哪个(如果有的话)是最好的。
- 具有
Person
和PhoneNumber
属性的PhoneNumberPerson
类(最接近数据库设计) - 一个
PhoneCarryingPerson
类,从Person
继承和拥有PhoneNumber
属性。 - 一个
PhoneNumber
和/或PhoneNumbers
财产上Person
(和VIS-A-反之亦然,一个Person
财产上PhoneNumber
)
什么是模型这是有道理的,从一个域模型视角的好办法?如何避免错位的属性( Person
)或有条件填充的属性?
+1 - 建模连接Person和PhoneNumber作为实体本身的Edge是最有意义的,因为它允许您随时向该Edge添加额外信息。 – 2010-05-03 20:00:31
什么样的信息可以更有意义地生活在边缘,可以说,而不是由那个边缘加入的实体之一? – 2010-05-03 20:05:02
我开始实现这一点,我发现时间片是问题更多的部分。我必须通过一个约会找到电话号码,但在那个时候,这个人不再是一个人,而是一个历史人物。这有点奇怪,但有效。 – Greg 2010-05-03 20:23:52