나는이 특정 테이블 세트로 얼마 동안 고생했습니다. 3 개의 테이블 (2 개 였지만 3 번째 테이블을 추가해야했습니다)이 있습니다. 표는 Request
, PartInfo
및 Status
입니다. Request
은 테이블에 데이터를 입력하는 양식을 통해 고객이 사용합니다. Status
은 Google 서비스 담당자가 고객 요청 진행 상황을 추적 할 수 있도록하기위한 것입니다. PartInfo
은 새 테이블로 양 당사자가 액세스하는 공통 데이터를 포함합니다.복잡한 복잡성 - 까다로운 테이블 조인
트릭은 각 요청마다 동일한 테이블에 저장되어있는 해당 요청에 대한 변경 로그가 있으며이 시리즈의 원래 요청에 연결된 자체 결합 키 FirstRequestID
을 통해 연결됩니다. '는 약자로 FID
). Status
테이블에 대해서도 마찬가지입니다.
Request PartInfo Status
------- -------- ------
ID ID ID
FID FID FID
PartInfoID PartNum PartInfoID
ProductID Revision StatusID
CategoryID Description Comments
지금 나는에 대한 정보를 표시 할 말 : (: 더 나은 방법가있는 경우 구조를 변경할 너무 늦게하지 그것의 주) 저는 여기에 현재를 디자인 한 나의 기본 테이블 구조는 ASP.NET GridView 테이블에서 특정 요청 (부품 정보 및 상태 변경 포함). '특정 요청'은 FID
으로 식별됩니다.
질문 : 어떻게 내가 요청 내역 또는 상태 역사 중 하나를보고있을 때, 그것은 항상 PartInfo (공유) 테이블에서 적절한 정보를 당기는 것을 보장 할 수 있습니까? 다시 말해, 모든 예외를 설명하기 위해 50 가지 접합 테이블을 갖지 않고 이러한 세 테이블을 적절한 관계로 연결하는 가장 좋은 방법은 무엇입니까?
참고로,'Request'와'Status'는 마스터 테이블이고,''다른 사람이 공유하는 세부 테이블입니다. 또한 'CategoryID'는 제품이 아닌 요청의 유형을 나타내지 만,이 세 테이블과 해당 공유 데이터 간의 관계를 정의하는 데 진정한 투쟁이 있기 때문에 이는 중요하지 않습니다.난 그냥 'PartInfo'에서 복사 한 필드를 다른 테이블에 모두 복사 할 수 있다고 가정하지만 적절한 정규화에서 더 나아질 것입니다. – Chiramisu