次元モデリング:ファクトテーブルは外部キーを持っている必要がありますか?

StackOverflow https://stackoverflow.com/questions/1045780

質問

ファクトテーブルには、まったくの鍵を持っていないことはできますか? または それができるならば、それは良いデザインですか?ファクトテーブルには、任意の寸法を有していない場合は、どのような基準で、

?分析され

ファクトテーブルには主キーを持っている場合/ Sのみとどのような外部キー/ sの?

役に立ちましたか?

解決

不正確に言えば、外部キーは、カテゴリとサブカテゴリにあなたのファクトテーブルを破るのテーブルにあなたをリンクします。

ファクトテーブルだったので、もし

create table stores (id, kindOfStore, sales)
それはそれだった場合は、

次にkindOfStoreは、あなたがkindOfStore用に別のテーブルではなく、「= 8 Kind_id」の店=「食」のようなものを言って無駄なスペースを除いて(やり過ぎであると主張することができ、あなたの無次元になります。あなたは、サブカテゴリーを持っている場合、それは

のようにdiminsionテーブルにリンクしても意味が
create table kindOfStore (id, Variety, Specialization, Subspecialization) 

これは、ファクトテーブルにはバラエティ、専門とSubspecializationを格納するためのスペース効率の悪いスペースが賢明だろう。

結果のスキーマが新しく、より高速なデータ・ウェアハウスのエンジンでも非スタースキーマはかなり高速であること非常に高速であるように見えるが、スタースキーマとデータウェアハウスは、それらのスキーマに対処するために最適化されている。

Datawarehousesは、OLTPデータベースと比較して(少数のテーブルを使用)ファクトテーブルを非正規化が、決してそれはあなたが単一のテーブル・ソリューションのために努力すべきであることを意味しています。

他のヒント

Dimemnsionalモデリングは、余分な詳細を持っているという事実は、「ロールアップ」と意味の要約情報に集約することが可能な属性を記述し、それを掛けできるように設計されています。それはdatawarehousingの特性(主に環境をREAD)ですが、またそれはOLTPでの場所です持つことができ、主要な事実に対する真のトランザクションデータをモデル化(金融取引、メモや顧客の墓石改定することができた、銀行口座に対して取引を考えます - すべてが)銀行口座エンティティに戻って、共通のリンクを持っています。

詳細のセットの中で首相は、通常、時間と場所の寸法いる事実をオフに掛けます。

あなたの事実は、時間や空間に存在しない場合(実際にはそのようになるとき、私は私の人生のために把握することはできませんが)

、それはおそらく、これらの寸法上のエントリせずに存在する可能性があります。

さらに、他の寸法は、(他の事実を共有し、それらを意味しない)小さなと含まれている場合は、あなたがENUMとして、元のファクトテーブルにそれらを転がして逃げることができます。

最終結果はENUMSとして表される複数の小さな寸法と、単一のファクトテーブルであろう。

しかし、それはいくつかの本当に奇妙なデータのための非常に奇妙なケースだろう...

良いデザインでは、すべてのテーブルは主キーを持つことになります。

外部キーの使用が/どのようにテーブル値を制約しようとしているかに依存します。あなたはより具体的な答えをしたい場合は、あなたの状況に、より具体的な情報を与える

私が思い出すことができる場合は、ディメンションリストの目的のために属性が含まれていると、ツールがセットアップ/フラグを必要とテーブルを使用する場合/ファクトテーブルとテーブルまたはエイリアスを特定されています。

売上DBを想像し、機会テーブルは右、属性の長い長いリストが含まれていますか?あなたの顧客は、あなたがエイリアスまたはシノニムを作成したり、論理設計で同じテーブルをマッピングすることができる...「IDの人々がopptyの所有者として割り当てられた私は、すべての機会名のリストを取得したい」と言います。

縮重寸法は、別のケースかもしれ...そう...テーブルは、実際のファクトテーブルですが、機能提供がほとんど同じである、それはないですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top