2012-03-14 8 views
0

저는 SIP 라우팅 정보에 대한 데이터 모델을 연구 중입니다. 전화 번호 1-212-123456을 예로 들어 봅시다. 두 개의 서비스 제공자 A와 B는이 전화 번호에 SIP 세션을 설정하기위한 라우팅 정보 (예 : IP 주소)를 가지고 있습니다.개체 또는 값 개체?

따라서 내 모델에는 TelephoneNumber이라는 엔티티가 있습니다. 내 질문은 : TelephoneNumber 요소를 값 개체로 정의하는 것이 맞습니까?

먼저 전화 번호는 하나 이상의 서비스 공급자의 컨텍스트에서만 존재합니다. 이 전화 번호에 대한 라우팅 정보를 알고있는 서비스 공급자가없는 경우 후자가 존재할 이유가 없습니다.

둘째, TelephoneNumber이 값 개체 인 경우 동일한 전화 번호의 두 인스턴스가 각 서비스 공급자마다 하나씩 있습니다. 이 경우 엔터티의 기본 키에는 ServiceProvider을 참조하는 외래 키가 포함됩니다. 이 경우 일부 데이터 중복이 있음을 알 수 있습니다.

감사

+0

어떤 아이디어입니까? –

답변

1

값 오브젝트는 그 속성에 의해 식별, 아니 정체성이 없습니다. "TelehponeNumber"클래스의 두 인스턴스가 동일한 숫자를 포함하는 경우 동등한 것으로 정의되는 경우 값 개체로 처리 될 수 있지만 값 개체를 사용하는 방식은 매우 공식적입니다. 값 개체로 "TelephoneNumber"를 정의하면 자체 테이블에 채우지 않고 ID (기본/외래 키 불필요한 점보)를 부여하지 않고 다른 엔터티의 멤버로 넣습니다 (라우팅 귀하의 도메인을 정확하게 이해하면 정보가 올바른 장소 인 것 같습니다.) 값 객체가 얼마나 많은 인스턴스가 다른 엔티티의 일부인지 단순히 신경 쓰지 않습니다.

일반적인 값 개체는 전화 번호, 전자 메일 주소, 돈, 사회 보장 번호 등입니다

+0

마지막으로, 단일 서비스 공급자의 전화 번호를 구별해야하므로 TelephoneNumber 형식을 엔터티로 정의했습니다. 전화 번호 문자열은 TelephoneNumber 엔터티의 ID이며이 ID는 ServiceProvider에 로컬입니다. –

+0

평등의 문제는 정말로 핵심 포인트입니다. 버라이존을위한 (111) 111-1111과 AT & T를위한 (111) 111-1111 중 하나의 두 전화 번호가 있다면, 그것들을 똑같다고 생각합니까? – Mathieson