数据仓库理论与实践(用户画像)
文章目录
一、数仓理论
1.1 数据库和数据仓库的区别
- 数据库和数据库软件:
数据库软件是一种物理概念,用于实现数据库。数据库是一种逻辑概念,用于存放数据,数据库由各种表组成,表则能表达数据的二维关系,而数据库的表能用二维表现多维关系。 - 数据仓库:
数据仓库从逻辑上讲与数据库没有什么差别,功能都是用于存放数据。但从数据用途和数据量上来讲,数据仓库区别于数据库是面向数据分析和数据挖掘的,即用于BI(商业智能)的。数仓面向主题、集成数据、数据时间相对稳定、反映数据历史变化。 - 两者的具体差别:
- 数据库是面向事务,存储数据是日常业务相关的,用于联机事务处理(OLTP)。数据主要针对业务的联机数据操作,主要涉及增删改查。主要关注操作的响应时间、数据并发安全和数据完整性等问题。主要用于操作型处理。(建模一般符合三范式,利于数据增删改查)
- 数据仓库是面向主题,存储数据来源于日志与数据库,用于联机分析处理(OLAP),主要用于各个业务主题历史与实时的数据分析。主要用于决策管理。(建模一般通过维度建模,利于数据查询)
1.2 数据建模理论
-
三范式建模(业务系统数据库建模):
- 第一范式:表中的每一列都不可分割。
- 第二范式:在第一范式基础上,非主键必须依赖主键。(消除非主属性对主码的部分函数依赖)
- 第三范式:在第二范式基础上,任何的非主属性不依赖于其他非主属性。(消除非主属性间传递函数依赖)
实际就是将业务表尽可能拆分使得对表格增删的操作对其他表格不会造成影响
-
维度建模(数仓建模):根据表的类型分为事实表和维度表。
- 事实表就是记录事实、度量、维表主键的表(什么人做了什么事情的的记录,如下单、退款、评价等);
- 维度表就是对事物观察的角度(比如购买是在什么时间点在哪买了什么商品),即对同一个指标的统计可以从不同的维度统计,维度表就记录了不同的