【问题标题】:MultiStar Schema多星模式
【发布时间】:2013-01-01 21:41:46
【问题描述】:

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

根据每个原因,ID 列会填充适当的数据,但其余 ID 字段留空。 有没有其他方法可以解决这个问题,没有空白字段?

谢谢

【问题讨论】:

    标签: sql-server tsql relational-database database-schema


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的评论,并不是每个维度表都有特定字段,因此 TransferTable 包含有关转移的详细信息,PurchaseTable 具有有关购买的特定字段,例如(价格,单位,税金)等。组合表在事实事实表
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-18
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2016-10-29
      相关资源
      最近更新 更多