社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

只有10条,阿里巴巴MySQL建表规范,居然...

架构师之路 • 4 月前 • 193 次点击  

很多公司有很厚一本的MySQL规范,规范内容越多,越难落地执行。


阿里的MySQL建表强制规范只有10条,大伙可以参考借鉴。

画外音,另外:

索引强制规范有4条,SQL强制规范有9条;

建议规范与参考规范若干。


规范一:是否字段

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字段:同上;


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

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

近期好文

github标星32W的宝藏项目...


贵司有MySQL规范吗?

你觉得他们的建表规范合理吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/172053
 
193 次点击