2012-07-25 3 views
2

데이터베이스 디자인의 일부에 대한 도움을 찾고 있습니다.데이터베이스 모델 - SQL - Best Approach

연락처 그룹 및 배포 목록 그룹에 대한 데이터베이스를 모델링해야합니다.

각 연락처는 많은 메일 그룹에있을 수 있으며 각 메일 그룹에는 많은 연락처가있을 수 있습니다. 일반 인스턴스에서는 접합 테이블을 사용하여이 솔루션을 구현할 수있었습니다.

하지만 추가 할 사항이 하나 더 있습니다. 주소록에는 SMS 또는 이메일 등 두 가지 방법을 통해 알림을 수신하는 옵션이 있습니다.

연락처는 두 가지 방법 중 하나를 통해 알림을 보내도록 요청할 수 있습니다.

내가 갇혀있는 문제는 연락처가 특정 메일 그룹에 따라 알림을받는 것이 좋습니다.

CONTACT A is in DL-A - Receives Notification via SMS 
CONTACT A is in DL-B - Recieves Notification via Email & SMS. 

내 연락처 표에서 연락처를 하나 개 이상의 항목을 피하기 위해 노력하고있어 각 연락처가 고유해야합니다 - :

그래서 우리는이 같은 문제가 있습니다.

누구든지 도와 줄 수 있습니까?

+0

접합 표를 사용하고 NotificationType을 그 안에 넣을 수없는 이유는 무엇입니까? – BonyT

+0

사용자의 알림 환경 설정을 "접합점 테이블"의 새 열로 추가 하시겠습니까? – LisMorski

답변

2

그래서 당신은 접합 테이블에 필드를 추가 할 수 있습니다

ContactsDistributions(ContactId, DistributionId, SMSFlag, EmailFlag) 

를 각각 배포를위한 접촉에 의해 선택이 끝난 통지의 유형을 지정하기 위해.

+0

브릴리언트, 나무를 볼 수있는 나무를 볼 수 없었습니다! – Derek

4

당신은 다른 접합 테이블을 사용할 수 있습니다

contactid, distributionlistid, messagepreference 

Messagepreference 이메일이나 SMS가 될 수 있습니다. 둘 다 원한다면 두 줄. 새로운 메시징 유형은 DB를 변경하지 않고 추가 할 수 있습니다. 안전을 위해 코드에서 상수를 사용하여 열에 넣을 값을 나타냅니다.

또는 원래의 접합 테이블에 sendsms sendemail 및 열을 추가, 그러나 이것은 당신이 새로운 메시지 유형을 소개하면 DB의 구조를 변경해야하는 단점이있다.

1

주어진 연락처가 주어진 메일 그룹에서 알림을 수신하는 방법을 나타내는 하나 이상의 필드를 접합 테이블에 추가 할 수 있습니다.

+0

감사합니다. :-) – Derek

1

이 경우에는 접합부 테이블 SMS에 두 개의 필드를 추가하고 해당 사실을 통보 받기를 원하는 경우에만 부울을 설정하고 true로 설정합니다. 이렇게하면 조합 목록 및 연락처에 대해 알림을 다르게 설정할 수 있습니다.

또한 목록에서 제거를 처리하는 방법에 따라 접합 테이블에 제약 조건을 추가하여 두 필드 중 하나 이상이 참이되도록 Google 그룹에서 내가 말하는 것처럼 알림이 항상 전송되도록 할 수 있습니다 내가 알림을받지 않기로 선택한 일부 목록에 액세스 할 수 있습니다.