2012-11-27 12 views
0

아래의 세부 사항은 세 개의 테이블이 있습니다이 테이블은 FK COUNTRY_ID가 스노 플레이크 스키마가있는 차원을 작성하려면 어떻게해야합니까? .</p> <p>1) 학생 - - FK ADDRESS_ID</p> <p>2) 주소와 나의 사실 테이블 (참조 주소 -

3) 국가를 국가

참조 포함 -이 내가 표시 할 NAME COLUMN이 있습니다. 정확하면 (PK의 IDENTIFIER)

나는

은 기본적으로 내가 --- 데프 .. 다음이

국가 사실의 Consosts에 학생 (사실 테이블)에 가입 할이 있지만 모르겠 음을 작성했습니다
<Dimension foreignKey="ADDRESS_ID" name="COUNTRY"> 
    <Hierarchy name="COUNTRY NAME" hasAll="true" primaryKey="IDENTIFIER" primaryKeyTable="ADDRESSES"> 
    <Join leftKey="IDENTIFIER" rightKey="IDENTIFIER"> 
     <Table name="ADDRESSES" > 
     </Table> 
     <Table name="COUNTRIES" > 
     </Table> 
    </Join> 
    <Level name="Country Name" visible="true" table="COUNTRIES" column="NAME" nameColumn="NAME" uniqueMembers="false"> 
    </Level> 
    </Hierarchy> 
</Dimension> 

답변

0

제대로 결합하지 않았습니다. 나는 당신의 관계형 스키마는 다음과 같습니다 가정거야 :

.-STUDENT-------. 
| IDENTIFIER PK | .-ADDRESSES-----. 
| ADDRESS_ID FK |----| IDENTIFIER PK | .-COUNTRIES-----. 
        | COUNTRY_ID FK |----| IDENTIFIER PK | 
              | NAME   | 

은 가입 요소가 가장 낮은-단위 차원 테이블 주소와 다음 레벨 업 (국가) 사이에 가입 할 필요가있다. 이 테이블을 조인하는 키는 COUNTRY_ID (ADDRESS의 경우) 및 IDENTIFIER (COUNTRY)입니다. 그러면 leftkey를 COUNTRY_ID로 설정해야합니다.

또한 레벨의 nameColumn 속성을 사용하고 있지만 실제로는 멤버 이름이 아닌 레벨의 고유 이름을 설정하는 데 사용됩니다. 나는 이것을 제거 할 것이다. 이 모든 것을 생각해 보면 다음과 같습니다.

<Dimension foreignKey="ADDRESS_ID" name="COUNTRY"> 
    <Hierarchy name="COUNTRY NAME" hasAll="true" primaryKey="IDENTIFIER" primaryKeyTable="ADDRESSES"> 
    <Join leftKey="COUNTRY_ID" rightKey="IDENTIFIER"> 
     <Table name="ADDRESSES" > 
     </Table> 
     <Table name="COUNTRIES" > 
     </Table> 
    </Join> 
    <Level name="Country Name" visible="true" table="COUNTRIES" column="NAME"> 
    </Level> 
    </Hierarchy> 
</Dimension>