## 表與字段規范
* 數據庫名,表名,字段名都必須為小寫字母+下劃線形式,不得使用大寫字母。
* 數據庫名與表名同一為單數形式,例如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) | 等級名稱 |