数据库命名规范--通用

article/2025/9/24 2:08:55

分段式的

1.1 基本命名原则

以下基本原则适用于所有数据库对象命名,如无特别说明则为强制规范。
Ø规范:遵循行业规范
当有相关国家/行业强制性数据结构标准规范存在时,用于存储某业务数据的业务表在表名命名上原则上应该遵从标准规定,其表中相关字段的中文名称(即数据项名称)若标准规范上有规定的应遵循规定。此外,若标准规范上对数据项的类型、长度有规定的,原则上也应当遵循或保证能直接兼容保存和访问。
Ø规范:字母全部大写原则
所有数据库对象命名字母全部大写。Oracle对大小写不敏感,但是有些数据库对大小写敏感,统一大写有助于在多个数据库间移植。
Ø规范:字符范围原则
只能使用英文字母、下划线、数字进行命名,首位字符必须是英文字母。
Ø规范:分段命名原则
命名中多个单词间采用下划线分隔,以便阅读同时方便某些工具对数据库对象的映射。如XXX_XXX_XXX,但不限于三段式
Ø规范:勿用保留词
数据库对象命名不能直接使用数据库保留关键字,但分段中可以使用。如USER不能用于表名、列名等,但是USER_NAME可以用于列名,USER_INFO也可以用于表名。详细保留关键字请参见最后第6.1节,保留字。
Ø规范:简单命名原则
命名尽可能简单,避免太长的命名,尽量使用缩写形式,但是缩写也要能够表达命名的含义。数据库对象命名总长度不得超过30字节,以免超过数据库命名长度限制(Oracle有30的限制,Mysql为64,SQL SERVER也是64)。建议每个单词分段长度不要超过6位。
Ø建议:富有含义原则
数据库对象命名通常用能表示其内容或者含义的英文单词或其缩写表示也可用其中文名称各字词的拼音首写字母或者拼音简写方式表示。数字应尽量避免使用。
此外在公安行业,对于业务表上表示业务属性的字段名(即字段英文名)的命名,业内普遍默认的规范通常是以其中文名称的每个汉字拼音首字母组成。考虑行业习惯和通常思路建议用:建议用于表示用户业务应用属性的数据项字段名采用中文拼音首字母命名,对于其它纯粹用于应用系统内部使用的则尽量使用英文单词进行命名。另外,当按中文名称拼音首字母组合出来后出现与其它字段名重名时,则将最后命名的这个数据项的最后一个汉字用其完整拼音字母代替。
Ø建议:同义性原则
对于同一含义尽量使用相同的单词命名,不管使用英文单词、英文缩写还是拼音首字母,以免引起误解。如TELEPNHOE的A表中表示固定电话号码,在B表中就不应该用于表示移动电话号码。尽量避免同一单词表示多种含义的情况。
Ø建议:命名方式一致原则
在一个系统、一个项目中尽量采用一致的命名方式,都采用英文单词或者拼音首字母。尤其要避免在一个对象命名中同时采用英文单词和拼音首字母。如确实需要在一个项目中采用两种命名方式,考虑系统功能设计相关表(开发)使用英文单词命名,业务相关的表(实施)使用拼音首字母。
Ø建议:扩展性原则
各系统或者项目在遵循本规范的基础上可以根据需要制定更明确的规范细则,以满足项目管理需要。如对模块进行统一命名,然后用于表名的前缀。建议每个系统在启动开发时建立数据字典,管理命名中使用的英文单词、英文单词缩写、拼音首字母缩写等,对用于命名的单词进行统一管理。

1.2 命名前缀规范

Ø规范:以下对象命名采用固定前缀进行命名,前缀表示数据库对象的类型,前缀代码规范如下:

1.3 表和列Tables and Table Columns

1.3.1 表
Ø规范:表的命名以T_开头
说明:公司一直以来对信息代码表特殊规范以BM_(表码)或者DM_(代码)开头,考虑历史特殊情况信息代码类表命名方式可以沿用历史习惯。表码表的规范名称为信息代码表,因此信息代码表以后将统一使用DM_开头。
Ø规范:表名采用多段式命名,各单词间用下划线分隔;
Ø规范:表名只允许用英文字母、下划线、数字进行命名,不允许用中文或者其他符号;
Ø规范:表名全部字母大写;
Ø规范:根据历史习惯各系统常用表类前缀作如下约定


Ø建议:表名也用于相关索引、分区、分区表空间、约束、主键等命名,因此为了避免相关对象命名长度超过限制,建议表名长度不要超过20。
Ø建议:表的命名方式建议采用T_MOUDLE_ENTITY方式。MOUDLE表示数据库对象所属的系统、模块名或者主题分类。ENTITY表示目的表代表的实体名称。MOUDLE 只能由一个单词组成,ENTITY可以根据需要有多个单词组成。
Ø建议:命名时应尽可能地使名称能够清晰准确表达对象的内容,尽可能使用能代表其含义的英文单词、英文单词缩写,特殊情况也可采用拼音首字母

示例:T_UserInfo、USER_INFO、UserInfo、T_用户信息、TB_USER_INFO、TBL_USER_INFO、T$USER$INFO、等都是违反本规范的,正确命名为T_USER_INFO。
 

1.3.2 列
Ø规范:列名无需使用前缀,如使用数据类型编码作为前缀;
Ø规范:列名只允许用英文字母、下划线、数字进行命名,不允许用中文或者其他符号;
Ø规范:列名字母全部大写;
Ø规范:列名采用多段式命名时,各单词间用下划线分隔;
Ø规范:列名不能直接使用数据库保留字;
Ø建议:列的命名应尽可能地采用简洁明了的列名以准确描述列的内容含义, 根据需要可以一个单词或者多个单词进行命名;
Ø建议:日期类型字段推荐以“_DATE”结尾的名字命名,时间类型的字段推荐以“_TIME”结尾的名字命名。
Ø建议:主键列命名为“ID”或者以 “_ID”为后缀进行命名。对于需要在其他表中引用的主键字段以“_ID”后缀方式命名,普通表主键无需加后缀。如基础信息表的主键一般应命名为“ENTITIE_ID”方式,而通常业务数据明细表的主键则直接命名为“ID”。

示例:
1. 正确命名:USER_NAME、AUDIT_TIME、AUDIT_USER
2. 错误命名:USERNAME、UserName、C_USER_NAME、人员姓名,违反规范。
3. 错误命名:COMMENT、AUDIT,违反保留字

1.4 视图 Views

Ø规范:视图的命名以VW_开头
Ø规范:视图其他命名规范与表名相同
Ø建议:视图的列名一般与基表一致,但是根据需要可以与基表的列名不同。如接口视图一般根据接口需求进行命名

1.5 索引Indexes

Ø规范:普通索引名称以IDX_为前缀,约束性索引命名参见约束章节说明。不区分B-TREE索引,位图索引、函数索引等类型。
Ø建议:单字段索引的命名方式为:IDX_表名_字段名,表名无须前缀,命名长度太长时表名和字段名可以考虑缩写。
Ø建议:多字段联合索引命名方式同单字段,考虑长度限制,可以只列出主要字段名或者采用缩写方式描述索引字段。

示例:
1. 错误命名:IDX_USER_INFO,没有给出字段名
2. 错误命名:B_USER_INFO_DEPT_CODE,前缀错误。

1.6 表空间 Tablespace

Ø规范:表空间名以TS_开头
Ø建议:公用(非分区表专用)表空间命名规范为:TS_系统名_类型名。类型分为:数据DATA,索引INDX,也可以根据需要增加其他分类。系统名一般与系统主用户名一致,如门户系统为PORTAL。
Ø建议:分区表专用表空间命名规范为:TS_表名_分区编号。表名可以不用前缀,分区编号尽量使用能够表示分区范围的编号。如按年分区可以用2004表示2004年的分区。

示例:
1. 正确命名:TS_PORTAL_DATA、TS_PORTAL_INDX分别表示门户系统的数据表空间和索引表空间。
2. 错误命名:PORTAL_DATA(无前缀)、TS_Portal_indx(大小写)

1.7 分区Partitions

Ø建议:分区的命名规范为为PT_表名/索引名_Pn。其中,TNAME是指分区表或分区索引的名称,n是用于区分不同分区的唯一识别标志。如果分区表是以年份的不同进行分区,则n为所代表的年份。

1.8 用户、模式 Scheme

Ø规范:数据库用户采用一个代表系统名称含义的英文单词或者拼音首字母进行命名,无前缀。
Ø规范:不得使用数据库自动创建的用户模式,如SYSTEM、SYS、ROOT等。
Ø建议:创建数据库用户时一般不要授予DBA权限

 

1.9 完整性约束Integrity Constraints

1.9.1 主键Primary Keys
Ø建议:主键约束的命名格式为PK_表名,表名不带前缀。如采用字段后加PRIMARY KEY方式添加主键则无需命名,由数据库自动命名。
示例:
1. 表T_SYS_MENU的主键约束命名为PK_SYS_MENU。
1.9.2 外键Foreign Keys
Ø建议:外键约束的命名格式为FK_表名_字段名,表名不用前缀,字段名较长时可以缩写。
1.9.3 唯一关键字约束Unique Keys
建议:唯一关键字约束命名规范为UK_表名,表名可以不带前缀。一般情况不会出现一个表除了主键外还有多个唯一约束的情况,确实需要时可以命名为UK_表名_n,n为索引区分标识可以是字段名或者序号。
1.9.4 其他约束Other Constraints
建议:CHECK约束的命名格式为CK_表名_字段名,表名可以不带前缀,名字太长时表名和字段名可以根据需要缩写。

1.10 同义词Synonyms

建议:同义词的目的是用于方便对其他用户或者数据库的对象的使用,因此同义词在命名时,一般与原数据对象名称相同,如需要前缀可采用SYN_。

1.11 序列号Sequences

Ø规范:序列号的命名应以SEQ_开头
Ø规范:序列号命名格式为SEQ_主键列名或者SEQ_表名。前者适用于主键列用有含义字母进行命名的,后者适用于直接用ID命名主键的情况。表名可以不用前缀。
示例:
1. 正确命名:SEQ_ORDER_NO用于订单表头主键列ORDER_NO的序列号,SEQ_ORDER_DETAIL用于订单明细表主键列ID的序列号。
2. 错误命名:SQ_ORDER_NO、ORDER_NO、SEQ_order_no

1.12 包Packages

Ø规范:包的命名以PKG_开头
Ø建议:包的命名格式PKG_MOUDLE,MOUDLE用代表模块或者功能组的名字进行命名。建议在有可能的情况下尽量使用包。
示例:
1. 正确命名:PKG_REPORT表示报表模块的包名
2. 错误命名:PK_REPORT,PK_前缀用于主键。REPORT_PKG,应使用前缀方式命名而不是后缀。Pkg_report,大小写不符合规范。

1.13 函数Functions

Ø规范:函数命名以F_开头
Ø建议:包中的函数的命名规范为F_NAME,NAME表示相应的功能用途描述;所属的模块或者功能组已经在函数所引用的包中指出。
Ø 建议:独立的函数的命名规范为F_MODULE_ NAME,MOUDLE可用于指明所属的模块的名称或者功能组。对于基本功能函数,MOUDLE_可以不需要。

1.14 存储过程Procedures

1. 规范:除了前缀改为“SP_”,其余与函数相同。

1.15 参数Parameters、变量Variables

2.规范:输入函数命名规范为P_NAME
3.规范:普通类型变量命名规范为V_NAME,如数字、字符串、日期等。CURSOR类型变量使用CUR_作为前缀。隐式游标变量、记录类型变量以及对象类型变量按普通变量规范。
4.规范:输出参数命名规范为O_NAME,输出参数放在参数列表最后。
5. 建议:命名规范中的NAME部分应能清楚表示变量或者参数的含义,以提高代码可读性。避免使用V_1、V_M、P_1、P_N等无法表达具体含义的参数或者变量命名。
示例:

 
  1. 1. 正确变量命名:

  2. DECLARE

  3. V_ORDER_DATE CHAR(8);--订单日期

  4. V_ORDER_NO NUMBER(16);--订单号

  5. CURSOR CUR_ORDER_LIST IS SELECT ……;

  6. 2. 错误变量命名:

  7. DECLARE

  8. ORDER_DATE CHAR(8);--没有规定前缀

  9. ORDER_NO NUMBER(16); --没有规定前缀

  10. v_order_detail_id number(16);--大小写不规范

  11. 3. 正确参数命名:

  12. CREATE PROCEDURE P_NAME(

  13. P_USER_ID VARCHAR2,--用户编号

  14. O_ORDER_COUNT OUT NUMBER—输出订单数

  15. ) AS ……

  16. 4. 错误参数命名:

  17. CREATE PROCEDURE P_NAME(

  18. USER_ID VARCHAR2,--前缀不规范

  19. P_dept_code VARCHAR,--大小写错误

  20. P_2 OUT NUMBER—前缀不规范,命名没有含义

  21. ) AS ……

1.16 触发器 Triggers

规范:触发器的命名规范为:TRG_表名_触发器类型。表名不带前缀,触发器的类型由触发时机和触发动作组成:‘B’表示前触发,‘A’表示后触发,‘INSERT’‘UPDATE’‘DELETE’描述触发动作。
示例:
1.正确命名:针对业务系统缴费表(前触发)的触发器的命名为TRG_BS_CHARGE_BINSERT。
2.错误命名:TRG_BS_CHARGE ,无规定后缀、BS_CHARGE_BINSERT,无规定前缀、TrgBsCharge,违法大小写规定和分段命名原则;


http://chatgpt.dhexx.cn/article/YNs4C8r2.shtml

相关文章

数据库命名规范

数据库命名规范 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:SQL Server 2014 Management Studio 作者:朱海恩 撰写时间:2019年7月12日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

【数据库】命名规范

鸣谢: 命规范_码农书生的博客-CSDN博客_数据库字段名称命名规则一、数据库命名规范1.1 数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线_组成,命名简洁明确,多个单词用下划线_分隔,一个项目一个数据库&…

ESP8266 WIFI 模块串口调试过程-实现通过互联网实现数据远程传输(结尾含驱动代码链接)

一、 ESP8266 WIFI模块调试(串口发送AT指令调试)。 ESP8266 WIFI模块的调试算是最复杂的了,虽然通信是简单的串口通信,但是要设置ESP8266连接服务器并稳定无误的将数据上传,还是非常不容易的。 在前期模块调试阶段我…

串口转无线WiFi模块——WizFi210-EVB操作手册

1. 产品介绍 特点 - 通过串行主机接口,进行WiFi连接 - 快速开机时间:少于20毫秒 - 超低功耗,通过动态电源管理(待机模式34μA) - 速度高达to11Mbps(802.11b)的标准的802.11b/g/n接入点 - 安全…

sever串口wifi拓展板_什么是串口WIFI模块

展开全部 串口WiFi模块多是以邮票孔的62616964757a686964616fe59b9ee7ad9431333365646263形式作为管脚引出控制引脚,主要采取焊接的方式来实现接入电路控制板。 串口WiFi模块是多种WiFi模块中的一类,功能是将串口或TTL电平转换为符合Wi-Fi无线网络通信标…

【沧海拾昧】WiFi串口通信ESP8266模块基本介绍(附野火WiFi透传实例)

#C0104 沧海茫茫千钟粟,且拾吾昧一微尘 ——《沧海拾昧集》CuPhoenix 【阅前敬告】 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 【如有问题必是本集记录有谬,切勿深究】 目录 前言一、ESP8266模块基本连线二、ESP8266固件…

ESP8266串口WiFi模块

参考和学习《ESP8266串口WIFI模块的基本使用》点击打开链接 ESP8266是一款超低功耗的UART-WiFi 透传模块,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。 把硬件联网之后,就再也不是“玩单机”了。配合服务器端的Socket网络编程,可以…

教你E103-W10串口转WiFi模块的无线透传应用教程

以下为E103-W10作为 softAP实现 UDP串口服务器无线数据透传的举例,E103-W10作为 station 可同理实现透传。 1.透传 默认仅在TCP client单连接或UDP传输模式时,支持透传。 1.1.TCP Client 单连接透传 1.配置WiFi模式 使用指令ATCWMODE3//SoftAPStati…

ESP32小网关应用,嵌入式串口转以太网,支持蓝牙+wifi

提示:今天分享的ESP32小网关,是深圳市启明云端有限公司推出的基于ESP32系列的嵌入式串口转以太网模块,模块内部集成了优化过的TCP/IP协议栈的WT32-ETH01模块 WT32-ETH01-基于ESP32的小网关 提示:ESP32系列IC是集成了2.4GHz Wi-Fi…

如何测试WizFi210的”串口转无线”功能?

该文章给大家介绍串口模块WizFi210的快速启动指导,如何测试WizFi210的”串口转无线”功能。 首先要给大家说明的是,本文描述的是在下列环境中配置串口模块WizFi210时所需要的步骤: 1. AP:使用WPA Personal或临时密钥完整性协议(T…

rs232/485转WiFi串口转换服务器 Modbus RTU转tcp协议

大家好,我们知道传统工业上常用的是RS232和RS485信号来控制设备,而现在,我们已经进入了互联网时代,物联网时代,所有的设备都可以上网,而传统的232设备如何上网呢? 在这里,我推荐大家…

ESP8266-12F WIFI转串口模块底板设计

一、ESP8266-12F模块简介 ESP8266-12F 是ESP8266-12的增强版,完善外围电路,四层板板工艺,增强阻抗匹配,信号输出更佳,无论是稳定性还是抗干扰能力,PCB天线经过专业实验室测试,完美匹配&#xff…

串口转WiFi透传模块UART转WiFi模块嵌入式WiFi参数一键配置原理

SimpleWiFi串口WiFi模块一键配置功能 概述 目前,在嵌入式领域,智能家居、智能工业、智能公交等等控制中,WiFi已经成为了一种普遍被采用的技术。 在智能工业控制,或者智能家居的主控系统中。单片机,成为了中控系统的控…

调试wifi转串口的板子成功了

今天下班回到家就开始调我在淘宝上买的wifi转串口的板子,到目前为止算是调通了。回头就是编写arduino的串口通信程序了。这样的话,我的手机智能家局系统很快就可以完成了。下边是调试wifi转串口板子的情况,拿来和大家分享。 大体上的调试思路…

wifi转串口

wifi转串口 ZLAN7146是一款wifi转串口的wifi串口服务器。该串口服务器可以方便地使得串口设备连接到WIFI无线网络,实现串口设备的无线化网络升级。RS232接口支持全双工、不间断通信;RS485内嵌485防雷保护。wifi支持STA模式连接到无线路由器,或…

物联网工业串口转WiFi模块 无线路由WiFi模块的选型

伴随着物联网的发展,最初的两个机器之间通过硬件直接通信的物理层到通过硬件地址再局域网中进行通信的数据链路层已经远远不能满足于现代人们生活以及各行给业生产的需求。逐渐结合高性能,高质量的网络层和应用层。实现智能终端数据采集,数据…

串口转无线网模块:WizFi630 快速入门指导

WIZnet研发的WizFi630,能有效实现串口转无线功能,它兼容 IEEE 802.11 b/g/n,支持3个以太网端口(10/100 高速以太网) 和2个UART口 ,内嵌全套网络协议栈和相关安全网络协议,并且配置简单,具有极好的易用性。以下为对其的…

【常用模块】ESP8266 WIFI串口通信模块使用详解(实例:附STM32详细代码)

物联网,万物互联。这里涉及到的最基本的东西就是如何将所有的物联网设备连接在一起。最简单、最广泛使用的就是互联网。 ESP8266 WIFI串口通信模块应该是使用最广泛的一种WIFI模块之一了。为什么呢? 因为ESP8266模块是一款高性能的WIFI串口模块&#x…

串口与wifi模块

经过以下学习,我们掌握: AT指令与wifi模块的测试方法:通过CH340直接测试,研究各种AT指令下wifi模块的响应信息形式。编程,使用串口中断接收wifi模块对AT指令的响应信息以及透传数据,通过判断提高指令执行的…

ESP8266串口转wifi/wifi转串口模块

ESP8266串口转wifi透传模块(MS_Uart2Wifi) 简介模块功能模块使用步骤效果展示使用ESP8266开发板进行试验 简介 最近几天做了一个串口转wifi模块,平常我们使用单片机往往用串口通信或者通过串口在pc上显示数据。但当我们想通过通过wifi无线通信…