2011-08-14 4 views
2

두 테이블이 있습니다.참조 된 테이블의 전체 기본 키를 다루지 않는 외래 키를 가질 수 있습니까?

표 A : 합성 기본 키가 있습니다.

CommonID (PK) | Month (PK) | some data... 
----------------------------------------- 
1    | May 2011 | ... 
1    | June 2011 | ... 
2    | May 2011 | ... 
2    | June 2011 | ... 

표 B : 당신이 B 전체 기본 키를 참조하지 않는 테이블을 볼 수 있지만이 있기 때문에 그것은 확실히 항상 테이블 A에 고유 한 항목을 참조 할 것으로 표 A

ID (PK) | A_CommonID (FK)| some data... 
----------------------------------------- 
...  | 1    | ... 
...  | 2    | ... 

에 참조 SQL-queries에서 A.Month에 사용될 지정된 사용 월에 대한 전역 값.

지금 내 질문은 허용되었거나 데이터베이스 디자인의 여러 규칙을 위반하고 있습니까?

내 학사 학위를 위해 작성해야하는 최종 문서에서 사용하기 때문에 정말 좋은 답변을 주시면 감사하겠습니다.

미리 감사드립니다.

+0

문장 *을 이해할 수 없지만 항상 테이블 A의 고유 항목을 참조 할 것입니다. 이유는 무엇입니까? * 질문의 일부를 명확하게 설명해 주시겠습니까? – stakx

답변

1

아니요, 허용되지 않습니다. 하나 이상의 열로 구성된 복합 기본 키가있는 경우

, 당신의 외래 키는 복합하고 에게 당신의 기본 키에 관련된 모든 열를 참조해야합니다.

당신이 할 수있을 무엇

:-) (커드를 이렇게 도움) 키하지만, 기본 키, 전체 키와 아무것도를 참조해야합니다 외부 키는에있는 별도의 고유 인덱스를하는 것입니다 A_CommonID 열을 Table A에 입력하면 Table B이 해당 고유 색인 (PK 대신)을 참조 할 수 있습니다.

관련 문제