数据库中的事实表和维度表,你知道吗?

本文探讨了数据库建模中的事实表和维度表,阐述了事实表用于记录实时业务行为数据的特点,以及如何通过拆解事实表来解决存储空间和查询性能问题,通过创建相对静态的维度表来辅助事实表并提高数据处理效率。
摘要由CSDN通过智能技术生成

        事实表和维度表都是在数据库建模过程中必须要考虑的两种记录业务数据的规范。

        事实表在很多业务中也叫流水表,用来记录业务系统发生的事实行为数据的;比如一个网络监控系统要对人的上网行为进行记录,你每访问的每一个网站、鼠标的每一个点击动作都会产生一条事实数据,这个数据包含你当前上网设备的IP、上网设备的地理位置、网络运营商、访问的网站、网站性质、网站的运营者、网站访问时间、网站的响应时间,这八个字段完整反映了这个上网业务的事实,当我们把数据存到数据库的时候,存储该数据的表就是事实表,也叫流水表。

        但随着大量数据的持续性的写入,这个表的存储空间将会变得越来越大,查询也会变的越来越慢,而且如果中途某个网站的属性发生了变更,需要对历史的全量数据进行UPDATE,效率会很低;这种情况就要想办法解决查询慢和更新效率低的问题,于是就想到将事实表进行拆解。

        从写入表中字段的数据来看总会有大面积的重复,比如跟上网设备IP相关联的上网设备的地理位置、网络运营商这三个字段属于IP信息的范畴,而运营网站、网站性质、网站的运营者这三个字段又属于网站属性的范畴,而这个IP信息和网站属性这两类数据是不会频繁变化的;既然这两类信息不会频繁变化,可以把原来这张大的事实表将其中的跟IP相关的信息给提取出来成为IP信息表,而把网站相关的信息也给提取出来成为网站信息表;这样就将原本一张大的事实表给拆分成了三张数据规模相对更小的小表,原本那个有八个字段的事实表就变成了只有四个字段的事实表,而多出来的这两张IP信息表和网站信息表就是我们所说的维度表。

        事实表就是直接反映业务行为事实的表,它的数据是实时产生和动态变化的;而维度表则可以理解是用来辅助对事实表中的数据加以说明、补充的,是对事实表数据的一种延伸,特点就是数据量相对较小且相对静态,不易发生变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值