NoteDeep
表字段规定 DB设计规范 字段允许适当冗余字段,提高查询性能,但必须考虑数据的一致性 text类型字段或使用频率很低的字段,建议新建一张表保存,不要跟主数据融合在一起 单表数据尽量控制在500万行以内,如果在可预测的时间范围内,数据量会超过500万行时,建表时要考虑分库分表 库名、表名、字段名必须小写,下划线风格,不超过32个字符,必须见名知意,禁止拼音英文混用,名称要有区分度 id必须是主键,每个表必须有主键,且保持增长趋势,小型系统可以依赖于MySQL的自增主键,大型系统可以使用分布式ID(如:雪花算法生成的ID)作为唯一主键 所有字段不允许为空,必须加默认值字符型(char、varchar)默认值为一个空字符串'' 数值型(decimail、tinyint、smallint、mediumint、int、bigint)默认值为0,如果0有特殊含义,需要选无业务含义的默认值(如-1),并在字段注释中写明默认值是多少 日期型:默认当前日期 所有字段和表必须加清晰的注释说明,如果字段取值是固定的类型,注释中需列出有哪些类型,比如:level int(4) NOT NULL DEFAULT 1 COMMENT '职称级别 -1默认值无业务含义 1初级 2中级 3高级' 禁止使用外键,如果有外键完整性约束,需要应用程序控制 如果存储的字符串长度几乎相等,使用CHAR定长字符串类型 建表需指定使用的引擎和字符集CREATE TABLE campus_user( XXX ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 小数类型使用decimal,禁止使用float和double 禁止使用存储过程索引规范 主键索引名为 pk_表名_字段名;pk_ 即primary key; 唯一索引名为 uk_表名_字段名;uk_ 即unique key; 普通索引名为 idx_表名_字段名;idx_ 即index; 业务上具有唯一特性的多个字段,需要结合性能,考虑是否创建多字段唯一索引查询规范 [强制]禁止使用select *全字段查询,需要指定查询哪个字段 [建议]页面搜索严禁左模糊或者全模糊(配置类等数量较少数据可以模糊查询),如果需要请走搜索引擎来解决 [强制]一定要查看SQL的执行计划,查询SQL尽量走索引 [强制]控制数据查询范围,数据量比较大的表禁止全表查询,可以指定时间范围或返回记录数量 [强制]禁止超过3张表的join [强制]频繁更新的字段和区分度不高的字段不建议建索引必加字段 `id` bigint(20) NOT NULL COMMENT '主键ID', `delete_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 1是 0否', `created_by` varchar(30) NOT NULL DEFAULT '' COMMENT '创建人登录用户名', `created_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `last_modified_by` varchar(30) NOT NULL DEFAULT '' COMMENT '更新人登录用户名', `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' 必加索引 PRIMARY KEY (`id`), KEY `idx_user_last_modified_date` (`last_modified_date`) COMMENT '更新时间索引'

评论列表