0

キューブの作成に使用される SQL Server 2012 でデータ ウェアハウス DB を設計しています。元のリレーショナル DB に 3 つのテーブルがあるとします。

Supplier (SupplierId, SupplierName .....)
Invoice (InvoiceId, SupplierId, InvoiceCode, InvoiceName, InvoiceTotal ...)
InvoiceLineItem (InvoiceLineItemId, Description, InvoiceId, Rate, Count, Total)

これを倉庫データベースに変換したい。そこで、3 つのディメンションと 2 つのファクト テーブルを作成しました。

DimSupplier (SupplierId, SupplierName .....)
DimInvoice (InvoiceId, InvoiceCode, InvoiceName ....)
FactInvoice (InviceId, SupplierId, InvoiceTotal)
DimInvoiceLineItem (InvoiceLineItemId, Description)
FactInvoiceLineItem (InvoiceLineItemId, InvoiceId, SupplierId, Rate, Count, Total)

私の問題は、外部キーを使用する最善の方法がわからないことです。SupplierId キーをFactInvoiceFactInvoiceLineItemからDimInvoiceDimInvoiceLineItemにそれぞれ移動する必要があるので、実際にはDimInvoiceまたはDimInvoiceLineItemを見てこの情報を把握できます。ここで最善のアプローチは何ですか。できるだけ平らに保つのが最善であることはわかっています。私はデータ分析にまったく慣れていないので、ここで何か助けはありますか?

4

1 に答える 1

1

FactInvoiceテーブルはまったく必要ないと思います。それが提供する唯一のものはInvoiceTotalであり、それは の合計でなければなりませんFactInvoiceLineItem.Total。このテーブルを省略すると、構造がかなり単純になります。1 つのファクト テーブルと 3 つのディメンションだけです。

余談ですが、日付ディメンションは表示されません。これを現在の場所とは別の次元として抽出することは理にかなっているかもしれませんDimInvoice. ユーザーの要求に応じて、「月」、「四半期」、「年」などの「日付グループ フィールド」、「曜日」、「年の週番号」などを追加することをお勧めします。

于 2013-09-25T07:40:14.077 に答える