2012-03-14 70 views
0

我正在研究SIP路由信息的数据模型。我们以电话号码1-212-123456为例。两个服务提供商A和B具有路由信息(例如,IP地址)以建立到该电话号码的SIP会话。实体或值对象?

因此,在我的模型中,我有一个实体,名为电话号码。我的问题是:是否有意义将电话号码元素定义为值对象?

首先,电话号码只存在于一个或多个服务提供商的环境中。如果没有服务提供商知道该电话号码的路由信息​​,则后者不存在。

二,如果电话号码是一个值对象,将有两个相同电话号码的实例,每个服务提供商一个。在这种情况下,实体的主键将包含一个外键,该外键引用ServiceProvider。在这种情况下,我发现有一些数据重复。

谢谢

+0

任何想法......? – 2012-03-22 20:08:38

回答

1

值对象没有标识,它可以通过它的属性进行标识。如果您的“TelehponeNumber”类的两个实例被定义为相等,如果它们包含相同的数字,则它们可以被视为值对象,但是您对于使用值对象的方法非常正式。如果将“TelephoneNumber”定义为一个值对象,则不会将其填入自己的表中并为其指定身份(无主/外键密码),您将其作为另一个实体的成员(路由信息似乎是正确的地方,如果我正确理解你的域名)。你真的不关心有多少个有价值对象的实例,因为它们只是另一个实体的一部分。

典型值对象是电话号码,电子邮件地址,金钱,社会安全号码等

+0

最后,我将TelephoneNumber类型定义为实体,因为我需要区分单个服务提供商的电话号码。电话号码字符串将是电话号码实体的身份,并且该身份对于ServiceProvider是本地的。 – 2012-03-26 10:00:37

+0

平等的问题确实是关键。如果你有两个电话号码,Verizon的(111)111-1111之一和AT&T的(111)111-1111之一,你认为它们是否相等? – Mathieson 2013-02-15 23:19:14

相关问题