Skip to content

DaYeSquad/database-best-pratice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

建表设计

使用全小写以下划线链接的方式来命名字段

在字段的命名上必须使用全小写以下划线链接的方式来命名字段,如 "display_name",不允许使用拼音与英文混淆的方式来命名,即使纯拼音的方式也要避免采用

使用的名词应当可以表达意思

如在表达 BOOL 类型的时候应当用 is_xxx 来表示,对于任何非负数的字段应当使用 UNSIGNED 类型

表名不使用复数名词

表名应该仅仅表示表里面的实体内容,不应该表示实体数量

禁用保留字

比如在使用 MySQL 的时候应当避免使用官方保留字如 desc、range、match、delayed 等

小数类型为 DECIMAL,禁止使用 FLOAT 和 DOUBLE

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

字符串存储

使用 CHAR 存储定长字符串;使用 VARCHAR 时需要注意长度,大部分时候用 255 及 1024,超过 5000 时使用 TEXT 类型

必备字段

id 类型为 UNSIGNED BIGINT,可用自增、步长为1; created_at 类型为对应数据库的日期类型; updated_at 类型为对应数据库的日期类型

[推荐]字段允许适当冗余

为了一些性能优化的场景允许字段适当冗余,但要注意冗余字段不应该是常修改的字段

[推荐]单表超过500万行或者单表容量超过2GB时才分表

三年内达不到该量级的不需要分表操作

默认的单位应该使用公制

如温度应使用摄氏度,面积应使用平方米

索引规约

业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引

唯一索引会降低一些可以忽略的 INSERT 性能,但是会大幅提高速度以及为数据做校验

超过三个表禁止 JOIN,需要 JOIN 的字段数据类型保持绝对一致,被关联的字段需要有索引

即使双表 JOIN 也要注意表索引、SQL 性能

其他

禁用存储过程

存储过程难以调试和扩展,更没有可移植性

数据订正前应先验证

在订正数据前应先 SELECT 避免出现误删,确认无误才能执行更新语句

[推荐]尽可能避免 IN 操作

如果实在无法避免,应先定 IN 的元素在 1000 个以内

ORM 查询不应该使用 * 作为查询字段

应当枚举字段列表而不应该使用 * ,否则会增加查询分析器的解析成本以及容易与最后的 Mapping 不一致

About

部门使用的数据库规范

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published