2012-03-14 4 views
0

Я работаю над моделью данных для информации маршрутизации SIP. Возьмем, например, номер телефона 1-212-123456. Два поставщика услуг A и B имеют информацию о маршрутизации (например, IP-адреса), чтобы установить сеанс SIP на этот номер телефона.Объект или объект ценности?

Таким образом, в моей модели у меня есть объект под названием TelephoneNumber. Мой вопрос: имеет ли смысл определить элемент TelephoneNumber как объект значения?

Во-первых, телефонный номер существует только в контексте одного или нескольких поставщиков услуг. Если ни один из провайдеров услуг не знает информацию о маршрутизации для этого номера телефона, нет причин для существования последнего.

Во-вторых, если Номер телефона является объектом значения, то будут два экземпляра одного и того же номера телефона, по одному для каждого поставщика услуг. В этом случае первичный ключ объекта будет включать в себя внешний ключ, ссылающийся на ServiceProvider. В этом случае я вижу, что есть дублирование данных.

Благодаря

+0

Любая идея ......? –

ответ

1

Объект значения не имеют идентичностей, это можно определить по его атрибутам. Если два экземпляра вашего класса «TelehponeNumber» определены как равные, если содержать один и тот же номер, они могут рассматриваться как объекты значений, но вы должны быть очень формальными относительно своего подхода с объектами значения. Если вы определяете «TelephoneNumber» как объект значения, вы не заносите его в свою собственную таблицу и не присваиваете ему идентификатор (нет основного/внешнего ключа mumbo jumbo), вы помещаете его в качестве члена другого объекта (маршрутизация информация представляется правильным местом, если я правильно понимаю ваш домен). Вы действительно не заботитесь о том, сколько экземпляров имеет объекты значений, поскольку они просто являются частью другого объекта.

Типичными объектами ценности являются номера телефонов, адреса электронной почты, деньги, номер социального страхования и т. Д.

+0

Наконец, я определил тип TelephoneNumber как объект, так как мне нужно различать номера телефонов одного поставщика услуг. Строка номера телефона будет идентификатором объекта TelephoneNumber, и этот идентификатор будет локальным для ServiceProvider. –

+0

Вопрос о равенстве действительно является ключевым моментом. Если у вас есть два телефонных номера, один из (111) 111-1111 для Verizon и один из (111) 111-1111 для AT & T, считаете ли вы их равными? – Mathieson

Смежные вопросы