2011-05-06 2 views
1

나는 회사, 제품, 고객 및 판매의 네 가지 테이블을 가지고 있습니다.데이터베이스 디자인 - 여기에 리던던시가 있습니까?

  • 한 회사가 여러 고객
  • 판매를 할 수 있습니다
  • 1 사 다수의 제품
  • 을 할 수있는 제품과 고객의 자식 다음과 같이 그들은 관련이 있습니다. 각 판매 기록은 하나의 제품과 고객을 나타냅니다.

두 가지 경로를 통해 판매에서 회사로 추적 할 수 있다는 사실에 대해 불안합니다. 이렇게하면 데이터 무결성 문제가 발생할 가능성이 높아집니다. 제품 경로에서 궁극적 인 상위가 A 회사이고 고객 경로가 B 회사라고 표시되면 어떻게됩니까?

이것은 나에게 SQL 반 패턴처럼 들리지만 잘못 될 수 있습니다. 그것에 대해 무엇을 할 수 있습니까?

감사합니다.

답변

2

에 달려 있습니다. 당신 말 :

한 회사는이 뜻 여러 고객

을 가질 수 있습니다 각 Customer 하나의 Company에서 상점?

그렇지 않은 경우 구입 한 Products으로 CustomerCompany 사이의 관계를 정의하면 안됩니까?

이것은 Customer에서 fk_Company 필드 (또는 이에 상응하는 필드)를 삭제하는 것을 의미합니다.

그러나 관계가 Company 인 경우 Customer에 등록 된 경우 이와 다릅니다. 이 경우

, 구입 ProductsCustomer가 "에 속하는"는 Company 사이에 충돌이 있다면, 그것은 실제 충돌하지 않는 경우 - 충돌에서 Company Customer 등록 사이 것, 그리고 CompanyCustomer이고, 바로이며 실제 충돌은 없습니다.

궁극적 인 질문은

하는 CustomerCompany 사이의 관계는 무엇합니다 - Customer

  • 최근 (중복)를 쇼핑
  • 보통 상점 (중복)
  • 먼저 쇼핑 곳 (그 것이다 중복)
  • 등록 (중복되지 않을 수도 있음)
+0

s Graphain. 나는 그것이 모두 맥락에서 볼 수 있습니다! –