0

두 개의 데이터 소스 (예 : 쿼리)를 결합하는 방법을 개발 중입니다. 나는 새를 갖고 싶어 내가 QUERYFIELDDB 디자인 : 두 개의 다른 외래 키에 사용되는 동일한 열

 QueryID   FieldID   FieldNAme 
    ------------ ---------   ---------- 
    1    1     CustomerID 
    1    2     CustAddress 
    2    3     CustNo 
    2    4     CustomerPhone 

에이 개 기록이있는 경우

QueryID 
FieldID 
FieldName 

....

:

나는 다음과 같은 구조로 QUERYFIELD를 명명 된 테이블이 table QueryFieldJoin : 두 개의 쿼리에서 어떤 필드를 조인 할 지 정의합니다. 내 생각 그러나 나는이 같은 필드를 갖는 최적의 DB 설계가 아닌 느낌,

LeftJoinFieldID (FK from FieldID of QueryField) 
RightJoinFieldID (also FK from FieldID of QueryField) 
JoinType (intersect, outer join). 

기본 키가 LeftJoinFieldID의 조합은 다음과 같은 구조를 가지고 있었고

LeftJoinFieldID   RightJoinFieldId    JoinType 
    --------------   ----------------    -------- 
    1       3       Intersect 

이 작동을 RightJoinFieldID 다른 테이블에있는 두 개의 서로 다른 열에 대해 외부로. 아무도 더 나은 접근법을 제안 할 수 있습니까?

1) 쿼리 당신이 대답해야합니까 :

+1

더 나은 방법 : FK 관계 중 하나에 대해 각각 FK 인 두 개의 ** ** ** 열이 있습니다. 그런 식으로 ** 데이터베이스에서 FK 관계를 적용 할 수도 있습니다 ** –

+0

+1 위의 설명을 위해 – Jerome

+0

나는 당신을 얻을 수 있을지 모르겠다. 나는 이미 QueryFieldJoin 테이블에 2 개의 분리 된 컬럼을 갖고 있는가? – keitn

답변

0

DB를 디자인은 또한 당신의 요구 사항이 무엇인가에 따라 달라집니다? 2) 데이터에 얼마나 빨리 액세스해야합니까?

표현형 POV에서 디자인은 정확할 수 있지만 실행해야하는 쿼리에 따라 최적의 솔루션이 아닐 수 있습니다.

인스턴스의 경우 필드에 하나, 쿼리에 하나, 작업 하나의 세 가지 테이블이 있다고 생각할 수 있습니다.

조인을 수행하지 않으려는 경우 모든 테이블이있는 하나의 큰 테이블.

관련 문제