0

SQL 다중 값 차원

내가 SQL 서버 2014 엔터프라이즈의 데이터웨어 하우스를 만들어 내가 하나에 여러 값에 사실을 매핑 사투를 벌인거야 (이 이제까지 그래서 여기 나와 함께 사람을 참아주세요 물어 내 첫 번째 질문입니다) 치수.

특정 서비스 및 고객을 위해 예약 된 서버가있는 데이터 센터를 상상해보십시오. 해당 서버에는 네트워크 어댑터, cpus 또는 운영 체제와 같은 특정 구성 요소가 있습니다. 내 팩트 테이블에서

몇 행은 다음과 같이 보일 것이다 :

ServerID CustomerID OSID ServiceID NetworkGroupID CPUID 
1   1   1  1   1    1 
2   1   2  1   2    1 
3   2   1  2   2    2 

서버 1과 2를 고객 1. 서버 1 실행되는 OS 1, 두 서비스 1 제공하는 다른 OS (2)에 속해 서버 1은 이고 네트워크 어댑터의 집합은 '1'로 식별되고 나머지 2 개는 여러 개의 네트워크 어댑터 (가상의 일부 물리적 인 어댑터)를 포함합니다.

내 네트워크 차원의 속성 ID를 가지고 있으며, NetworkAdapterName 난과 같이 여러 번 표시하는 ID가 필요합니다 :

ID NetworkAdapterName 
1  IntelAdapter#1 
1  IntelAdapter#2 
1  VirtualAdapter#1 
2  IntelAdapter#1 
2  DellAdapter#1 
3  VirtualAdapter#1 
3  VirtualAdapter#2 

을 내가 너무 좋아 다리 역할을 하위 차원의 어떤 종류를해야합니다 생각 :

NetworkGroupID NetworkID 
    1    1 
    1    2 
    1    3 
    2    1 
    2    5 
    3    3 
    3    4 

NetworkID NetworkAdapterName 
1   IntelAdapter#1 
2   IntelAdapter#2 
3   VirtualAdapter#1 
4   VirtualAdapter#2 
5   DellAdapter#1 

하지만 어떻게 NetworkGroupID와 같은 값의 여러 모습이 있기 때문에, 기본 키 또는 브리지 차원 사실 테이블에서 일반적으로 관계를 정의 할 수 있을까요?

(동일 CPU와 OS 발생하지만 난 그게 네트워크 어댑터에 대한 작업을 진행하면 나뿐만 아니라 다른 구성 요소를 위해 그것을 할 수있을 것입니다.)

편집 : 내가 원하는 결국 한 서버에있는 여러 구성 요소를 보여 줄 수있는 SSAS의 큐브를 만듭니다.

답변

0

당신은 테이블 (또는 차원) NetworkGroup 정의를 만들 수 있습니다

CREATE TABLE NetworkGroupNetwork (
    NetworkGroupID int not null, 
    NetworkID  int not null, 

    CONSTRAINT PK_NetworkGroupNetwork 
     PRIMARY KEY (NetworkGroupID, NetworkID), 

    CONSTRAINT FK_NetworkGroupNetwork_NetworkGroup 
     FOREIGN KEY (NetworkGroupID) 
     REFERENCES NetworkGroup (NetworkGroupID), 

    CONSTRAINT FK_NetworkGroupNetwork_Network 
     FOREIGN KEY (NetworkID) 
     REFERENCES Network (NetworkID) 
); 
+0

[디자인 :

CREATE TABLE NetworkGroup ( NetworkGroupID int not null PRIMARY KEY, Name nvarchar(50) null ); 

그런 다음 Network 테이블로 가입 당신의 "다리"테이블 (일명 Junction Table)를 사용 팁 # 124 다중 값 차원의 대안] (http://www.kimballgroup.com/2010/06/design-tip-124-alternatives-for-multvalued-dimensions/)도 가치가 있습니다. –

+0

이것이 내가 생각한 것입니다.하지만 PK NetworkGroup에서 NetworkGroupNetwork의 복합 PK에 대한 제약 조건을 어떻게 만들 수 있습니까? – Starbuckz

+0

다른 방법입니다. 제약 조건은'NetworkGroupNetwork'의 열 중 하나에서'NetworkGroup'의 PK까지입니다. 팩트 테이블 (고객 ID 열)과 고객 테이블 사이에있는 것과 비슷합니다. –