首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kimball数据:用视图将数据建模为事实和维度

Kimball数据:用视图将数据建模为事实和维度
EN

Database Administration用户
提问于 2019-03-03 23:52:13
回答 1查看 1.1K关注 0票数 0

在数据仓库中,Kimball讨论将保险单保费建模为维度和事实。我有下表,

代码语言:javascript
复制
create table dbo.DimAutoInsurance
(
    DimAutoInsuranceId int primary key identity(1,1),
    CustomerName varchar(100),
    CustomerAddress varchar(255),
    PolicyCoverageAmount numeric (15,2), 
    PolicyBeginDate datetime,
    PolicyExpirationDate datetime
)

对于事实表,我是否应该为事实重行ETL的另一个表?再次复制数据似乎是多余的。或者我应该创建一个视图?什么是最好的数据库设计策略?

代码语言:javascript
复制
create view dbo.FactAutoInsurance
as 
select
    DimAutoInsuranceId,
    PolicyCoverageAmount numeric (10,2), 
from dbo.DimAutoInsurance

https://www.kimballgroup.com/2007/12/design-tip-97-modeling-data-as-both-a-fact-and-dimension-attribute/

Kimball:

“一个更模糊的例子是对汽车保险单范围的限制。这个限额是一个数字数据项目,比如说碰撞赔偿责任30万美元。此外,许多查询将对此限制数据项进行分组或约束。这听起来像是一次扣篮,因为限制是覆盖维度的属性。您可以提出一些重要的查询,总结或平均处理许多策略和覆盖范围的所有限制。这听起来像是一次扣篮,因为限制是事实表中的一个数字事实。不要为维度和事实的选择而烦恼,只需用两种方式来建模就行了!在覆盖维度中包含限制,以便它以通常的方式参与约束和行标题的内容,但也将限制放在事实表中,以便在复杂的计算中以通常的方式参与。“

EN

回答 1

Database Administration用户

发布于 2019-03-15 20:02:38

您引用的金博尔网页说:

我们将数值度量放入事实表,并将文本描述符作为“属性”放入维度表中。

根据维基百科的网页Star_schema

事实表记录特定事件的度量或度量。事实表通常由数值和保存描述性信息的维度数据的外键组成。...事实表被定义为三种类型之一:

  • 事务事实表记录有关特定事件的事实(例如,销售事件)
  • 快照事实表在给定的时间点记录事实(例如,月底的帐户详细信息)
  • 累积快照表记录某一特定时间点的汇总事实(例如,产品的每月总销售额)。

与事实表相比,维度表通常有相对较少的记录,但每个记录可能有大量的属性来描述事实数据。

因此,维度表记录和事实表记录之间有一对多的关系。

在您的示例中,我希望事实表有一个日期作为字段之一,它表示该特定日期的值的时间快照。

例如,如果在两个表中都包括PolicyCoverageAmount,它将表示DimAutoInsurance表中的当前值,以及FactAutoInsurance表中特定时间的值。

是的,同样的号码将在两个地方。但是这个想法是为了优化查询,而不是规范化,所以需要一些冗余。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/231203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档