## 表与字段规范
* 数据库名,表名,字段名都必须为小写字母+下划线形式,不得使用大写字母。
* 数据库名与表名同一为单数形式,例如User模型对应user表。
* 表主键必须为id,类型必须为int(11), unsigned,自增。
* 所有数值型字段无负数形式的都必须为unsigned。
* 无特殊情况所有字段必须不能为null。
* 表达是与否概念的字段,必须使用 is\_xxx 的方式命名,数据类型是 unsigned tinyint
( 1 表示是,0 表示否)
* 表名不使用复数名词
* 小数类型为 decimal,禁止使用 float 和 double。
* 字段允许适当冗余,以提高性能,但是必须考虑数据同步的情况。冗余字段应遵循:
1)不是频繁修改的字段。
2)不是 varchar 超长字段,更不能是 text 字段。
正例:商品类目名称使用频率高,字段长度短,名称基本一成不变,可在相关联的表中冗余存
储类目名称,避免关联查询。
* 无特殊情况所有表必须添加`create_time`,`update_time`,`delete_time`三个字段,并且默认都为0,数据量
* 无特殊情况,所有金额字段必须为`decimal(16,2)`类型。
## 索引规范
索引名称必须以`idx_`开头,后面跟索引字段名称,例如`name`的索引为`idx_name`。
## 常用表与字段规范
所有 `名称`、`标题`类的字段必须都用`name`来表示,禁止使用 ~~titile~~ 表示。
```
这样做的好处:
1.统一命名字段。例如不用考虑新闻的标题是name还是title,也不用考虑活动的名称是title还是name;因为都是name。
2.提高复用率。当有关联的时候,不确定关联表的名称(标题)是name还是title的情况下,需要看具体字段是什么,会耽误时间,同时本来可复用的代码会改来改去,导致非常乱。
```
### 用户表(user)
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| username | varchar(50) | 用户名 |
| password | varchar(255) | 密码 |
| nickname | varchar(50) | 昵称 |
| mobile | char(11) | 手机号 |
| email | varchar(50) | 邮箱 |
| openid | varchar(255) | 微信openid |
| avatar | varchar(255) | 头像url |
| sex | tinyint(1) | 性别,0未知1男2女 |
| level_id | tinyint(3) | 等级ID |
| money | decimal(14,2) | 余额 |
| integral | int(11) | 积分,积分只能为整数 |
| status | tinyint(1) | 状态,1启用0禁用 |
### 用户等级表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | tinyint(3) | 主键 |
| name | varchar(20) | 等级名称 |
### 轮播图表(slide)
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| name | varchar(50) | 轮播名称 |
| jump_type | tinyint(2) | 跳转类型 |
| jump_target | varchar(100) | 跳转目标 |
| sort_number | mediumint(9) | 排序 |
### 订单表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| order_no | char(16) | 订单号 |
| user_id | int(11) | 用户ID |
| money | decimal(16,2) | 订单金额 |
| freight | decimal(16,2) | 运费 |
| pay_money | decimal(16,2) | 最终支付金额 |
| pay_status | tinyint(1) | 支付状态 |
| pay_status | tinyint(1) | 支付状态 |
| create_time | int(11) | 订单创建时间 |
| update_time | int(11) | 订单更新时间 |
| delete_time | int(11) | 订单删除时间 |
### 收货地址表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| user_id | int(11) | 用户ID |
### 省市区表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| name | varchar(50) | 等级名称 |
### 积分记录表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| name | varchar(50) | 等级名称 |
### 短信验证码表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| name | varchar(50) | 等级名称 |
### 文章(新闻/资讯)表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| name | varchar(50) | 等级名称 |
### 文章(新闻/资讯)分类表
| 字段名 | 字段类型 | 说明 |
| --- | --- | --- |
| id | int(11) | 主键 |
| name | varchar(50) | 等级名称 |