Ali的MySQL建表强制规范

2024年 7月 20日 40.6k 0

点击标题下「蓝色微信名」可快速关注

最近看到很多文章都提到了阿里的MySQL数据库规范,很多公司可能都有自己的数据库开发规范,但如果规范内容越多,加上没有工具平台的支持,无法形成规范制定-执行-检验的闭环,就很难落地,影响执行。

阿里的MySQL建表强制规范只有10条,内容很精辟,基本上可以直接应用。

和数据库规范相关的历史文章:

《MySQL数据库设计开发规范》

《MySQL不规范的库表大小写带来的问题场景》

规范一:是否字段

1. 表达是否概念的字段,必须使用is_xxx的形式命名;

2. 数据类型必须是 unsigned tinyint;

3. 1表示是,0表示否;

例如:是否删除

正确:使用is_deleted,1表示删除,0表示未删除

错误:deleted, if_deleted, delete_or_not

规范二:字母与数字

1. 表名,字段名禁止出现大写;

画外音:MySQL在Windows下不区分大小写,Linux下虽然区分,但为了避免节外生枝,统一禁止大写。

2. 禁止数字开头,禁止两个下划线中间只有数字;

举例:

正确:aliyun_admin,level3_name

错误:AliyunAdmin,level_3_name

规范三:表名禁止使用复数

表名表示实体内容,不是实体数量,禁止使用复数。

规范四:禁止使用保留字

常见:desc,range,match,delayed...

规范五:主键,唯一索引,普通索引命名规范

1. 主键索引名:pk_xxx

画外音:primary key

2. 唯一索引名:uk_xxx

画外音:unique key

3. 普通索引名:idx_xxx

画外音:index

规范六:小数类型规范

1. 小数类型使用decimal;

2. 禁止使用float和double;

画外音:float和double存在精度损失,比较的时候,可能得到意想不到的结果。

3. 如果范围超过decimal,可以拆成整数与小数分开存储;

规范七:字符串长度非常相近,必须使用定长char

画外音:预先分配存储空间,不会触发重新分配。

规范八:可变字符串规范

1. 如果字符串长度较长,且内容长度差异较大,使用varchar;

画外音:不预先分配存储空间,比较节省空间。

2. 如果字符串长度大部分超过5000,使用text,独立出一张表单独存储;

画外音:避免影响主表其他字段索引效率。

规范九:强制字段

1. 必须具备id字段:类型为bigint unsigned,单表时自增,步长为1,不具备业务含义;

2. 必须具备create_time字段:类型为datetime(除非记录时区信息,使用timestamp);

3. 必须具备update_time字段:同上;

规范十:禁止进行物理删除操作

画外音:逻辑操作保留了数据资产的同时,能够追溯操作行为。

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发朋友圈,

Ali的MySQL建表强制规范-1

近期更新的文章:《RAID技术基本概念的普及了解》
《图解一些网络基础知识点》《探寻架构本质》
《MySQL中group by语句优化的实践场景》
《子查询改写的优化场景》
热文鉴赏:《中国队“自己的”世界杯》《你不知道的C罗-Siu庆祝动作》《架构设计的15个关键概念》
《大阪环球影城避坑指南和功略》
《推荐一篇Oracle RAC Cache Fusion的经典论文》
《"红警"游戏开源代码带给我们的震撼》
文章分类和索引:《公众号1500篇文章分类和索引》

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论