0

我一直在为一个问题苦苦挣扎,但仍然不确定我的解决方案是否可以,请帮忙。我有一个事实表,可以说 PointsTable。该表的目的是计算每个人有多少积分。我的问题是您以多种方式获得积分,我必须跟踪(有一个维度表)。因此,您可以通过以下方式获得和减少积分:购买它们 ( PurchaseTable )
转让它们 ( TransferTable )
出售它们 ( SalesTable )
等。
我的解决方案我有一个事实表 (PointsTable),并且我有许多外键列。结构如下所示:
PointsTable:
PointsTable_ID
PointsTable_points
PointsTable_date
PointsTable_Reason(买、转、卖)
PurchaseTable_ID
TransferTable_ID
SalesTable_ID

根据每个原因,ID 列填充了正确的数据,但其余 ID 字段留空。是否有另一种解决此问题的方法,没有空白字段?

谢谢

4

2 回答 2

0

您不能将外键留空。为您想留空的每个 ID 在事实表中输入 0 或 -1。每个维度都有一行键控为 0 或 -1,表示没有发生事务。

于 2013-01-09T21:57:12.850 回答
0

很难用很少的信息对模型进行评估。

是否可以通过组合表来构建单个维度表:购买、转移和销售?此维度表中可能有一个字段指示“P、F 或 S”。

然后您的事实表包含该维度表的单个外键(无空白字段)?

于 2013-01-01T22:29:55.423 回答