1.存儲(chǔ)引擎
Innodb
2.字符集
utf-8
3.設(shè)計(jì)約定
3.1主鍵
- 主鍵為bigint(20)型,防止溢出
- 主鍵自增
3.2外鍵
- 數(shù)據(jù)庫(kù)表禁止主外鍵關(guān)聯(lián),需要在程序業(yè)務(wù)邏輯中維護(hù)
3.3表名
- 表明字段名小寫(xiě),形如xx_xx
3.4禁用字段
- timest/**/amp:不同MySQL版本及不同配置參數(shù)會(huì)表現(xiàn)不一樣的行為,同時(shí)存在潛在的因時(shí)區(qū)轉(zhuǎn)換導(dǎo)致的性能問(wèn)題,可用datetime類(lèi)型替代
- bit :寫(xiě)入、讀取及對(duì)比bit類(lèi)型字段存在安全隱患,可用整型tinyint替代
- float、double :存在數(shù)值精度、數(shù)值運(yùn)算正確性方面的隱患,可用decimal類(lèi)型替代
- enum、set :存在性能、變更方面的隱患、可用整型、字符串類(lèi)型替
3.5必要字段
- 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 |