2012-03-14 73 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

相關問題