次元モデリング:ファクトテーブルは外部キーを持っている必要がありますか?
-
20-08-2019 - |
質問
ファクトテーブルには、まったくの鍵を持っていないことはできますか? または それができるならば、それは良いデザインですか?ファクトテーブルには、任意の寸法を有していない場合は、どのような基準で、
?分析されファクトテーブルには主キーを持っている場合/ 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の所有者として割り当てられた私は、すべての機会名のリストを取得したい」と言います。
縮重寸法は、別のケースかもしれ...そう...テーブルは、実際のファクトテーブルですが、機能提供がほとんど同じである、それはないですか?