事实表维度表设计的有关问题

原OLTP业务系统数据为

企业销售记录表
企业ID 销售额 销售时间 销售商品编码
4322 243 2009.6.5 3243432
4322 53 2009.5.5 324352432
4352 3243 2009.1.5 32436432
4377 3233 2005.5.5 324362432
4321 233 2007.1.5 324336432
4306 24 2008.5.5 324362432


销售商品编码表
种类大类 销售商品编码
02 3243432
04 3323432
24 3235435
24 3654597
52 3243432

如果建立设计事实表字段 维度表字段 以及PK FK 关联
实现
1 以时间维度 年 季度 月 层次钻取
2 以商品编码维度 实现 大类 商品编码 钻取

最好以为上例实际为准

------解决方案--------------------
时间维度我们通常使用7列的结构:

YEAR_NAME YEAR_CODE MONTH_NAME MONTH_CODE DAY_NAME DAY_CODE DATE_KEY

2009 2009 09 2009-09 17 2009-09-17 1
NAME是方便前端的展示,CODE是方便后台查询

至于商品,直接就是 :

TYPE_ID PRODUCT_ID PRODUCT_KEY

这样,原来的表就成了这样了:
企业ID 销售额 时间KEY 商品KEY

然后在UNIVERSE里,检测外键的时候,会自动的检测1与N的关系

------解决方案--------------------
1、时间维度:需要新建时间维度表,按照年、季度、月、日的层次就好了
2、商品维度:使用销售商品编码表,建立出需要的商品大类、商品编码就好了(一般用的是商品名称而不是编码)

3、事实表: 企业销售记录表 中的销售时间与时间维度关联,销售商品编码与商品维度关联就行了 
------解决方案--------------------
小数据量可以这么做做,大数据量估计查询起不来 
------解决方案--------------------
仔细看:
其实你的“企业销售记录表”(暂称为A表)本身就可以做为一张事实表。
而“销售商品编码表”(暂称为B表)可以做为其中一张维表。
再设计一张时间维表(暂称为C表):

日期 所属年 所属季度 所属月
2009.6.5 2009 2 6
...

A表中,可以将ID、日期及商品编码作为组合PK,其中的日期FK于C表的“日期”字段,商品编码FK于B表的“商品编码”字段。
B表中,商品编码作为PK
C表中,日期作为PK

这是一个典型的二角星型模型,最后关联生成的总事实表的字段就应该包括:
企业ID、所属年、所属季度、所属月、商品大类,商品名称(假设通过商品编码维表翻译)、销售额
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值