数据仓库命名规范

1. 概述

数据模型是数据管理的分析工具和交流的有力手段;同时,还能够很好地保证数据的一致性,是实现商务智能(Business Intelligence)的重要基础。因此建立、管理一个企业级的数据模型,应该遵循标准的命名和设计规范。

文章目录

    • 1. 概述
    • 2. 数据仓库命名规范
      • 2.1. 命名规范
        • 2.1.1. 表属性规范
          • 2.1.1.1. 表名
          • 2.1.1.2. DW事实表表名
          • 2.1.1.3. APP应用层表名
          • 2.1.1.4. DW/DM维度表表名
          • 2.1.1.5. 元数据表名
        • 2.1.2. 索引
          • 2.1.2.1. 普通索引
          • 2.1.2.2. 主键索引
          • 2.1.2.3. 唯一索引
          • 2.1.2.4. 外键索引
          • 2.1.2.5. 函数索引
          • 2.1.2.6. 簇索引
        • 2.1.3. 视图
        • 2.1.4. 物化视图
        • 2.1.5. 存储过程
        • 2.1.6. 触发器
        • 2.1.7. 函数
        • 2.1.8. 数据包
        • 2.1.9. 序列
        • 2.1.10. 普通变量
        • 2.1.11. 游标变量
        • 2.1.12. 记录型变量
        • 2.1.13. 表类型变量
        • 2.1.14. 数据库链接
      • 2.2. 命名
        • 2.2.1. 语言
        • 2.2.2. 大小写
        • 2.2.3. 单词分隔
        • 2.2.4. 保留字
        • 2.2.5. 命名长度
        • 2.2.6. 字段名称
        • 2.2.7 命名风格比较
          • 建议
      • 2.3. 数据类型
        • 2.3.1. 字符型
        • 2.3.2. 数字型
        • 2.3.3. 日期和时间
        • 2.3.4. 大字段
        • 2.3.5. 唯一键
    • 3. 数仓表命名的分层与后缀规则
      • 3.1常见规则
      • 3.2 推荐命名模板
        • 3.2.1 示例
      • 3.3设计要点
        • 3.3.1示例
      • 3.4 设计要点
      • 3.5 多系统同名表处理规则
        • 3.5.1处理原则
        • 3.5.2命名规则



2. 数据仓库命名规范

2.1. 命名规范

2.1.1. 表属性规范
2.1.1.1. 表名
  • ODS层表名
    前缀为ODS_应用系统名(缩写)_数据表名。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:ODS_FUN_CUSTOMERINFO。表名称不能用双引号包含,表名长度不超过30个字符。如果ODS设计采用贴源设计,数据表名应与源系统一致。
    系统和应用名规则:
    • 核心 COR
    • 对公信贷 CLN
    • 个贷 PLN
    • 基金 FUN
    • 票据 TIC
    • 理财 FIN
    • 报表 RPT
    • ……
2.1.1.2. DW事实表表名
  • 前缀为DW_主题名(缩写)_功能描述。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:DW_ORD_DETAIL。表名称不能用双引号包含,表名长度不超过30个字符。
    主题名规则:
    • 订单 ORD
    • 营销活动 MKC
    • 贷款 LN
    • 网银 NET
    • 客户 CUS
    • ……
      数据表名规则:
    • 基础表 _BA
    • 日汇总表 _D
    • 月汇总表 _M
    • 历史累计 _H
    • 全量加载 _A
    • 增量加载 _I
2.1.1.3. APP应用层表名
  • 前缀为APP_主题名(缩写)_功能描述。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:APP_RPT_DEALER_GOODS。表名称不能用双引号包含,表名长度不超过30个字符。
    参考DW层表名称规范。
2.1.1.4. DW/DM维度表表名
  • 前缀为D_。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:D_ACCOUNTD_PUB_DATE。表名称不能用双引号包含,表名长度不超过30个字符。
    数据表名规则:
    • 日期维度 D_PUB_DATE
    • 城市 D_CITY
2.1.1.5. 元数据表名
  • 前缀为M_应用名(缩写)_功能描述。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:M_ETL_TASK。表名称不能用双引号包含,表名长度不超过30个字符。
    应用名规则:
    • ETL ETL
    • 报表 RPT
    • OLAP分析 OLP
    • 源系统 SRC
    • 数据库 DB
    • 软硬件 SHW
    • ……
2.1.2. 索引
2.1.2.1. 普通索引
  • 前缀为IDX_。索引名称应是前缀+表名+构成的字段名。如果复合索引的构成字段较多,则只包含第一个字段,并添加序号。表名可以去掉前缀。
2.1.2.2. 主键索引
  • 前缀为IDX_PK_。索引名称应是前缀+表名+构成的主键字段名,在创建表时用using index指定主键索引属性。
2.1.2.3. 唯一索引
  • 前缀为IDX_UK_。索引名称应是前缀+表名+构成的字段名。
2.1.2.4. 外键索引
  • 前缀为IDX_FK_。索引名称应是前缀+表名+构成的外键字段名。
2.1.2.5. 函数索引
  • 前缀为IDX_func_。索引名称应是前缀+表名+构成的特征表达字符。
2.1.2.6. 簇索引
  • 前缀为IDX_clu_。索引名称应是前缀+表名+构成的簇字段。
2.1.3. 视图
  • 前缀为V_。按业务操作命名视图。
2.1.4. 物化视图
  • 前缀为MV_。按业务操作命名实体化视图。
2.1.5. 存储过程
  • 前缀为SP_。按业务操作命名存储过程。
2.1.6. 触发器
  • 前缀为Trig_。触发器名应是前缀+表名+触发器名。
2.1.7. 函数
  • 前缀为Func_。按业务操作命名函数。
2.1.8. 数据包
  • 前缀为Pkg_。按业务操作集合命名数据包。
2.1.9. 序列
  • 前缀为Seq_。按业务属性命名。
2.1.10. 普通变量
  • 前缀为Var_。存放字符、数字、日期型变量。
2.1.11. 游标变量
  • 前缀为Cur_。存放游标记录集。
2.1.12. 记录型变量
  • 前缀为Rec_。存放记录型数据。
2.1.13. 表类型变量
  • 前缀为Tab_。存放表类型数据。
2.1.14. 数据库链接
  • 前缀为dbl_。表示分布式数据库外部链接关系。

2.2. 命名

2.2.1. 语言

命名应该使用英文单词,避免使用拼音,特别不应该使用拼音简写。命名不允许使用中文或者特殊字符。

2.2.2. 大小写

名称一律小写,以方便不同数据库移植,以及避免程序调用问题。

2.2.3. 单词分隔

命名的各单词之间可以使用下划线进行分隔。

2.2.4. 保留字

命名不允许使用SQL保留字。

2.2.5. 命名长度

表名、字段名、视图名长度应限制在20个字符内(含前缀)。

2.2.6. 字段名称

同一个字段名在一个数据库中只能代表一个意思。不同的表用于相同内容的字段应该采用同样的名称,字段类型定义。

2.2.7 命名风格比较

在数据库及相关系统开发中,常见的命名风格主要有以下三种:

命名风格格式示例特点适用场景优缺点
蛇形命名法(snake_case)customer_info, order_detail全小写单词,中间用下划线分隔数据库表名、字段名、文件名优点:可读性强、与SQL关键字区分度高、跨语言兼容好;缺点:名称稍长
驼峰命名法(camelCase / PascalCase)小驼峰:customerInfo;大驼峰:CustomerInfo单词间不加分隔符,每个单词首字母大写(小驼峰首个单词小写)程序变量名、函数名、类名优点:简洁;缺点:在SQL中可读性差,对大小写敏感的系统易出错
匈牙利命名法(HungarianNotation)strCustomerNameiOrderCount前缀表示数据类型或用途(str=字符串,i=整数)早期Windows编程、部分嵌入式开发优点:类型信息直观;缺点:冗余、与现代IDE类型推断重复,不适合现代数据库命名
建议
  • 数据库表名与字段名:推荐使用蛇形命名法(snake_case),全小写+下划线分隔,保证跨平台可移植性与可读性。
  • 程序代码(如存储过程、函数):可根据语言习惯选择驼峰命名法,但仍建议与数据库命名保持一定一致性。
  • 匈牙利命名法:不建议用于现代数据库对象命名,可在少数特殊嵌入式场景保留。

示例

  • 表名(snake_case):dw_order_detail
  • 字段名(snake_case):customer_idorder_date
  • 存储过程(PascalCase):SP_UpdateCustomerInfo

2.3. 数据类型

2.3.1. 字符型

固定长度的字串类型采用char,长度不固定的字串类型采用varchar。避免在长度不固定的情况下采用char类型。

2.3.2. 数字型

数字型字段尽量采用number类型,要注意精度。

2.3.3. 日期和时间
  • 系统时间:由数据库产生的系统时间首选数据库的日期型,如DATE类型。
  • 外部时间:由数据导入或外部应用程序产生的日期时间类型采用varchar类型,数据格式采用:YYYYMMDDHH24MISS
2.3.4. 大字段

如无特别需要,避免使用大字段(blobcloblongtextimage等)。

2.3.5. 唯一键

对于数字型唯一键值,尽可能用自增产生。

3. 数仓表命名的分层与后缀规则

为了方便在日常开发与运维中快速识别表的用途、刷新频率、加载方式,可以在表名中通过前缀、主题缩写、功能后缀等方式进行标签化命名。

3.1常见规则

类型前缀示例含义
ODS(贴源层)ods_ods_fun_customerinfo源系统原始数据,贴近源结构
DW/DM事实表dw_ / dm_dw_ord_detail存放业务事件明细,如订单、交易等
维度表d_d_customer, d_pub_date存放业务维度信息(客户、日期等)
APP应用层表app_app_rpt_dealer_goods面向业务应用或报表的结果集
全量表后缀 _adw_ord_detail_a每次全量加载,覆盖写入
全删全导表后缀 _fa / _fulldw_ord_detail_fa加载前全量删除再写入(truncate+load)
日增量表后缀 _d / _idw_ord_detail_d按天增量加载,数据粒度为日
月增量表后缀 _mdw_ord_detail_m按月增量加载,数据粒度为月
历史累积表后缀 _hdw_ord_detail_h保存历史全量数据,带时间版本
实时同步表(Flink/Kafka)前缀 rt_ / ods_rt_ / dw_rt_ods_rt_trade_detail实时数据采集表,由Flink或Kafka流处理写入
快照表后缀 _snapdw_account_snap某时刻的全量快照
临时表前缀 tmp_tmp_sales_analysis任务运行中临时使用
中间结果表前缀 mid_mid_sales_summary数据加工中间结果

3.2 推荐命名模板

  • 层级前缀:ods / dw / dm / d / app / rt
  • 主题缩写:如 ord(订单)、cus(客户)、ln(贷款)
  • 功能描述:表的业务含义
  • 刷新标识:a(全量)、fa(全删全导)、d(日增量)、m(月增量)、h(历史)、rt(实时)

3.2.1 示例
表名解析
ods_fun_customerinfoODS层,基金系统的客户信息,贴源表
dw_ord_detail_aDW层,订单明细,全量加载
dw_ord_detail_dDW层,订单明细,日增量加载
dw_ord_detail_hDW层,订单明细历史累积表
d_customer维度表,客户维度
rt_trade_detail实时交易明细表,Flink/Kafka同步

3.3设计要点

  • 层级前缀:ods / dw / dm / d / app / rt
  • 主题缩写:如 ord(订单)、cus(客户)、ln(贷款)
  • 功能描述:表的业务含义
  • 刷新标识:a(全量)、fa(全删全导)、d(日增量)、m(月增量)、h(历史)、rt(实时)

3.3.1示例
表名解析
ods_fun_customerinfoODS层,基金系统的客户信息,贴源表
dw_ord_detail_aDW层,订单明细,全量加载
dw_ord_detail_dDW层,订单明细,日增量加载
dw_ord_detail_hDW层,订单明细历史累积表
d_customer维度表,客户维度
rt_trade_detail实时交易明细表,Flink/Kafka同步

3.4 设计要点

  1. 前缀代表层级,中间部分代表主题,后缀代表刷新策略或加载方式。
  2. 实时表必须有显式标识rt__rt),否则容易被误认为批处理表。
  3. 对于全删全导表,建议用 _fa(full append)或 _full 明确风险,提醒使用者数据全覆盖。
  4. 尽量保证不同层级和刷新策略不混淆,一眼就能看出表的特性。

3.5 多系统同名表处理规则

在集团公司或多系统环境中,常常会遇到不同业务系统存在同名表的情况。例如:

  • OA 系统emp(员工信息表,OA中用于考勤、人事流程)
  • ERP 系统emp(员工信息表,ERP中用于薪资、财务成本)
  • POS 系统emp(员工信息表,POS中用于销售员信息)

如果不加区分直接同步到 ODS 层,会造成表名冲突和含义混淆。

3.5.1处理原则
  1. 表名唯一化
    在 ODS 层命名时加入系统标识(系统缩写),保证不同系统的同名表在数仓中不会冲突。
  2. 保持可追溯性
    表名应能快速反映来源系统,方便数据溯源和问题排查。
  3. 贴源设计
    ODS 层表结构与源系统一致,尽量减少字段改动,确保原貌。
3.5.2命名规则
  • 系统缩写:建议统一在企业级数据标准中定义,如:

    • OA 系统:oa
    • ERP 系统:erp
    • POS 系统:pos
    • HR 系统:hr
    • CRM 系统:crm
  • 表名:与源系统一致(保持贴源原则)

    示例

来源系统源表名ODS 表名
OAempods_oa_emp
ERPempods_erp_emp
POSempods_pos_emp

设计要点

  • 系统缩写应全局唯一,避免缩写重复导致歧义。
  • 如果同一个系统中存在多个子模块(如 ERP 财务、ERP 生产),可以扩展缩写:
    • ERP 财务模块:erp_fin
    • ERP 生产模块:erp_mfg
  • 在元数据管理平台(如 Data Catalog)中登记系统缩写及表名映射关系,方便后续管理。
  • 对于实时同步的同名表,可以在系统缩写后增加 _rt
    • ods_oa_emp_rt
    • ods_pos_emp_rt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92534.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FlinkSQL Joins全解析

1. Lookup Join用途:用于流表与外部维表(静态或缓慢变化表)的关联(如 MySQL、HBase 等)。特点:通过 实时查询外部存储 获取维度数据。仅支持 处理时间(Processing Time)语义&#xf…

【FileZilla】基于 FTP 的 Windows 和 Linux 文件传输

在嵌入式开发过程中我们经常需要在 Windows 和 Linux 下进行文件传输,本文就介绍一种通过 FTP 实现 Windows 和 Linux 文件传输的方法。 Windows 为物理主机,Linux 是在 Vmware 虚拟机中安装运行的 Ubuntu,版本为 18.04。 Ubuntu 安装 FTP …

【GPT入门】第42课 ollama安装与运行llama3模型

【GPT入门】第42课 ollama安装与运行llama3模型1. 安装ollama2.运行模型3.测试模型3.1 直接在命令行交互3.2 openai接口1. 安装ollama https://ollama.com/ 选download, 选linux 执行安装命令: curl -fsSL https://ollama.com/install.sh | sh2.运行模型 启动服…

Lua语言元表、协同程序

元表元表的定义允许我们改变table的行为。setmetatable(普通表,元表)-- 元表a {"a","b","c"} -- 普通表 b {} --元表c setmetatable(a,b)print("------------------------")f {}print("f:",f)d setmetatabl…

[已解决]VSCode右键菜单消失恢复

前言 莫名其妙,好似VSCode自动更新以后,右键菜单就失效了,重装也无果. 手动搞一个吧 保存下面代码到桌面修复VSCODE右键菜单.reg,双击运行即可. Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]"使用 VSCode 打开""…

什么是浏览器标识?

浏览器标识 层面一:网络层指纹 (HTTP/TLS) 这是最基础的指纹,即使不用浏览器,只用Go的 net/http 发请求也会留下。HTTP Headers (请求头): User-Agent: 最著名的标识,声明自己是什么浏览器。很容易伪造,但也很容易被识…

五十八、【Linux系统nginx服务】nginx代理服务器、nginx优化

Nginx代理技术全景图 #mermaid-svg-0dRktnHYPXypO9xB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0dRktnHYPXypO9xB .error-icon{fill:#552222;}#mermaid-svg-0dRktnHYPXypO9xB .error-text{fill:#552222;stroke…

[0CTF 2016]piapiapia

usernamepassword回显推断admin123Invalid user name or passwordadmin123Invalid user name or passwordadmin123Invalid user name or passworda123Invalid user name说明username是adminadmin1Invalid password这很奇怪了admin0200?admin11Invalid user name or …

人工智能系列(7)人工神经网络中的无监督学习

一. 无监督学习简介神经网络的一个关键属性是能够从环境中学习,并在不断学习的过程中持续改善性能。在无监督学习(又称自组织学习,self-organized learning)中,网络无需外部教师提供目标输出,而是通过对输入…

250810-OpenWebUI集成Dify应用

A. 最终效果 B. 环境配置 配置并启动Open-WebUI 随后浏览器访问:http://localhost:8080 pip install open-webui open-webui serve配置并启动Pipelines Pipelines默认占用80端口相比于Docker的启动方式,可以在相同的命令行中,查看pipelines …

day22|学习前端ts语言

抽象类,继承。不能创造实例class类:属性声明,构造器,方法,实例继承super()override重写父类继承的方法声明提升(hoisting)同一个js作用域内部,编译阶段把函数…

【网络安全】CTF——[网鼎杯2018]Unfinish-SQL注入-二次注入

目录 一、前言 二、环境 三、复现 3.1寻找注入点 3.2尝试盲注 3.3正则限制 3.4脚本注入获取flag 四、总结 一、前言 前两天复现了一道CTF题目[网鼎杯 2018]Comment,今天继续来学习一下SQL二次注入。 二、环境 BUUCTF在线评测 三、…

【langchain】如何给langchain提issue和提pull request?

什么是issue? 可以这么理解,bug是issue的子集。issue可以包含bug\feature\sercurity and others. https://github.com/langchain-ai/langchain/issues/32484 什么是pull request? 其实我真不是很理解,但不妨我来提pr https://github.com/langchain-ai/…

MySQL的存储引擎:

目录 InooDB引擎: MyISAM引擎: InooDB引擎与MyISAM存储引擎的区别: Archive引擎: Blackhole引擎: CSV引擎: Memory引擎: Federated引擎: Merge引擎: NDB引擎&a…

Mock与Stub

一、核心概念与差异对比特性MockStub核心目的验证对象间的交互行为提供预定义的固定响应验证重点方法调用次数、参数、顺序不关注调用过程,只关注结果行为模拟可编程的智能模拟静态的简单响应适用场景验证协作关系隔离依赖、提供固定数据复杂性较高(需要…

香港服务器容器网络插件的多节点通信性能基准测试

香港服务器容器网络插件的多节点通信性能基准测试在云计算和容器化技术快速发展的今天,香港服务器因其优越的地理位置和网络环境,成为众多企业部署容器服务的首选。本文将深入探讨香港服务器环境下容器网络插件的多节点通信性能,通过详实的基…

Vue3 学习教程,从入门到精通,Vue 3 全局 API 语法知识点及案例详解(32)

Vue 3 全局 API 语法知识点及案例详解 Vue 3 提供了丰富的全局 API,用于创建应用实例、注册全局组件、指令、插件等。以下将详细介绍 Vue 3 的主要全局 API,并结合详细的案例代码进行说明。每个案例代码都包含中文注释,帮助初学者更好地理解…

UE5多人MOBA+GAS 41、制作一个飞弹,添加准心索敌

文章目录添加新角色(不写了)创建一个发射技能创建一个飞弹类添加击中特效添加准星UI获取瞄准目标添加新角色(不写了) 将原本的机器人蓝图改为BP_PlayerCharacter,以此创建子蓝图 创建动画蓝图模板(具体就…

解决渲染抖动与滚动锚点定位不准确问题的方法与经验分享

场景描述:React 虚拟列表(Virtualized List)是当我们在处理大列表时,为了提升性能而采用的一种技术。然而在实现过程中,可能会遇到渲染抖动问题以及滚动锚点定位不准确的问题。  解决方案:React虚拟列表实…

OpenAI 时隔多年再开源!GPT-OSS 120B/20B 发布,支持本地部署,消费级 GPU 即可运行

OpenAI 近期做出了一项令人瞩目的战略转变:宣布推出两款开放权重(Open Weight) 语言模型 GPT-OSS-120B 和 GPT-OSS-20B。这不仅是其自 GPT-2 之后首次开源模型,更关键的是,这两款模型特别针对消费级硬件进行了深度优化…