2014-07-23 3 views
0

나는 데이터의 2-3 상황에서 숫자 값을 보유 할 테이블을 설계 해요 : 숫자 값데이터베이스 설계 : NULL 키 테이블

과 함께 나이와 성별이 있습니다

상황 1 상황 2 : 숫자 값

상황 3과 함께 만 나이를 가지고 : 숫자 값 I는 3 개 개의 다른 테이블을 생성하지 않으

과 함께, 단지 섹스가 있습니다. 대신, 다음과 같은 열이 하나 개의 테이블 :

AgeID (참조 시대에 대한 정보를 포함하는 테이블)

SexID (참조 시대에 대한 정보를 포함하는 테이블)

Value합니다 (숫자 자체)

AgeIDSexID을 외부 키로 사용하고 해당 테이블에 연결하십시오.

문제는 : 내 쿼리는 항상 AgeSex 테이블로 내부 조인을 수행하고 있습니다. 상황 1의 경우 가치가 있기 때문에 잘 작동합니다. 상황 2와 3에 대해서는 AgeID 또는 SexID이 null이기 때문에 어떤 데이터도 얻지 못합니다.

정확한 해결책은 무엇입니까?

  • 테이블 디자인을 변경 하시겠습니까?

  • Entity-Attribute-Value 테이블을 좀 더 일반적인 것으로 사용 하시겠습니까?

  • nullable 열과 관련된 모든 쿼리에 INNER JOIN 대신 LEFT JOIN을 사용 하시겠습니까 ??

  • 다른 아이디어가 있습니까?

누군가가 명확하게 할 수 있습니까?

감사합니다.

+1

같은 조건 INNER JOIN가, 왼쪽 조인을 사용하여 사용합니다. 이것은 그것이 설계된 것입니다. – Jenn

답변

0

예 외부 조인, 왼쪽 또는 오른쪽, 내부 조인은 두 테이블에서 일치하는 항목이 모두 필터링되지 않도록합니다.

0

INNER JOIN Table x ON 
    (AgeID IS NULL OR AgeID = x.AgeID) 
    AND (SexID IS NULL OR SexID = x.SexID) 
+0

이것과 그냥 왼쪽 조인의 차이점은 무엇입니까? – igorjrr

+0

이 경우 아무 것도 표시되지 않습니다. 그러나 일부 열에서는 "왼쪽 결합"을, 다른 열에서는 "내부 결합"을 할 수 있습니다 –