0

我正在 SQL Server 2012 中设计一个数据仓库数据库,它将用于创建多维数据集。假设我在原始关系数据库中有 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中,这样事实就可以通过查看DimInvoiceDimInvoiceLineItem来找出这些信息。这里最好的方法是什么。我知道最好让它尽可能平坦。这里有什么帮助,因为我对数据分析很陌生?

4

1 回答 1

1

我认为你根本不需要这张FactInvoice桌子。它提供的唯一的东西是InvoiceTotal,这应该是总和FactInvoiceLineItem.Total。省略此表会使结构相当简单:只有一个事实表和三个维度。

顺便说一句:我没有看到任何日期维度。将其作为一个单独的维度从它当前所在的位置提取可能是有意义的,可能是DimInvoice. 您可能想要添加“日期组字段”,如“月”、“季度”、“年”,具体取决于用户请求“星期几”、“一年中的周数”等。

于 2013-09-25T07:40:14.077 回答