1、表设计规范
- 表名采用下划线分隔的方式命名,例如:用户角色表 user_role。
- 建表DDL语句中,一定要带上表名的中文注释,方便TA人阅读。
- 手工声明表的编码类型(utf8),以防在Windows和linux之间表现不一致。
2、字段设计规范
- boolean字段统一使用is_xxx命名,建议直接使用bool类型,不要使用tinyint类型。
- 主键的命名方式为【表名_id】,例如user表,主键user_id。
- 状态字段以 xxx_status 命名,例如订单状态【order_status】,状态个数大于7个时,建议建立外键状态表。
- 编号字段以 xxx_no 命名,例如订单编号【order_no】
- 编码字段以 xxx_code 命名,例如城市编码【city_code】
- 中间表只能用在多对多的关系中,一对一和一对多关系采用逻辑外键(非物理外键)。
- 数据完整性按照先紧后松的原则设计,null值判断和ak约束必须加上。
- doule类型的数据存储用long型代替,业务层做转换(100)。例如:金额【56.23元】,存储为5623。
- url存储长度统一为varchar(512)。
- 性别使用M、F存储(M:男 F:女)使用varchar(5)类型,业务层做转换。
- 方式字段以 xxx_type 命名,使用tinyint类型,例如支付方式【payment_type】
- 时间字段以 xxx_time 命名,使用datetime类型,例如支付时间【payment_time】
3、主键设计规范
- 采用数据库自增的方式,不建议使用全局uuid或全局自增。后续的分表可以按区间的方式预分配好auto_increment值。减少前期系统开发和运维的简单性。
4、约束设计规范
- 采用先紧后松的策略。
- 非空约束、唯一约束一定要加上,减少脏数据。
- 不建议使用物理外键,使用逻辑外键。