0

ディメンションモデリングとOLAPの新機能です。 ショップのディメンションモデルを作成しようとしています。ファクトテーブルには「弱いエンティティ」のメジャーが必要です。または、親エンティティのフィールドのみを入力してください。

「注文」テーブルには、列を持っている:

'order_id(auto generated), total_order_cost, date, product_Set_Id'. 

「Product_set」テーブルには、(注文ごとに各順序すなわち複数の行に注文された製品、論理的に「product_set_id」列でリンクされたテーブルが含まれている)の列があります。

'product_set_id, product_name, quantity,Cost_per_quantity'. 

ERモデルの "product_set"テーブルは、 "order"テーブルに依存する弱いエンティティのようなものです。私は「product_set」からの対策はファクトテーブルには存在しないだろう、この場合にのみ'order_id(fk)''total_order_cost(as measure)' ==>を追加する必要があります

私の疑問は、ファクトテーブルに ケース1です。

またはケース2:私はそこにいくつかのテーブルなど、「顧客」のような他のであるが、言及した上で私は疑問持っている同じ'order_id' and 'total_order_cost'

ための複数の行があるでしょう。この場合には'order_id(fk)','product_set_id(fk)' and 'cost_per_quantity(measure), quantity(measure), total_order_cost(measure)' ==>を追加する必要があります。

ありがとうございます!

答えて

0

常に1つの提案は、テーブルにサロゲートキーを作成することです。私の実際の売り上げは、代理キーを持っているので、その注文ラインのデータと代理キー(私は実際には使っていませんが、それは問題ではありません)によって識別されます。そうすれば、ケース2に従うことができます。

質問に答えますか?

+0

ご回答いただきありがとうございます。だから、あなたによると、 'total_order_cost'を削除し、 'order_id'をファクトテーブルに保存する必要がありますか?オーダーに複数の商品が存在する可能性があるため、 'オーダーID'が繰り返し表示されていますか? – TheRising

+0

こんにちは私のデザインでは、1つのFactSalesテーブルでorderとorderlineテーブルを組み合わせました。そのため、アウロゲートキーが使用されます。そして、total_order_cost(そのメジャー)を維持しないでください。しかし、注文のコストは同じままになるので、私はあなたがそれを注文ラインごとに分けることができるかどうかを提案します。あなたのtotal_order_costをcost_per_quantity * quantityとして定義してください。 – Faiz

+0

私は間違っていればもう一度修正してください、私はあなたのデザインを理解しました。あなたのアプローチはより理にかなっていますが、代わりの解決策のようなものです。これは「スタースキーマ」のようなものです。それでも、1つのテーブル、つまり「スノーフレークスキーマ」のようなものを組み合わせずに、2つの異なるテーブルを使用するとします。 **スノーフレークスキーマの場合、対策とFKを入力する方法** ** – TheRising

関連する問題