阿里巴巴的 MySQL 建表規范,居然只有10條?
很多公司有很厚一本的MySQL規范,規范內容越多,越難落地執行。
阿里的MySQL建表強制規范只有10條,大伙可以參考借鑒。
畫(huà)外音,另外:
索引強制規范有4條,SQL強制規范有9條;
建議規范與參考規范若干。
規范一:是否字段
1、表達是否概念的字段,必須使用is_xxx的形式命名;
2、數據類(lèi)型必須是 unsigned tinyint;
3、1表示是,0表示否;
舉例:是否刪除
正確:使用is_deleted,1表示刪除,0表示未刪除
錯誤:deleted, if_deleted, delete_or_not
規范二:字母與數字
1、表名,字段名禁止出現大寫(xiě);
畫(huà)外音:MySQL在Windows下不區分大小寫(xiě),Linux下雖然區分,但為了避免節外生枝,統一禁止大寫(xiě)。
2、禁止數字開(kāi)頭,禁止兩個(gè)下劃線(xiàn)中間只有數字;
舉例:
正確:aliyun_admin,level3_name
錯誤:AliyunAdmin,level_3_name
規范三:表名禁止使用復數
表名表示實(shí)體內容,不是實(shí)體數量,禁止使用復數。
規范四:禁止使用保留字
常見(jiàn)的例如:desc,range,match,delayed…
規范五:主鍵,唯一索引,普通索引命名規范
1、主鍵索引名:pk_xxx
畫(huà)外音:primary key
2、唯一索引名:uk_xxx
畫(huà)外音:unique key
3、普通索引名:idx_xxx
畫(huà)外音:index
規范六:小數類(lèi)型規范
1、小數類(lèi)型使用decimal;
2、禁止使用float和double;
畫(huà)外音:float和double存在精度損失,比較的時(shí)候,可能得到意想不到的結果。
3、如果范圍超過(guò)decimal,可以拆成整數與小數分開(kāi)存儲;
規范七:字符串長(cháng)度非常相近,必須使用定長(cháng)char
畫(huà)外音:預先分配存儲空間,不會(huì )觸發(fā)重新分配。
規范八:可變字符串規范
1、如果字符串長(cháng)度較長(cháng),且內容長(cháng)度差異較大,使用varchar;
畫(huà)外音:不預先分配存儲空間,比較節省空間。
2、如果字符串長(cháng)度大部分超過(guò)5000,使用text,獨立出一張表單獨存儲;
畫(huà)外音:避免影響主表其他字段索引效率。
規范九:強制字段
規范十:禁止進(jìn)行物理刪除操作
畫(huà)外音:邏輯操作保留了數據資產(chǎn)的同時(shí),能夠追溯操作行為。