涉及到财物的字段,一律使用decimal

eg. decimal(20,2)   总长度20位,小数部分2位

float、double表示浮点数有误差,decimal是定点型,可以准确表示浮点数。

 

可枚举的字段,定义为tinyint

eg. tinyint(1) ,tinyint(2)

性别、用户角色、权限、支付方式、商品类别等字段都是可枚举的,存储为tinyint可以节约数据库空间

 

分类表

eg. 商品类别、菜单项、用户角色、用户权限

只有一级类目时可以存储为tinyint;有多级类目时还需要设置parent_id,关联上级分类,如果本身是一级分类没有上一级分类,可将parent_id设置为0。

 

密码需要加密存储

只使用一种加密算法不可靠,通常需要做一些额外操作,eg. 拼接一个字符串常量(盐 salt)、多次md5加密、和其它加密算法搭配使用。

 

一些表可以添加status状态字段,以标识进度、状态

eg. 用户账号状态:正常、封禁,订单状态,投诉处理进度

 

一些表需要记录操作时间,以便于追踪进度、分析原因

eg. 登录时间、修改密码的操作时间、订单状态的各个时间

 

可能发送变化、以后还会用到之前数据的字段,需要记录当时的数据

eg. 订单详情表需要记录商品的购买价格,商品价格可能会变化,尤其是搞活动价格变动频繁,查看订单详情的购买价格时不能关联商品表查询,需要记录购买时的商品价格。

 

联合主键
一般一个表只设置一个主键,有时候可以设置多个主键,这些主键组合起来作为联合主键。

联合主键和普通主键一样具有唯一性,不能重复。