[转帖]JAVA 编程规范之建表规约

java,编程,规范,规约 · 浏览次数 : 0

小编点评

**强制字段命名规则:** 1. 以 `is_` 开头的字段名,类型为 `unsigned tinyint(1)`。 2. 表名、字段名均使用小写字母或数字,禁止数字开头、两下划线中间只出现数字。 3. 表名不使用复数名词。 4. 禁用保留字,如 `desc、range、match、delayed` 等。 5. 主键索引名为 `pk_`,唯一索引名为 `uk_`,普通索引名为 `idx_`。 6. `decimal` 类型,禁止使用 `float` 和 `double`。 7. 字符串长度不超过 `5000`,使用 `char` 类型。 8. `varchar` 类型,长度不超过 `5000`,如果长度超过此值,定义字段类型为 `text`,独立出来一张表。 9. 三个必备字段为:`id`、`gmt_create`、`gmt_modified`,其中 `id` 为主键,类型为 `unsigned bigint`、单表时自增、步长为 1。 10. 建议以业务名称_表的作用命名表。 11. 库名与应用名称尽量一致。 12. 更新字段含义或状态时,及时更新字段注释。 13. 可适当冗余,但必须考虑数据一致性。 14. 单表行数超过 500 万行或容量超过 2GB,可考虑进行分库分表。 15. 参考合适的字符存储长度,以提升检索速度。

正文

1、【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint( 1 表示是,0 表示否)。

2、【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。

3、【强制】表名不使用复数名词。

4、【强制】禁用保留字,如 desc、range、match、delayed 等,请参考 MySQL 官方保留字。

5、【强制】主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。

说明 : pk_ 即 primary key;uk_ 即 unique key;idx_ 即 index 的简称。

6、【强制】小数类型为 decimal,禁止使用 float 和 double。

说明 : float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。

7、【强制】如果存储的字符串长度几乎相等,使用 char 定长字符串类型。

8、【强制】varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索引效率。

9、【强制】表必备三字段: id, gmt_create, gmt_modified。

说明 : 其中 id 必为主键,类型为 unsigned bigint、单表时自增、步长为 1。gmt_create, gmt_modified 的类型均为 date_time 类型。

10、【推荐】表的命名最好是加上“业务名称_表的作用”。

11、【推荐】库名与应用名称尽量一致

12、【推荐】如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释。

13、【推荐】字段允许适当冗余,以提高查询性能,但必须考虑数据一致

14、【推荐】单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。

说明 : 如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

15、【参考】合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。

 

如若转载,请注明出处:开源字节   https://sourcebyte.cn/article/198.html

与[转帖]JAVA 编程规范之建表规约相似的内容:

[转帖]JAVA 编程规范之建表规约

1、【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint( 1 表示是,0 表示否)。 2、【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名

[转帖]Java中线程的生命周期

https://blog.51cto.com/u_15773567/5832430 1 介绍 本篇文章我们讨论下Java中的一个非常核心的概念:线程的生命周期。在Java编程语言中,多线程编程非常重要。线程从创建到销毁是有生命周期的,在线程的生命周期中,线程会经历多种状态(state)。 2 线程状

[转帖]【P1】Jmeter 准备工作

文章目录 一、Jmeter 介绍1.1、Jmeter 有什么样功能1.2、Jmeter 与 LoadRunner 比较1.3、常用性能测试工具1.4、性能测试工具如何选型1.5、学习 Jmeter 对 Java 编程的要求 二、Jmeter 软件安装2.1、官网介绍2.2、JDK 安装及环境配置2.

[转帖]Mysql DBA运维命令大全

Mysql DBA运维命令大全 https://www.modb.pro/db/97499 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造 现拥有 Oracle 11g OCP/OCM、Mysql、Oceanbase(OBCA)认证

[转帖]TCP半连接队列和全连接队列

TCP半连接队列和全连接队列 文章很长,建议收藏起来慢慢读! 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备免费赠送 经典图书:《Java高并发核心编程(卷1)》 面试必备 + 大

[转帖]Bash脚本编程学习笔记02:脚本基础和bash配置文件

脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成机器可运行的二进制程序文件后,方可运行。例如C语言和Java语言。 解释运行:需要一个编程语言的解释

[转帖]Spring体系结构:七大核心模块详解

https://www.toutiao.com/article/7088616970362487329/ spring是一个非常优秀的java框架,99%的公司都在使用,spring算是必备技能,所以一定要掌握好@mikechen Spring简介 Spring是一个基于控制反转IOC和面向切面编程

[转帖]自动化回归测试工具 —— AREX 上手实践

https://my.oschina.net/arextest/blog/8589156 AREX 是一款开源的自动化测试工具平台,基于 Java Agent 技术与比对技术,通过流量录制回放能力实现快速有效的回归测试。同时提供了接口测试、接口比对测试等丰富的自动化测试功能,无需编程能力也可快速上手

[转帖]JVM——内存区域:运行时数据区域详解

https://www.jianshu.com/p/cded765cfd1b 关注:CodingTechWork,一起学习进步。 引言 我们经常会被问到一个问题是Java和C++有何区别?我们除了能回答一个是面向对象、一个是面向过程编程以外,我们还会从底层内存管理和垃圾收集方面作出比较。 对于C++

[转帖]Java IO篇:序列化与反序列化

1、什么是序列化: 两个服务之间要传输一个数据对象,就需要将对象转换成二进制流,通过网络传输到对方服务,再转换成对象,供服务方法调用。这个编码和解码的过程称之为序列化和反序列化。所以序列化就是把 Java 对象变成二进制形式,本质上就是一个byte[]数组。将对象序列化之后,就可以写入磁盘进行保存或