一、通用规则

1、所有表字符集默认设置为 utf8mb4_unicode_ci;

2、所有表需要分页查询的表里面禁止出现text类的大文本字段;

3、所有表的字段为字符型varchar时最大长度尽量不要超过255;

二、字段类型约束

1、主键ID为bigint 默认长度设置为20;

2、任何字段如果为非负数,必须是 unsigned (无符号);

3、任何字段如果为必须为 NULL,必须是 NOT NULL,设置默认值,数字型默认值为0,字符型设置为'' (空字符串);

4、tinyint 默认长度设置为2;

三、主表必要字段

id bigint(20) unsigned NOT NULL COMMENT '主键id'

org_id bigint(20) UNSIGNED NOT NULL COMMENT '租户id'

create_by varchar(100) NOT NULL COMMENT '由谁创建'

create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'

update_by varchar(100) NOT NULL COMMENT '由谁更新'

update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

四、表命名规则

1、框架层级的表以 ofa_ 开头

2、业务模块强相关的表,以模块名开头:(例)cms_content

3、映射表(主表之间关联),以_ref结尾

4、扩展表(主表的扩展表),以_ext结尾

5、详情表(主表的明细表),以_det结尾

6、日志表(动作记录类表),以_log结尾

五、常用词使用规则

1、名称:xxx_name

2、标题:xxx_title

3、类型:xxx_type 作为查询条件的属性叫类型

4、分类:xxx_classify 影响主体结构的属性叫分类

5、封面:cover_img 图片字段的格式 xxx_img

6、描述:describe

7、阅读数:view_count 统计类字段的格式 xxx_count

8、人数:person_num 数值不变类的字段格式 xxx_num

9、是否删除:del_tag 标记类字段的格式:xxx_tag

10、状态:status COMMENT '状态:1.正常, 0.无效'

11、排序值:sort int(10) NOT NULL DEFAULT '0' COMMENT '排序'

六、索引

1、索引不含有NULL的列

2、短索引——提高查询速度,节省磁盘空间和I/O操作

3、索引列排序

4、like语句操作——like 'XX%'才会使用到索引

5、索引建立在频繁操作的字段

6、索引建立在值比较唯一的字段

7、where和join中出现的列需要建立索引

8、join操作中,mysql只有在主键和外键的数据类型相同时才能使用索引

9、不要在列上进行运算

10、where条件里使用了函数

11、不使用NOT IN 、<>、!= 操作,但<,<=,=,>,>=,BETWEEN,IN是可以用到索引

12、text、image和bit数据类型的列不应该增加索引

13、索引应适量,不能多建