维度模型-父子关系表处理

文章探讨了在处理父子关系表,如借款事实和还款事实表时的不同维度设计方法,包括加工加单、标准维度建模和引入杂项维度。这些设计各有优缺点,如性能、空间利用和维护成本,以及如何处理大数据下杂项维度的问题。
摘要由CSDN通过智能技术生成

经常遇到这种父子关系表, 父表也是事实,上面有很多维度,和子表一对多关系。

1. 如果不仔细设计,可能是这种结果:

借款事实表:
借款单id (dd)
借款日期(fk)
借款人 (fk)
借款产品(fk)
借款金额
状态1(dd)
状态2 (dd)
状态3(dd)

还款事实表:
还款id (dd)
借款单id (dd)
还款日期 (fk)
还款方式 (fk)
还款金额

优点: 加工加单,通俗易懂,没有丢失信息

缺点: 当想分析还款事实表时,大概率得链接借款事实表,性能不好。

关于借款事实表杂项维度:如果是行存的数据库, 状态1 状态2 状态3 这么存储是浪费空间的, 如果是列存的数据库,这么存储占用空间很小。

2. 标准维度建模


借款事实表:
借款单id (dd)
借款日期(fk)
借款人 (fk)
借款产品(fk)
借款金额
状态1(dd)
状态2 (dd)
状态3(dd)

还款事实表:
还款id (dd)
借款单id (dd)
借款日期(fk)
借款人 (fk)
借款产品(fk)
还款日期 (fk)
还款方式 (fk)
还款金额
状态1(dd)
状态2 (dd)
状态3(dd)

优点: 这俩表都可以单独的高效分析

缺点:借款单的属性被多次复制,污染了其他表。 而且 状态1 状态2 状态3 不固定可能会增加。维护成本高。

3.  标准维度基础上再引入杂项维度设计

借款事实表:
借款单id (dd)
借款日期(fk)
借款人 (fk)
借款产品(fk)
借款金额
状态1(dd)
状态2 (dd)
状态3(dd)
杂项维度主键(fk)

还款事实表:
还款id (dd)
借款单id (dd)
借款日期(fk)
借款人 (fk)
借款产品(fk)
还款日期 (fk)
还款方式 (fk)
杂项维度主键(fk)
还款金额

杂项维度表
杂项维度主键 (pk)
状态1
状态2
状态3

优点: 把借款单中借款单id外的退化维度封装进一个杂项维度表, 还款表只继承杂项的id,屏蔽了杂项维度的增删。 借款事实表故意冗余了状态123,虽然已有杂项维度。不占空间,方便查看。

缺点:如果借款单的杂项维度发生变更时, 怎么同步到还款单。 数据冗余固有的缺点。

问题:杂项维度的主键是否可以MD5状态123,大数据,不计较这点存储。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值