当前位置: 首页 > news >正文

数据仓库建模-CIF方法中3NF建模的核心作用解析


CIF方法中3NF建模的核心作用解析

即使各业务系统本身已采用第三范式(3NF)设计,CIF方法在构建企业数据仓库(EDW)时仍需进行3NF建模,其核心目标并非重复源系统的结构,而是解决以下问题:


1. 整合异构系统的数据模型

场景示例
假设企业有三个业务系统:

  • 销售系统(3NF):定义“客户”表(customer_id, name, sales_region)。
  • CRM系统(3NF):定义“用户”表(user_id, email, member_level)。
  • 财务系统(3NF):定义“账户”表(account_no, owner_name, balance)。

问题

  • 同一客户在不同系统中标识不同(customer_id vs user_id vs account_no)。
  • 字段命名和语义差异(sales_region在CRM中可能对应location)。

CIF的3NF建模
在EDW中创建统一的 企业级客户维度表,整合所有系统的客户数据:

CREATE TABLE dim_customer (
    enterprise_customer_id INT PRIMARY KEY,  -- 全局唯一标识
    sales_customer_id VARCHAR(50),          -- 销售系统原始ID
    crm_user_id VARCHAR(50),                -- CRM系统原始ID
    finance_account_no VARCHAR(50),          -- 财务系统原始ID
    name VARCHAR(100),
    email VARCHAR(100),
    region VARCHAR(50),
    member_level VARCHAR(20),
    balance DECIMAL(18,2)
);

价值

  • 解决多系统间的 标识冲突字段语义不一致
  • 提供全局唯一的客户视图,支持跨系统分析(如“高余额客户”的购买行为分析)。

2. 消除跨系统冗余

场景示例

  • 销售系统中有一个“产品”表(product_id, name, category)。
  • 库存系统中也有一个“产品”表(sku, product_name, warehouse_location)。

问题

  • 同一产品在不同系统中使用不同主键(product_id vs sku)。
  • 字段冗余(nameproduct_name实际为同一数据)。

CIF的3NF建模
在EDW中设计统一的 产品主表,关联所有系统的产品数据:

CREATE TABLE dim_product (
    enterprise_product_id INT PRIMARY KEY,  -- 全局唯一标识
    sales_product_id VARCHAR(50),          -- 销售系统产品ID
    inventory_sku VARCHAR(50),             -- 库存系统SKU
    product_name VARCHAR(100),
    category VARCHAR(50),
    warehouse_location VARCHAR(50)
);

价值

  • 通过 主数据管理 消除冗余,确保所有系统引用同一产品定义。
  • 支持跨系统查询(如“某仓库中某类产品的销售情况”)。

3. 数据清洗与标准化

场景示例

  • 销售系统中记录金额单位为“元”,保留两位小数。
  • 财务系统中记录金额单位为“分”,整数存储。

CIF的3NF建模
在EDW中统一金额单位为“分”,并增加清洗规则:

-- 销售数据清洗
INSERT INTO fact_sales (amount)
SELECT amount * 100  -- 转换为分
FROM source_sales
WHERE amount IS NOT NULL;

-- 财务数据清洗
INSERT INTO fact_finance (amount)
SELECT amount
FROM source_finance
WHERE amount >= 0;   -- 过滤负值异常数据

价值

  • 统一数据格式,避免因单位差异导致分析错误。
  • 提升数据质量(处理空值、异常值)。

4. 建立企业级关联关系

场景示例

  • 销售系统的“订单”表关联客户ID(customer_id)。
  • CRM系统的“服务请求”表关联用户ID(user_id)。

问题
两个系统通过不同的外键描述客户与业务的关联,导致跨系统分析困难。

CIF的3NF建模
在EDW中通过统一维度表建立关联:

-- 事实表引用统一的客户ID
CREATE TABLE fact_order (
    order_id INT PRIMARY KEY,
    enterprise_customer_id INT,  -- 关联dim_customer
    product_id INT,
    amount DECIMAL(18,2),
    FOREIGN KEY (enterprise_customer_id) REFERENCES dim_customer(enterprise_customer_id)
);

价值

  • 打破系统壁垒,实现跨业务过程的关联分析(如“客户购买记录”与“服务请求次数”的关联)。

总结:CIF中3NF建模的本质

源系统3NFCIF的EDW 3NF建模
解决单一系统内的数据冗余和一致性解决跨系统的数据冗余和一致性
服务于特定业务功能(如销售、库存)服务于企业级数据整合与分析
独立的主键和关联关系统一的主键和全局关联关系

CIF方法中的3NF建模并非简单复制源系统结构,而是通过以下步骤实现企业级数据治理:

  1. 整合:将分散的异构数据模型统一为全局模型。
  2. 清洗:标准化数据格式、处理异常值。
  3. 关联:建立跨系统的数据血缘和关联关系。
  4. 服务:为上层应用(如BI、报表)提供高质量数据基础。

即使源系统已是3NF,EDW的3NF建模仍聚焦于 企业视角的数据整合,而非单一系统的优化。

相关文章:

  • “壹号土”和“壹号土猪”都是已注册商标!
  • MongoDB 核心机制解析
  • 深入解析力扣39.组合总和:回溯算法的妙用
  • --- 动态sql的使用 ---
  • 生成LoadX509KeyPair 需要的证书
  • <tauri><rust><GUI>基于rust和tauri,实现一个svg转png的工具
  • kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入
  • FlutterWeb实战:02-加载体验优化
  • DPM(Defects Per Million,每百万缺陷数)和PPM(Parts Per Million,百万分之一)
  • php8属性注解使用教程
  • 前端:开源软件镜像站 / 清华大学开源软件镜像站 / 阿里云 / 网易 / 搜狐
  • leetcode22.括号生成
  • 基于yolov11的汽车损伤检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • MySql之binlog与数据恢复(Binlog and Data Recovery in MySQL)
  • STP --- 生成树协议
  • 动态规划——回文串问题
  • 第32周Java微服务入门 微服务基础
  • 【Nova UI】三、探秘 BEM:解锁前端 CSS 命名的高效密码
  • 不带头结点的单链表插入方法(头插法与尾插法)
  • 嵌入式学习笔记-FLASH,CPU,MPU,MCU,SOC,SOPC,架构,流水线,RAM和ROM,交叉编译
  • 做微信商城网站哪家好/百度导航下载2020新版语音
  • 个人备案的网站做企业站/上海做网站优化
  • 模板网站建设的弊端/投百度做广告效果怎么样
  • 唐山做网站优化公司/淘宝seo优化排名
  • 深圳做网站哪家好/南京疫情最新情况
  • 网站建设文案/在线制作网页网站