# Mysql設計規范
## 前言
在設計數據庫前,請先參照此規范已有定義字段類型設計數據庫,未規范的字段類型請團隊自行研究.
> 對于數據庫的管理 Windows 使用 [Heidisql](https://www.heidisql.com/) Mac 使用 [SequelPro](https://sequelpro.com/) 公司PHPmyadmin在不久將會關閉停用
## 起步
### 范式
通俗地理解三個范式,對于數據庫設計大有好處。在數據庫設計中,為了更好地應用三個范式,就必須通俗地理解三個范式(通俗地理解是夠用的理解,并不是最科學最準確的理解):
+ 第一范式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解,即沒有表中表;
+ 第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;
+ 第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。
> 通常情況下,這3個范式適用于大多數場景
> 在設計時遵循 由低到高,逐步規范,權衡利弊,適可而止
### 數據庫常用字段類型
### 表設計規范
+ 表必須有自增唯一主鍵
+ 采用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下劃線'_'組成;
+ 命名簡潔明確,多個單詞用下劃線'_'分隔;
> 例如:user_login, user_profile, user_detail, user_role, user_role_relation,user_role_right, user_role_right_relation
+ 表前綴'user_'可以有效的把相同關系的表顯示在一起;
### 外鍵規范
+ 使用表全名作為外鍵字段 比如 user => user_id ,order => order_id ,user_detail =>
+ 不需要表前綴 比如表名為dp_user 直接為user_id
### 字段設計規范
+ 用盡量少的存儲空間來存數一個字段的數據;
> 例如:能使用int就不要使用varchar、char,能用varchar(16)就不要使用varchar(256);
+ IP地址最好使用int類型;
+ 固定長度的類型最好使用char,例如:郵編;
+ 能使用tinyint就不要使用smallint,int;
+ 最好給每個字段一個默認值,最好不能為null;
### 常用字段設計
這里整理出生產過程中常用的字段設計
使用范圍 | 類型 | 備注
----|------|----
價格 | decimal(8,2) | foo
時間 | int(10) | bar
- 首頁
- APP
- 調試
- 部分問題解答
- IM
- 魔工坊APP框架
- 前端
- npm
- MogoAjax
- ES6
- javascript規范
- weui
- 微信小程序
- Mock數據偽造
- Mogo-Css
- O2-Upload
- 七牛圖片處理
- 前端調試
- 后端
- 魔工坊海豚PHP
- 文件上傳
- O2-Comments
- 前端API
- 消息
- Excel導入/導出
- 阿里短信
- dolphinPHP
- Thinkphp
- 海豚PHP
- 創建項目
- 人人商城與海豚同步問題
- mysql
- 發送HTTP請求
- 支付
- 個推
- 接口開發須知
- 生成海報
- 音頻轉換
- openssl
- App上架的故事
- 安卓簽名問題
- 蘋果賬號申請
- 各個平臺上架內容
- 文案小姐姐的文檔
- 微信支付申請流程
- 備案的故事
- 企業支付寶認證
- 微信公眾問題
- 微信開放平臺與上架應用
- 小程序特殊行業所需材料
- 模型文檔模板
- 必讀規范
- 跨域
- 前后端數據通訊接口規范
- Restful風格API規范
- 服務器
- SSL中間證書
- Git篇章
- MogoSDK
- 文檔模板
- PHP
- 使用
- 概念
- User
- 模型
- 文檔書寫
- JS
- 安裝
- 初始化
- 用戶
- 狀態管理
- 查詢
- 執行函數
- 請求
- 上傳
- MogoH5+