MySQL設(shè)計(jì)規(guī)范

1.存儲(chǔ)引擎

Innodb

2.字符集

utf-8

3.設(shè)計(jì)約定

3.1主鍵

  1. 主鍵為bigint(20)型,防止溢出
  2. 主鍵自增

3.2外鍵

  1. 數(shù)據(jù)庫(kù)表禁止主外鍵關(guān)聯(lián),需要在程序業(yè)務(wù)邏輯中維護(hù)

3.3表名

  1. 表明字段名小寫(xiě),形如xx_xx

3.4禁用字段

  1. timest/**/amp:不同MySQL版本及不同配置參數(shù)會(huì)表現(xiàn)不一樣的行為,同時(shí)存在潛在的因時(shí)區(qū)轉(zhuǎn)換導(dǎo)致的性能問(wèn)題,可用datetime類(lèi)型替代
  2. bit :寫(xiě)入、讀取及對(duì)比bit類(lèi)型字段存在安全隱患,可用整型tinyint替代
  3. float、double :存在數(shù)值精度、數(shù)值運(yùn)算正確性方面的隱患,可用decimal類(lèi)型替代
  4. enum、set :存在性能、變更方面的隱患、可用整型、字符串類(lèi)型替

3.5必要字段

  1. version
    原因:數(shù)據(jù)庫(kù)字段要加 version 記錄更新版本。防止兩個(gè)人同時(shí)在原有基礎(chǔ)上新增10塊錢(qián)導(dǎo)致數(shù)據(jù)不對(duì),所以正常更新的時(shí)候需要set version = version +1,如果需要根據(jù)之前數(shù)據(jù)庫(kù)的數(shù)據(jù)來(lái)加數(shù)據(jù),則需要set money = money+10, version = version +1 where id =#{id} and version = #{version} 保證version和數(shù)據(jù)庫(kù)里的版本一致。

4.數(shù)據(jù)庫(kù)類(lèi)型,java類(lèi)型,jdbctype對(duì)照

數(shù)據(jù)庫(kù)類(lèi)型 java類(lèi)型 jdbctype
varchar(64) String VARCHAR
tinyint(1) Boolean TINYINT
tinyint(4) Integer INTEGER
int(11) Integer INTEGER
bigint(20) Long BIGINT/INTEGER
datetime java.util.Date TIMESTAMP
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容