mysql数据库开发规范_开发规范——MYSQL数据库
數(shù)據(jù)庫規(guī)范
這里主要針對(duì)mysql數(shù)據(jù)庫,其他數(shù)據(jù)庫也可以借鑒
表
1、統(tǒng)一使用表命名規(guī)范
表名規(guī)范:分層+項(xiàng)目名縮寫+實(shí)體名(小寫)【+下劃線+實(shí)體名+rel】
例子
表名:bc_user
分層:
基礎(chǔ)服務(wù):b
綜合服務(wù):s
webapp服務(wù):a
表的種類:
映射實(shí)體的表:前綴_實(shí)體名(多個(gè)單詞用下劃線隔開)
關(guān)系表:前綴_實(shí)體名1_實(shí)體名2_后綴(多個(gè)單詞用下劃線隔開)
2、統(tǒng)一使用Innodb引擎
3、【推薦】表名不要關(guān)聯(lián)其他表名的信息
表名含義項(xiàng)目范圍獨(dú)立
索引
1、業(yè)務(wù)上具有唯一特性的字段,即使是組合字段,必須使用唯一索引。
如果沒有添加唯一索引,即使在應(yīng)用層做了非常完善的校驗(yàn)和驗(yàn)證,也無法避免臟數(shù)據(jù)的產(chǎn)生。
2、唯一索引命名:uk_字段名普通索引命名:idx_字段名
3、禁止對(duì)text定義索引
如果有對(duì)這類字段搜索的需求,可以通過全文索引方法來實(shí)現(xiàn)功能。
4、【推薦】varchar定義索引長(zhǎng)度。長(zhǎng)度統(tǒng)一10的倍數(shù),不超過50;
一般有搜索的話,用戶也不會(huì)輸入太多字
字段
1、主鍵禁止使用自增。
不同庫同步數(shù)據(jù)的時(shí)候,會(huì)出問題。
2、字段全部禁止為空。
為空的話,很容易在使用的時(shí)候出現(xiàn)npe異常
3、禁止使用外鍵,只能在概念和應(yīng)用層次使用外鍵
影響插入性能
4、禁止使用枚舉、集合類型
5、禁止在數(shù)據(jù)庫使用blog存文件。
數(shù)據(jù)庫只存相對(duì)的url路徑
6、類型使用規(guī)范
布爾:bit
時(shí)間(精確到天):date
時(shí)間(精確到秒):datetime
浮點(diǎn):deciaml
字符串(長(zhǎng)度小于10或者長(zhǎng)度大于10但是長(zhǎng)度相同):char
字符串(長(zhǎng)度為10~5000,長(zhǎng)度不等):varchar
字符串(富文本):text
7、必有字段
主鍵
創(chuàng)建時(shí)間
修改時(shí)間
假刪狀態(tài)
8、【推薦】可以審核添加冗余數(shù)據(jù),這樣可以快速查詢數(shù)據(jù)。
冗余類型:
+ 技術(shù)器、計(jì)分器等統(tǒng)計(jì)數(shù)據(jù)
+ 一旦成功不會(huì)修改的數(shù)據(jù)
9、【推薦】字段順序:自描述-》關(guān)聯(lián)其他表的描述-》功能性-》必有字段
注釋
1、表名或者字段注釋的格式:直譯【(補(bǔ)充說明)】
2、禁止帶“表”、“數(shù)據(jù)”等多余的字眼
3、如果類型字段,有變更,同步注釋
sql
1、禁止使用select *
數(shù)據(jù)庫查看執(zhí)行時(shí)間性能沒有影響。但是返回的數(shù)據(jù)量會(huì)變大,對(duì)網(wǎng)絡(luò)開銷有影響,最終還是影響性能,而且會(huì)影響數(shù)據(jù)庫的二進(jìn)制日志
2、使用select count(*)
select count(name)不記錄null的行數(shù),而且官方澄清count(*)不影響性能
3、使用sum函數(shù)時(shí),必須使用IFNULL(sum(),0)
如果sum函數(shù)沒有查詢結(jié)果返回null,容易出npe
4、禁止出現(xiàn)or。可以使用in或者unit all來替換
5、order by的場(chǎng)景,創(chuàng)建索引時(shí)order by后面的字段也必須是組合索引的一部分,并且放在索引順序的最后,避免file_sort
6、創(chuàng)建組合索引時(shí),區(qū)分度最高的放在最左邊
where a=? and b=? 如果a幾乎接近唯一,那么只要建idx_a即可。
7、【推薦】禁止更新表的所有字段,必須制定更新的字段
總結(jié)
以上是生活随笔為你收集整理的mysql数据库开发规范_开发规范——MYSQL数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java流实例_java流汇总以及使用实
- 下一篇: MySQL查询输入三个数的和_mysql