一、 數(shù)據(jù)庫涉及字符規(guī)范
采用 26 個英文字母(區(qū)分大小寫)和 0-9 這十個自然數(shù)刹孔,加上下劃線‘_’組成,
共 63 個字符晾咪。不能出現(xiàn)其他字符(注釋除外)。
注意事項:
- 以上命名都不得超過 30 個字符的系統(tǒng)限制溪食。變量名的長度限制為 29(不
包括標識字符@)。 - 數(shù)據(jù)對象娜扇、變量的命名都采用英文字符错沃,禁止使用中文命名。絕對不要在對
象名的字符之間留空格雀瓢。 - 小心保留詞,要保證你的字段名沒有和保留詞枢析、數(shù)據(jù)庫系統(tǒng)或者常用訪問
方法沖突。 - 保持字段名和類型的一致性致燥,在命名字段并為其指定數(shù)據(jù)類型的時候一
定要保證一致性登疗。假如數(shù)據(jù)類型在一個表里是整數(shù),那在另一個表里可就別變成字
符型了嫌蚤。
二辐益、 數(shù)據(jù)庫命名規(guī)范
數(shù)據(jù)庫名使用小寫英文以及下劃線組成。比如:
my_db
snepr
備份數(shù)據(jù)庫名使用正式庫名加上備份時間組成脱吱,如:
dbname_20070403
三智政、 數(shù)據(jù)庫表命名規(guī)范
數(shù)據(jù)表名使用小寫英文以及下劃線組成
比如:
info_user
system_destination
信息類采用:info_xxx
文件類采用:file_xxx
關(guān)聯(lián)類采用:inter_xxx
備份數(shù)據(jù)表名使用正式表名加上備份時間組成,如:
info_user_20070403
system_destination_20070403
四箱蝠、 字段命名規(guī)范
字段名稱使用單詞組合完成续捂,首字母小寫,后面單詞的首字母大寫,最好是帶
表名前綴宦搬。
如 web_user 表的字段:
user _id
user_name
如果表名過長牙瓢,可以取表名的前 5 個字母。如果表名為多個單詞組合间校,可以
取前一個單詞矾克,外加后續(xù)其它單詞的首字母作為字段名。
表與表之間的相關(guān)聯(lián)字段要用統(tǒng)一名稱憔足,
如 info_user 表里面的 userId 和 group 表里面的 userId 相對應(yīng);
業(yè)務(wù)流水號統(tǒng)一采用:表名_seq;
五胁附、 外鍵命名規(guī)范
外鍵名稱為 FK_表名 A_表名 B_關(guān)聯(lián)字段名;
其中表名和關(guān)聯(lián)字段名如果過長,可以取表名滓彰、關(guān)聯(lián)字段名的前 5 個字母控妻。
如果表名、關(guān)聯(lián)字段為多個單詞組合,可以取前一個單詞,外加后續(xù)其它單詞的
首字母作為字段名揭绑。
如:FK_user_token_user_phnum;
六弓候、 字段類型規(guī)范
規(guī)則:用盡量少的存儲空間來存數(shù)一個字段的數(shù)據(jù).
比如能用 int 的就不用 char 或者 varchar
能用 varchar(20)的就不用 varchar(255)
時間戳字段盡量用 int 型,如 created:表示從’1970-01-01 08:00:00’開始
的 int 秒數(shù),采用英文單詞的過去式;gmtCreated:表示 datetime 類型的時間,
即形如’1980-01-01 00:00:00’的時間串,Java 中對應(yīng)的類型為 Timestamp菇存。
七彰居、 索引使用原則
- 邏輯主鍵使用唯一的成組索引,對系統(tǒng)鍵(作為存儲過程)采用唯一的非成
組索引,對任何外鍵列采用非成組索引撰筷。考慮數(shù)據(jù)庫的空間有多大畦徘,表如何進行訪
問,還有這些訪問是否主要用作讀寫毕籽。 - 大多數(shù)數(shù)據(jù)庫都索引自動創(chuàng)建的主鍵字段,但是可別忘了索引外鍵井辆,它們
也是經(jīng)常使用的鍵关筒,比如運行查詢顯示主表和所有關(guān)聯(lián)表的某條記錄就用得上。 - 不要索引 blob/text 等字段,不要索引大型字段(有很多字符)杯缺,這樣作會讓索引占用太多的存儲空間蒸播。
- 不要索引常用的小型表
不要為小型數(shù)據(jù)表設(shè)置任何鍵,假如它們經(jīng)常有插入和刪除操作就更別這樣
作了。對這些插入和刪除操作的索引維護可能比掃描表空間消耗更多的時間萍肆。
八袍榆、 SQL 語句規(guī)范
所有 sql 關(guān)鍵詞全部大寫,比如 SELECT,UPDATE,FROM,ORDER,BY 等,表名
與字段名不需要大寫
如:
SELECT COUNT(*) FROM cdb_members WHERE userName= ‘a(chǎn)eolus’;