2011-08-28 9 views
10

는 다음과 같은 고려 :데이터 모델링 : 항상 교차 테이블을 사용해야합니까?

**Customers** 
CustomerId (PK) 
CustomerName 
CustomerPhone 

**Cases** 
CaseId (PK) 
CaseManager 
CaseNotes 

각 고객은 그러나 각각의 경우는 하나 개의 고객에 속할 수, 케이스의 무제한을 가질 수

다음과 같이 내가 정의 된 두 테이블 (고객 및 케이스)가 있습니다. 따라서 테이블을 서로 관련시키기 위해 각 테이블의 외래 키로 구성된 교차 테이블 (CustomerCases)을 사용합니다.

그러나 Customers 테이블의 CustomerID를 Cases 테이블의 외래 키로 추가 할 수 없었습니까? 나는 뭔가를 놓친 것 같은 기분이 든다. 교차 표를 사용하지 않기로 결정해야 함을 알고 있어야하는 함정이 있습니까?

답변

6

한 고객이 한 고객에게만 속할 수있는 경우 Cases 테이블에 CustomerID FK를 추가하는 것이 합리적입니다.
결국 요구 사항이 변경 될 수 있다고 생각하면 (예 : 사례에 여러 고객이있을 수 있음) 교차 테이블 접근 방식이 더 적합 할 수 있습니다.
CaseManagers가 무한대가 아니라면 Managers 테이블이 있고 Cases 테이블의 FK가있는 것이 좋습니다.

+0

정말 고마워요! 나는 여기 새로 왔어. 철저한 대답을 너무 빨리 얻는다는 것이 얼마나 중요한지 말할 수 없다. – TelJanini

5

"교차점"(일명 "교차점"또는 "상호 참조") 테이블은 다 대다 관계를 모델링하기 위해서만 필요합니다. 이 경우 케이스는 고객과 다 - 대 - 일 관계에 참여합니다. 따라서 외래 키가 모두 필요합니다. 실제로 더 일반적인 솔루션이 될 것입니다. 구조적으로 반대되는 경우가 아니면 (예 : 응용 프로그램이 모든 관계를 junction을 사용하여 표시하도록 요구하는 구성 요소에 의존하지 않는 한) 접합 테이블의 불필요한 복잡성을 피하십시오.

+0

많은 감사를드립니다! 너는 나에게 많은 두통을 저장했다! 다시 한 번 감사드립니다! – TelJanini

+0

용어에 대해 +1하고이 모델을 필요로하는 형식 관계를 설명합니다. – Wiseguy

관련 문제