2009-06-25 4 views
3

fact table에는 키가 전혀 없습니까? 또는 가능하면 좋은 디자인입니까? 사실 테이블에 차원이없는 경우 분석 기준은 무엇입니까?차원 모델링 : 팩트 테이블에 외래 키가 있어야합니까?

사실 테이블에 기본 키만 있고 외래 키가없는 경우는 어떻게됩니까?

+0

사실 테이블은 데이터웨어 하우징/차원 모델링에서 일반적인 용어이지만 모든 사람이 그 내용을 잘 알고있는 것은 아닙니다. 태그와 링크를 추가하겠습니다. –

답변

2

정확하게 말하면 외래 키는 팩트 테이블을 카테고리 및 하위 카테고리로 구분하는 테이블로 연결됩니다. 팩트 테이블은 그게 있다면 그런 다음 kindOfStore은 다음 kindOfStore에 대해 별도의 테이블 종류를 말하는 낭비 공간을 제외하고 (잔인한 주장 할 수, 당신의 있도록 평가 항목이 될 것

create table stores (id, kindOfStore, sales) 

그래서 경우

당신이 하위 카테고리가있는 경우 대신 "Kind_id = 8"의 저장 = "음식"의., 그것은

create table kindOfStore (id, Variety, Specialization, Subspecialization) 
그것은 다양한를 저장하는 것이 현명 공간 비효율적 인 공간이 될 것

, 전문화 같은 diminsion 테이블에 링크 이해 팩트 테이블의 Subspecialization.

새롭고 빠른 데이터웨어 하우스 엔진이 너무 빨라서 비표준 스키마조차도 빠르기 때문에 결과 스키마는 스타 스키마이며 데이터웨어 하우스는 이러한 스키마를 처리하기 위해 최적화됩니다.

Datawarehouses는 OLTP 데이터베이스와 비교하여 팩트 테이블을 비정규 화 (더 적은 테이블 사용)하지만 단일 테이블 솔루션을 위해 노력해야한다는 것을 의미하지는 않습니다.

+0

Ok ... 테이블을 사용하면 사실 테이블 자체를 분석하는 것이 좋습니다. 차원 테이블이 있고 팩트 테이블에 외부 키가없는 경우에는 어떻게됩니까? 완전히 기괴한 생각은 ... – sagar

+0

스타 스키마 (다중 테이블)를 말하지만 아무도 실행하지 마십시오. 테이블 이름 바꾸기 테이블에 외래 키 추가 (foo) 참조 ...? 논리적 관계는 여전히 존재합니다. 실제로 누군가가 참조 무결성 문제를 야기하는 필연적으로 키를 추가하는 것을 잊어 버렸을 때. 누군가가 키에 문제가 생기면 (ETL 중에) 키를 놓고 가능한 한 빨리 다시 추가해야합니다. – MatthewMartin

+0

나는 잡았다. 죄송합니다. 회신하기에 늦 았지만 정보는 많이 고맙습니다 ... – sagar

0

좋은 디자인의 모든 테이블에는 기본 키가 있습니다.

외래 키의 사용은 테이블 값을 제한하려는 시도/방법에 따라 다릅니다. 보다 구체적인 답변을 원할 경우 상황에 대한보다 구체적인 정보를 제공하십시오.

+0

나는 사실 테이블을보고 있었고 의심스러운 열 중 하나를 조사했습니다. 그래서, 나는 값을 추출 할 차원 테이블을보고 싶었습니다. 그런 이유로 SSAS에서 새 프로젝트를 만들었고 새 DSV를 만들었습니다. 다른 방법으로 팩트 테이블과 종속성을 볼 수 있는지 알지 못합니다 .SSMS는 생각할 수 있지만 사실 테이블에는 외래 키가 표시됩니다. 그래서 Visual Studio DSV는 나를위한 확실한 방법입니다.) 그리고 ADD/Remove 대화 상자에서 팩트 테이블을 추가했습니다. 그러나 관련 테이블을 클릭했을 때, 아무 것도 없었습니다 ... – sagar

2

Dimemnsional 모델링은 사실에 추가 정보가 포함되어 의미있는 요약 정보로 집계되고 "롤업"될 수있는 속성을 설명하도록 설계되었습니다. 이는 데이터웨어 하우징 (주로 READ 환경)의 특성이지만 OLTP에서 트랜잭션 데이터를 모델링하여 실제 거래 데이터 (금융 거래, 메모 및 고객 삭제 표시 일 수있는 은행 계좌에 대한 거래를 생각해보십시오. 이들 모두는 은행 계좌 실체에 공통적 인 링크를 가지고있다).

일반적으로 세부 사항 집합 사이의 프라임은 TIME 및 PLACE 차원입니다.

사실이 시간이나 공간에 존재하지 않는다면, 그 차원에 항목이 없으면 존재할 수 있습니다. (사실 그 때의 삶을 생각할 수는 없지만).

다른 차원이 작고 포함되어 있으면 (다른 사실을 공유하지 않는다는 의미입니다) 원래의 사실 테이블에 ENUM으로 넣을 수 있습니다.

ENUMS로 표시된 여러 개의 작은 차원이있는 단일 팩트 테이블이 최종 결과가됩니다.

하지만 실제로 이상한 데이터의 경우 매우 이상한 사례입니다 ...

0

크기를 나열하는 데 필요한 특성이 포함 된 테이블을 사용할 때 도구가 사실 테이블로 테이블 또는 별칭을 설정/플래그 지정해야한다는 것을 상기 할 수 있습니다.

영업 DB를 생각해보십시오. 기회 테이블에는 긴 속성 목록이 포함되어 있습니다. 맞습니까? 귀하의 고객은 "나는 모든 기회 이름, ID 및 opp 소유자로 배정 된 사람들의 목록을 얻고 싶습니다."라고 말합니다. 그런 다음 별칭이나 동의어를 만들거나 논리적 디자인에 같은 테이블을 매핑 할 수 있습니다.

변형 된 차원이 다른 경우 일 수 있습니다 ... 그래서 테이블이 실제 팩트 테이블이지만 제공된 기능은 거의 동일합니다.

관련 문제