一、库表字段约束规范
-
如果是判断是否的字段,前缀为is_一定是unsigned tinyint类型,长度为1
-
只要不存在负数的字段,一定是无符号整型
-
数据库,表名,字段名不能出现大写字母,必须是小写字母,下划线后不能只出现数字
注:在windows下默认不区分大小写,而在linux下默认区分大小写
-
表名不能是复数,不能以关键字为表名
-
主键索引名以pk_xxx开头,唯一键索引名,以idx_xxx开头,索引名,uk_xxx
-
有小数的禁止使用float,和double,用decimal
-
字符串很小时,使用char定长,varchar是可变长度字符串,一般varchar不超过5000,超过后直接使用文本类型
-
表里必须存在三个字段
- id 必须是unsigned bigint类型,必须设为primary key,如果是单表,和其他表无绑定,必须设为自增
- create_time 必须是datatime类型
- update_time 必须是datetime类型
-
仓库名一般和应用名保持一致
-
字段如果频繁查询,可以允许适当冗余
-
单表超过五百万行或者超过两个G,要分库分表
-
数据类型和宽度的定义要合理
二、索引规范
- 一般要给唯一索引
- 多表查询,不允许关联查询,内联查询,最多存在两个,并且数据类型要一致
- 多表查询时,关联查询的字段也应该有索引
三、SQL开发约束
-
count(x,xxx) 不能代替 count(*),因为 * 可以查询到数据为null的字段
-
当字段是否为null作为where后的查询语句时,一定要用is,如where name is null,判断是否为空的函数 ISNULL()
-
不要使用外键和级联,尤其是在高并发集群项目当中,一切都在应用层解决,不能在SQL语句中
-
实际开发过程中不允许使用存储过程,很难调试
-
更新数据时先要查原数据
-
In操作能避免则避免
-
字符编码必须是UTF8