1. 程式人生 > >用漢字命名資料庫欄位名

用漢字命名資料庫欄位名

遙想學士當年,小喬初嫁了,雄姿……,哦,不是小喬初嫁了,是學士初涉資料庫設計,那可真是誠惶誠恐,謹遵前人之古訓:schema、表、檢視、欄位名等等,莫不是用西人之字符集,皆用英文單詞命名。對於用拼音字母簡寫者,鄙視之;用中文字元者,則是畏如洪水猛獸,走而避之。
如今學士老朽了,這思想卻反了叛了:用拼音字母簡寫嘛,此法實不可取,學士仍是避而遠之;不過這對於用中文字元者,學士卻是越來越愛不釋手,身體力行之。
前人古訓,是有歷史淵源的。以前的系統,所支援的字元大凡西人之字符集,能顧及我漢字者實乃鳳毛麟角,故資料庫設計,採用西文字符集,大多人視為天經地義。後unicode興起,大勢之所趨,對漢字的支援,漸為完備。用漢字做資料庫命名設計,多有嘗蟹者。然多數人已有先入之見,仍敬而遠之,而古訓依然口口相傳,很多人奉為圭臬。
學士所用資料庫不算很少:Access、VF、HSQL、MS SQL Server、Oracle、PostgreSQL,以及JDS、Derby等Java DB。在中文OS上,用中文做欄位名皆沒有問題;在英文OS上,學士只試過MS SQL Server、PostgreSQL(當然所有的Java DB皆應能支援中文)。當然,有一些資料庫依然不能正確處理中文字元,但如今這類資料庫已是江河日下,明日黃花了。
如今對於資料庫命名、表命名、檢視、函式、儲存過程的命名,學士依然拘於古訓,採用英文命名,但對於用的最多的欄位名,卻已習慣採用漢字命名了。採用漢字命名欄位,是有幾大好處的。
1) 望文生義:對於國人來說,"使用者名稱"比"user_name"好懂多了;
2) 內外有別:與SQL的英文的關鍵字易於區分開來,如:

    SELECT USER_NAME, USER_AGE, USER_PHONE FROM USERS
對比
    SELECT 使用者名稱, 年齡, 電話號碼 FROM USERS

全採用英文的語句,只有一些能夠用不同顏色區分關鍵字的編輯器才易於區分關鍵字和欄位;而採用漢字的語句則更容易區分二者。這對於短小的SQL語句算不上什麼,可對於幾十上百行的語句,這就明顯了;
3) 程式設計方便:這隻能算半個好處。對於全是英文欄位,在顯示給使用者時,英文欄位還得換成中文來顯示,不如直接用中文欄位方便。當然,對於需要隱藏欄位名時,無論中英文欄位均要如此一番手續,因此說是半個好處;
4) 節省空間:如:"使用者名稱"佔用6個byte,而"user_name"要用9個byte;又如,"直徑下限"佔用8個byte,而"diameter_min"要12個byte。一般用漢字做欄位名,4個漢字足以,而用英文,往往需要更多的byte,雖說如今已是到了用TB來計算的時代了,但節儉也畢竟是美德嘛。
當然,如果內部有硬性的規定,或是你的設計是要給老外用的,那還是用英文的好,因為它畢竟用得廣啊。