背景
一個(gè)平臺(tái)或系統(tǒng)隨著時(shí)間的推移和用戶量的增多,數(shù)據(jù)庫(kù)操作往往會(huì)變慢;而在JAVA應(yīng)用開發(fā)中數(shù)據(jù)庫(kù)更是尤為重要,絕大多數(shù)情況下數(shù)據(jù)庫(kù)的性能決定了程序的性能,如若前期埋下的坑越多到后期數(shù)據(jù)庫(kù)就會(huì)成為整個(gè)系統(tǒng)的瓶頸;因此,更規(guī)范化的使用MySQL在開發(fā)中是不可或缺的。
一、MySQL數(shù)據(jù)庫(kù)命名規(guī)范
1、數(shù)據(jù)庫(kù)所有表前綴均使用項(xiàng)目名稱首字母縮寫;
2、數(shù)據(jù)庫(kù)所有對(duì)象名稱均使用小寫字母,并且單詞之間通過(guò)下劃線分開;
3、數(shù)據(jù)庫(kù)所有對(duì)象名稱禁止使用MySQL保留字及關(guān)鍵字,涉及到關(guān)鍵字的SQL查詢需要將關(guān)鍵字用單引號(hào)括起來(lái);
4、數(shù)據(jù)庫(kù)所有對(duì)象名稱不超過(guò)32個(gè)字符,并且命名要遵循見名知意原則;
5、數(shù)據(jù)庫(kù)臨時(shí)表必須以 pro_tmp_ 為前綴并且以日期 20190917 為后綴,備份表必須以 pro_bac 為前綴并以時(shí)間戳為后綴;(pro為項(xiàng)目名稱首字母縮寫)
6、數(shù)據(jù)庫(kù)所有存儲(chǔ)相同數(shù)據(jù)的列名和列類型必須保持一致。
二、MySQL數(shù)據(jù)庫(kù)基本設(shè)計(jì)規(guī)范
1、若無(wú)特殊說(shuō)明,建表時(shí)一律采用Innodb存儲(chǔ)引擎。
選擇合適的引擎可以提高數(shù)據(jù)庫(kù)性能,如InnoDB和MyISAM,InnoDB和MyISAM是許多人在使用MySQL時(shí)最常用的兩個(gè)表類型,這兩個(gè)表類型各有優(yōu)劣,視具體應(yīng)用而定;
基本的差別為:MyISAM類型不支持事務(wù)處理等高級(jí)處理,而InnoDB類型支持;MyISAM類型的表強(qiáng)調(diào)的是性能,其執(zhí)行速度比InnoDB類型更快,但是不提供事務(wù)支持,而InnoDB提供事務(wù)支持以及外部鍵等高級(jí)數(shù)據(jù)庫(kù)功能;
因此,其支持事務(wù)處理、支持外鍵、支持崩潰修復(fù)能力和并發(fā)控制是我們建表時(shí)首選的存儲(chǔ)引擎。
2、數(shù)據(jù)庫(kù)和表的字符集統(tǒng)一使用UTF8
數(shù)據(jù)庫(kù)和表的字符集統(tǒng)一使用utf8,若是有字段需要存儲(chǔ)emoji表情之類的,則將表或字段設(shè)置成utf8mb4;因?yàn)椋瑄tf8號(hào)稱萬(wàn)國(guó)碼,其無(wú)需轉(zhuǎn)碼、無(wú)亂碼風(fēng)險(xiǎn)且節(jié)省空間,而utf8mb4又向下兼容utf8。
3、設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)所有表和字段必須添加注釋
使用Comment從句添加表和列的備注,或直接在數(shù)據(jù)庫(kù)連接工具的注釋欄添加注釋,從項(xiàng)目開始就進(jìn)行數(shù)據(jù)字典的維護(hù)。
使用Comment從句添加注釋如:
-- 1、創(chuàng)建表: