1.級(jí)別:[強(qiáng)制] 表達(dá)是與否概念的字段,必須使用is_*** 的方式命名,數(shù)據(jù)類(lèi)型是 unsigned tinyint ( 1表示是 , 0 表示否)
說(shuō)明:任何字段如果為非負(fù)數(shù),必須是 unsigned.
正例:表達(dá)邏輯刪除的字段名 is_deleted ,1 表示刪除,0 表示未刪除。
2.級(jí)別:[強(qiáng)制] 表名、字段名必須使用小寫(xiě)字母或數(shù)字 , 禁止出現(xiàn)數(shù)字開(kāi)頭,禁止兩個(gè)下劃線中間只出現(xiàn)數(shù)字。數(shù)據(jù)庫(kù)字段名的修改代價(jià)很大,因?yàn)闊o(wú)法進(jìn)行預(yù)發(fā)布,所以字段名稱(chēng)要慎重考慮。
說(shuō)明:mysql 在 windows 下不區(qū)分大小寫(xiě),但在linux 下默認(rèn)是區(qū)分大小寫(xiě)。因此,數(shù)據(jù)庫(kù)名,表名,字段名,都不允許出現(xiàn)大寫(xiě)字母。
正例: qy_admin ,pay_config, leve3_name
反例:qyAdmin,payConfig,leve_3_name
3.級(jí)別:[強(qiáng)制] 表名不使用復(fù)數(shù)名詞。
說(shuō)明:mysql中表名應(yīng)該僅僅表示表里的實(shí)體內(nèi)容,不應(yīng)該表示實(shí)體數(shù)據(jù),對(duì)應(yīng)于DO類(lèi)名也是單數(shù)形式,符合表達(dá)習(xí)慣。
4.級(jí)別:[強(qiáng)制] 禁用保留字,如 desc ,range ,match,delayed 等。參考mysql 官方保留字。
5.級(jí)別:[強(qiáng)制] 主鍵索引名為 pk_ 字段名;唯一索引名為 uk_字段名;普通索引名則為 idx_字段名。
說(shuō)明:pk_ 即為 primary key ; uk_ 即 unique key; idx_ 即 index 的簡(jiǎn)稱(chēng)。
6.級(jí)別:[強(qiáng)制] 小數(shù)類(lèi)型為 decimal,禁止使用 float 和 double。
說(shuō)明:mysql 的 float ,double 在存儲(chǔ)的時(shí)候,存在精度損失的問(wèn)題,很可能在值的比較時(shí),得到不正確的結(jié)果。如果存儲(chǔ)的數(shù)據(jù)范圍超過(guò)decimal 的范圍,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)分開(kāi)存儲(chǔ)。
7.級(jí)別:[強(qiáng)制] 如果存儲(chǔ)的字符串長(zhǎng)度幾乎相等,使用 char 定長(zhǎng)字符串類(lèi)型。
8.級(jí)別:[強(qiáng)制] vaarchar 是可變長(zhǎng)字符呂,不預(yù)先分配存儲(chǔ)空間,長(zhǎng)度不要超過(guò)5000,如果存儲(chǔ)長(zhǎng)度大于此值,定義字段類(lèi)型為 text ,獨(dú)立出來(lái)一張表,用主鍵來(lái)以應(yīng),避免影響其它字段索引效率。
9.級(jí)別:[強(qiáng)制] 表必備三個(gè)字段:id, create_time,updated_time。
說(shuō)明:id必為主鍵,類(lèi)型為 unsigned bigint, 支持的數(shù)字大小為19位。單表時(shí)自增,步長(zhǎng)為1. create_time, updated_time 類(lèi)型為timestamp 主動(dòng)創(chuàng)建,另一個(gè)是表示被動(dòng)更新。
10.級(jí)別:[推薦] 表的命名最好是加上 "業(yè)務(wù)名稱(chēng)_表的作用"。
說(shuō)明:這樣能清楚的知道每個(gè)表的作用。
正例: user_task ,pay_config, force_extra
11.級(jí)別:[推薦] 庫(kù)名與應(yīng)用名稱(chēng)盡量一致。
12.級(jí)別:[推薦] 如果修改字段含義或?qū)ψ侄伪硎镜臓顟B(tài)追加時(shí),需要及時(shí)更新字段注釋。
13.級(jí)別:[推薦] 字段允許適當(dāng)冗余,以提高查詢(xún)性能,但必須考慮數(shù)據(jù)一致,冗余字段應(yīng)遵循:
1)不是頻繁修改的字段。
2)不是varchar 超長(zhǎng)字段,更不能是 text 字段。
正例: 商品類(lèi)目名稱(chēng)使用頻率高,字段長(zhǎng)度短,名稱(chēng)基本一成不變,可在相關(guān)聯(lián)的表中冗余存儲(chǔ)類(lèi)目名稱(chēng),避免關(guān)聯(lián)查詢(xún)。
14.級(jí)別:[推薦] 單表行數(shù)超過(guò)500萬(wàn)行或者單表容量超過(guò)2GB,才推薦進(jìn)行分庫(kù)分表。
說(shuō)明:mysql 如果預(yù)計(jì)三年后的數(shù)據(jù)量根本達(dá)不到這個(gè)級(jí)別,請(qǐng)不要在創(chuàng)建表時(shí)就分庫(kù)分表。
15.級(jí)別[參考] 合適的字符存儲(chǔ)長(zhǎng)度,不但節(jié)約數(shù)據(jù)庫(kù)表空間,節(jié)約索引存儲(chǔ),更重要的是提升檢索速度。。