Mysql数据库建表规范15条
1,强制:表达 是与否 概念的字段,必须使用is_xxx的方式命名,数据类型是 unsigned tinyint(1); 例如:is_deleted 0或者1,1表示删除,0表示没有
2,强制:表名,字段名,必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间出现数字。 例如:app_admin user3_name 但是lever_3_name 这样是错误的。
3,强制:表名不能使用复数名词 例如:app_user 可以,但是app_users不行。
4,强制:一些保留字是不允许使用的,可以网上搜一下,例如 desc,rang,match,delayed,等等,可以参考官方的mysql官方保留字。
5,强制:主键索引名为pk_字段名;唯一索引名为 uk_字段名;普通索引名为 idx_字段名。
6,强制:小数类型为decimal,禁止使用float和double。 DECIMAL(M,D);
7,强制:如果存储的字符串长度几乎相等,使用char定长字符串类型。 char固定长度,varchar不固定长度
8,强制:varchar是可变长度字符串,不预先分配存储空间,长度不要超过5000。 超过可以使用text,单独一个表。
9,强制:表必备三个字段,id,gmt_create, gmt_modified。就是一条数据的创建时间,还有更改时间。类型是date_time
10,推荐:表的命名最好加上业务名称 业务名称_表的作用。 例如:product_task product_user_lk
11,推荐:库名与应用名称尽量一致
12,推荐:如果修改字段含义或者对字段表示的状态追加时,需要及时更新字段注释,日后管理更容易。
13,推荐:字段允许适当冗余,用来提高查询性能,但必须考虑数据一致。
冗余字段:不是频繁修改的字段,不是varchar超长字段,更不能是text字段。
14,推荐:单表行数超过500万,推荐分库分表,不过小app一般达不到。