数仓入门篇-维度模型与第三范式

简介: 第三范式(3NF)是关系数据库规范化核心标准,要求消除传递依赖,确保数据无冗余、“一事一地”。维度模型则面向分析优化,采用星型结构与反规范化设计,以牺牲存储换查询性能与业务可读性。二者各适其用:3NF用于OLTP系统保一致性,维度模型用于OLAP场景提分析效率。(239字)

什么是第三范式(3NF)?

概念背景

第三范式(Third Normal Form, 3NF)源于关系型数据库理论,由 E.F. Codd 提出,也是传统 OLTP(在线事务处理)系统(如 ERP、CRM)的标准设计方法。Inmon 学派主张在数据仓库中也采用 3NF 构建企业级数据仓库(EDW)。

核心原则

要满足 3NF,表结构必须依次满足以下三个条件:

  • 第一范式(1NF):列不可再分(原子性)。
  • 第二范式(2NF):非主键列完全依赖于主键(消除部分依赖)。
  • 第三范式(3NF):非主键列直接依赖于主键,不存在传递依赖(即:非主键列之间不能相互依赖)。

通俗理解:3NF 的核心目标是消除冗余,确保“一事一地”。每个事实只存储一次,通过外键关联来还原完整信息。

3NF 实例说明:电商订单系统

假设我们要存储“订单”、“用户”和“商品”的信息。

如果不遵循 3NF(存在冗余和传递依赖):

订单ID

用户ID

用户名

用户所在省份

商品ID

商品名称

商品类别

数量

金额

1001

U01

张三

广东

P01

iPhone

手机

1

5999

1002

U01

张三

广东

P02

耳机

配件

2

299

问题:如果张三改了名字,或者“广东”改为“广东省”,需要修改多行数据;如果删除了所有订单,张三的信息也就丢失了。

遵循 3NF 的设计(拆分为多个表):

表 A:用户表 (Users) - 存储用户属性

用户ID (PK)

用户名

所在省份

U01

张三

广东

表 B:商品表 (Products) - 存储商品属性

商品ID (PK)

商品名称

商品类别

P01

iPhone

手机

P02

耳机

配件

表 C:订单事实表 (Orders) - 仅存储交易过程和关联键

订单ID (PK)

用户ID (FK)

商品ID (FK)

数量

金额

下单时间

1001

U01

P01

1

5999

2026-03-01

1002

U01

P02

2

299

2026-03-02

优点:数据极度规范,无冗余,更新维护成本低(改用户名只需改一行),数据一致性高。
缺点:查询时需要大量的 JOIN 操作(订单表 JOIN 用户表 JOIN 商品表),对于海量数据分析,性能较差。


什么是维度模型(Dimensional Modeling)?

概念背景

维度模型由 Ralph Kimball 提出,专为 OLAP(在线分析处理)和数据仓库设计。它的核心目标不是消除冗余,而是优化查询性能提升业务可读性

核心结构:星型模型(Star Schema)

维度模型通常由两类表组成:

  • 事实表(Fact Table):位于中心,存储业务过程的度量值(如金额、数量)和外键。通常是窄而深的表。
  • 维度表(Dimension Table):围绕在事实表周围,存储描述性的文本属性(如谁、什么、哪里、何时)。通常是宽而浅的表。

核心原则反规范化(Denormalization)。为了减少 JOIN,允许维度表中存在冗余数据,甚至将层级结构(如 省->市->区)扁平化放在一张表中。

维度模型实例说明:电商销售分析

我们将上述 3NF 的例子转化为维度模型(星型模型):

事实表:销售事实表

销售ID

日期Key

用户Key

商品Key

销售金额

销售数量

1

20260301

101

501

5999

1

2

20260302

101

502

598

2

维度表:用户维度表- 包含冗余和层级

用户Key (PK)

用户ID

用户名

性别

年龄段

省份

城市

会员等级

注册日期

101

U01

张三

25-30

广东

深圳

黄金

2025-01-01

维度表:商品维度表

商品Key (PK)

商品ID

商品名称

一级类目

二级类目

品牌

单价

501

P01

iPhone

数码

手机

Apple

5999

502

P02

耳机

数码

配件

Apple

299

维度表:日期维度表

日期Key (PK)

完整日期

是否周末

是否节假日

20260301

2026-03-01

2026

Q1

3

1

20260302

2026-03-02

2026

Q1

3

2

优点:

  1. 查询极快:大部分查询只需要 Fact JOIN Dim 一次,甚至不需要 JOIN(如果指标都在事实表)。
  2. 业务易懂:业务人员看到 Dim_User 就能理解“广东深圳的黄金会员张三”,无需理解复杂的表关联逻辑。
  3. 支持切片/切块:非常适合按时间、地区、类别进行多维分析。

缺点:

  • 数据冗余大(例如“广东”在用户表中重复存储了多次)。
  • 数据更新复杂(如果“广东”改名为“粤”,需要更新大量行,通常使用缓慢变化维 SCD 技术处理)。

维度模型 vs 第三范式(3NF)对比

特性

第三范式 (3NF / Inmon)

维度模型 (Kimball)

核心目标

数据一致性、消除冗余、灵活适应未知查询

查询性能、业务易理解性、快速交付

数据结构

高度规范化,表多且细,关系复杂(雪花状或网状)

反规范化,表少且宽,结构简单(星型)

冗余度

极低(几乎无冗余)

高(故意保留冗余以减少 JOIN)

查询性能

。分析查询需要大量 JOIN,计算成本高

。JOIN 少,聚合速度快,适合 BI 工具直连

业务友好度

。业务人员难以理解复杂的表关联逻辑

。直观映射业务流程,业务术语清晰

数据更新

容易。修改一处即可同步全局

困难。需处理缓慢变化维(SCD),批量更新成本高


总结建议

存数据用 3NF(省空间、保一致),查数据用维度模型(跑得快、好理解)。

相关文章
|
25天前
|
SQL 数据采集 人工智能
别把数据中台做成“数据坟场”:聊聊企业数据中台架构的真实落地之路
别把数据中台做成“数据坟场”:聊聊企业数据中台架构的真实落地之路
154 4
|
26天前
|
机器学习/深度学习 人工智能 PyTorch
写 PyTorch 总像在写脚本?试试 PyTorch Lightning,把模型训练变成“工程化项目”
写 PyTorch 总像在写脚本?试试 PyTorch Lightning,把模型训练变成“工程化项目”
250 14
写 PyTorch 总像在写脚本?试试 PyTorch Lightning,把模型训练变成“工程化项目”
|
24天前
|
存储 消息中间件 Java
IoTSharp深度解析:基于.NET生态的物联网平台架构与实践
IoTSharp是基于.NET的高性能开源物联网平台,支持百万级MQTT连接、多协议接入(Modbus/OPC UA/CoAP)及时序数据高效存储。内存占用比Java方案低40%,集成规则引擎、插件化协议适配与多模型存储,适用于工业物联网与智慧能源场景。(239字)
111 3
|
24天前
|
人工智能 安全 程序员
50%的人给了差评:龙虾为何在技术论坛翻车了?
OpenClaw(龙虾)AI工具因“自动赚钱”“代约主播”等夸张宣传走红,但吾爱破解论坛投票显示:50%技术用户未下载且不认可其能力。技术圈冷静源于见惯“神器”泡沫——AI擅写代码(搬砖),却难懂需求、统筹系统。它不是神药,而是待磨的砍柴刀。
208 3
50%的人给了差评:龙虾为何在技术论坛翻车了?
|
24天前
|
存储 安全 Linux
OpenClaw Skill 安全指南:阿里云/Win11/MacOS/Linux部署步骤+8类高危Skill黑名单+安全避坑FAQ
“给OpenClaw装Skill,就像给陌生人开家门——门开得越大,风险越高”——这是2026年OpenClaw用户最该牢记的安全准则。作为开源AI智能体的核心优势,Skill生态让OpenClaw能解锁翻译、办公、自动化等多样功能,但参考文章作者的实测与真实安全案例警示:海量Skill中混杂着大量“埋雷”工具,可能窃取密钥、访问隐私文件、植入恶意程序,甚至造成财产损失。
1170 6
|
26天前
|
弹性计算 网络安全
阿里云服务器公网ip更换教程:免费更换及弹性公网EIP修改教程
阿里云ECS服务器支持更换公网IP:创建6小时内可免费更换3次;超时后需将固定IP转为弹性EIP,再通过换绑EIP实现。轻量应用服务器不支持换IP。操作需在ECS控制台完成,且实例须已分配公网带宽。(239字)
512 6
|
12天前
|
机器学习/深度学习 人工智能 缓存
Alibaba Cloud Linux 4 LTS 64位 Deb 版是什么系统镜像?兼容Debian和Ubuntu吗?
Alibaba Cloud Linux 4 LTS 64位Deb版是阿里云首个兼容Debian生态的LTS系统,深度适配Ubuntu 24.04,专为AI/深度学习优化。预装KeenTune智能调优框架、AI加速内核及kmod-fuse,支持百万IOPS与40GB/s缓存带宽,提供2025–2038年长期支持。(239字)
|
24天前
|
人工智能 Linux API
OpenClaw 能做什么?阿里云/本地保姆级部署+免费API配置+12大实战案例,解锁AI工具全场景应用
OpenClaw作为一款功能丰富的AI智能工具箱,凭借其可拓展的技能体系和自动化能力,成为了提升各场景工作效率的重要工具。不少使用者完成基础技能安装后,仍对其实际应用场景和全平台部署流程存在疑惑。本文将详细讲解2026年OpenClaw(Clawdbot)在阿里云及本地MacOS、Linux、Windows11系统的部署步骤,完成阿里云百炼API的配置并解答常见问题,同时盘点覆盖四大核心场景的12个实战案例,让使用者真正实现从安装到落地的全流程掌握。
838 12
|
12天前
|
存储 运维 安全
《OpenClaw端口通信失效全解:监听修改与防火墙规则落地指南》
本文针对OpenClaw启动后默认端口无法访问、系统提示连接被拒绝的高频运维问题,结合真实落地实操经验展开全流程解析。文章从端口占用进程深度溯源入手,区分不同占用主体的处理方式,再详细讲解配置文件中监听端口的规范修改与安全备份方法,同时涵盖框架平滑重启、端口绑定状态核验、防火墙策略添加与规则重载等核心步骤,最终通过多场景连通性测试完成问题闭环。全文摒弃零散操作,侧重环境动态适配与底层逻辑梳理,帮助从业者建立系统化端口运维思维,从根源解决端口冲突、策略拦截等故障,实现框架长期稳定对外提供服务。
140 10